《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種嵌入式系統(tǒng)升級的設計和實現(xiàn)
一種嵌入式系統(tǒng)升級的設計和實現(xiàn)
中電網(wǎng)
摘要: 該設計方案以LPC2148為核心,,通過SD卡驅(qū)動、FAT32文件系統(tǒng),、IAP功能和程序跳轉(zhuǎn)實現(xiàn)了系統(tǒng)升級的模塊設計,并用于實際開發(fā)中。該設計增強了系統(tǒng)維護,,縮短了產(chǎn)品的開發(fā)周期,。節(jié)約了大量的人力,、財力,增加了與用戶的交流力度,。與傳統(tǒng)設計相比。在開發(fā)時間,、成本和靈活性等方面都占有優(yōu)勢性,。該設計已經(jīng)調(diào)試成功,并作為一個功能模塊用于某電子產(chǎn)品上,,在產(chǎn)品需要增加新功能和維護系統(tǒng)穩(wěn)定方面起到了巨大的作用,。要注意的是,該程序設計是在Keil下編譯通過的,,生成的HEX文件不能直接放入SD卡中,,因為該文件與通過ISP燒寫Flash的文件不一樣,要作一定的修改,。另外,,該方案不僅能用于系統(tǒng)升級,也能用于為程序補丁和寫入數(shù)據(jù)等,,也可用于ARM9.因此該設計方案具有廣泛的應用前景,。
Abstract:
Key words :

1、引言

隨著信息化,,智能化,,網(wǎng)絡化的發(fā)展,嵌入式系統(tǒng)技術也將獲得廣闊的發(fā)展空間,。嵌入式技術全面展開,,目前已成為通信和消費類產(chǎn)品的共同發(fā)展方向。在通信領域,,數(shù)字技術正在全面取代模擬技術,。在廣播電視領域,美國已開始由模擬電視向數(shù)字電視轉(zhuǎn)變,,歐洲的DVB(數(shù)字電視廣播)技術已在全球大多數(shù)國家推廣,。數(shù)字音頻廣播(DAB)也已進入商品化試播階段。而軟件,、集成電路和新型元器件在產(chǎn)業(yè)發(fā)展中的作用日益重要,。所有上述產(chǎn)品中,都離不開嵌入式系統(tǒng)技術,。象前途無可計量的維納斯計劃生產(chǎn)機頂盒,,核心技術就是采用32位以上芯片級的嵌入式技術。在個人領域中,,嵌入式產(chǎn)品將主要是個人商用,,作為個人移動的數(shù)據(jù)處理和通訊軟件,。本文提出了利用LPC2148SD卡實現(xiàn)嵌入式系統(tǒng)升級的設計方案。

2,、總體系統(tǒng)升級方案設計

廠家生產(chǎn)出產(chǎn)品后,,用戶購買回去使用,當設備出現(xiàn)了系統(tǒng)漏洞或者用戶不滿足現(xiàn)有功能而提出更多需求時,,就要對系統(tǒng)升級或者維護系統(tǒng)功能,。廠家只需將SD卡取回,把更新后的程序放入SD卡中,,然后發(fā)放給用戶,,用戶只需把SD卡插入終端設備。即可達到系統(tǒng)升級的目的,。圖1給出廠商與用戶之間的交流流程圖,。圖2給出整個系統(tǒng)設計流程圖。

 


 

按圖1所示,,廠商與用戶交流過程如下:

(1)廠商將一個類似Boot loader的程序通過ISP方式,,將其下載到Flash中,如圖2所示的位置,。

(2)將升級程序放入SD卡中,,隨產(chǎn)品一起出廠。

(3)用戶拿到SD卡后,,將其插入SD卡槽,,終端設備開始工作。

(4)用戶使用一段時間后,,若出現(xiàn)問題或者需要升級,、維護時.只需將SD卡返回廠家即可。

(5)廠家將升級后的程序放入返回的SD卡中,,再返回給用戶.或者廠家直接再發(fā)放SD卡給用戶,,而無需用戶返回SD卡。

(6)用戶拿到SD卡后,,將其直接插入終端設備卡后,,則可達到升級的目的。

出廠前,,通過ISP編程方式燒入一個類似于Boot loader的程序,。該程序的實現(xiàn)大致分為3個步驟:

(1)SPI模式下的SD卡底層驅(qū)動;

(2)讀出SD卡中的系統(tǒng)程序,,并放入指定的Flash地址段中:

(3)跳轉(zhuǎn)到指定的Flash地址段,,執(zhí)行升級后的系統(tǒng)。

在用戶插入SD卡前,程序不斷判斷SD卡是否插入,。用戶插入SD卡后,,程序首先驅(qū)動SD卡,使其能正常工作,,然后讀取SD卡中的升級程序,,并將其放入指定的Flash地址段中。最后,,跳轉(zhuǎn)到指定段,,開始工作。廠家可根據(jù)需要,,任意安排升級程序放置的位置。

3,、系統(tǒng)硬件設計

核心處理器采用PHILIPS公司的LPC2148,。它是一個支持實時仿真和嵌入式跟蹤的32位ARM7微控制器。帶有32KB和512 KB嵌入的高速Flash存儲器,。128位寬度的存儲器接口和獨特的加速結(jié)構(gòu),,使32位代碼能夠在最大時鐘速率下運行,并帶有SPI總線,。選用該處理器主要考慮其內(nèi)部資源豐富,,無需擴展存儲器和SPI總線,且性能優(yōu)異,,抗干擾能力強,,價格低廉,具有極高的性價比,。

該設計只是產(chǎn)品電路中的一部分,。其硬件電路如圖3所示。LPC2148具有同步,、全雙工串行接口(SPI),,其最大數(shù)據(jù)位頻率為輸入時鐘頻率的1/8,可以設置為主機或從機工作方式,。SD卡是通過SPI總線協(xié)議驅(qū)動的,,數(shù)據(jù)傳輸中。主機總是向從機發(fā)送一個字節(jié)數(shù)據(jù),,而從機也總是向主機發(fā)送一個字節(jié)數(shù)據(jù),。圖3中左邊為LPC2148,右邊為SD卡插槽,。SCKl為串行時鐘,,用于LPC2148與SD卡之間的數(shù)據(jù)傳輸時鐘信號:MISOl是一個單向信號,用于將數(shù)據(jù)從SD卡傳輸至LPC2148;MOSll也是一個單向信號,。用于將數(shù)據(jù)從LPC2148傳輸至SD卡,;SSEL1為選通信號,用于選中SD卡,。圖3中的引腳3和引腳6分別接地,,引腳4接電源,引腳8用于檢測SD卡是否插入,,并可根據(jù)實際要求選定,。SD卡與LPC2148之間通過SPI協(xié)議和SD文件系統(tǒng)的組織形式.才能協(xié)調(diào)通訊。
 

4,、系統(tǒng)軟件設計

系統(tǒng)軟件部分首先通過SPI協(xié)議對SD卡初始化,,然后根據(jù)SD卡的FAF32文件系統(tǒng)組織形式讀取SD卡中的數(shù)據(jù),將讀取數(shù)據(jù)通過IAP方式將其寫入Flash中,,最后用一個跳轉(zhuǎn)程序跳轉(zhuǎn)到該段,,以達到升級的目的。

4.1 SD卡的初始化

SD卡(Secure Digital Memory Card)中文翻譯為安全數(shù)碼卡,,是一種基于半導體快閃記憶器的新一代記憶設備,,它被廣泛地于便攜式裝置上使用,例如數(shù)碼相機,、個人數(shù)碼助理(PDA)和多媒體播放器等,。SD卡由日本松下、東芝及美國SanDisk公司于1999年8月共同開發(fā)研制,。大小猶如一張郵票的SD記憶卡,,重量只有2克,但卻擁有高記憶容量,、快速數(shù)據(jù)傳輸率,、極大的移動靈活性以及很好的安全性。

用戶應用程序通常以文件的形式訪問SD卡,,并以文件的形式存取數(shù)據(jù),;文件系統(tǒng)層是通過調(diào)用SD卡物理層的有關函數(shù)來實現(xiàn)的,所以要想以文件系統(tǒng)的形式訪問SD卡,,則必須先驅(qū)動SD,。SD卡的讀寫操作都是基于命令的,通過向SD卡發(fā)送相應的命令并讀取相應的響應控制SD卡,。在對SD卡讀寫前,,首先要進行初始化操作。這是確保SD卡能在SPI模式下正常讀寫數(shù)據(jù)的前提,。SD卡上電復位后,,默認是SD模式,。為了使SD卡進入SPI模式,必須將CS置低(至少延遲74個時鐘)并通過SPI總線發(fā)送CMDn,,使SD卡復位,,同時激活,并進行內(nèi)部初始化處理,,使SD卡退出空閑狀態(tài),。

SD卡初始化流程圖如圖4所示。


 

SD卡中SPI模塊的讀操作包括讀單塊和讀多塊兩種,。該系統(tǒng)僅實現(xiàn)了讀單塊功能,。初始化的長度為512字節(jié)。函數(shù)的實現(xiàn)分為4個步驟:①LPC2148向SD卡發(fā)送讀單塊命令(CMD17),,SD卡響應(Rl格式),;②等待SD卡發(fā)送讀起始令牌;③判斷收到的令牌是否為0xFE,;④從SD卡中讀取數(shù)據(jù),。

4.2 SD卡文件系統(tǒng)

SD卡完成底層驅(qū)動后,可按照FAT32文件系統(tǒng)格式對SD卡上的數(shù)據(jù)進行操作,,進而在SD卡上實現(xiàn)讀寫文件等操作,。FAT32文件系統(tǒng)是微軟FAT類文件系統(tǒng)中的最高版本.是現(xiàn)今Windows下最常用的硬盤文件系統(tǒng),。

當讀取SD卡中的文件時,,首先要根據(jù)文件名查找該文件的信息結(jié)構(gòu)體。根據(jù)文件信息結(jié)構(gòu)體中的起始簇號即可找到數(shù)據(jù)區(qū)第1簇的內(nèi)容,,也可在FAT表中找到第2個簇號,。根據(jù)第2個簇號又能找到第2簇的內(nèi)容和FAT表中的第3個簇號,直至遇到文件結(jié)束標志,。這樣,,就可根據(jù)FAT表中的簇號讀取到全部文件數(shù)據(jù)。以圖5為例,,說明讀取SD卡文件的具體步驟:

(1)先在目錄項表中找到與文件名匹配的,,如“Mvfile”,從“Myfile”所對應的目錄項中可以讀到該文件的首簇號0004:

(2)根據(jù)首簇號0004訪問FAT表,,讀出首簇號對應的FAT表項內(nèi)容0005,,即第2個簇號。根據(jù)第2個簇號再訪問FAT表,,讀出其對應的FAT表內(nèi)容,,即第3個簇號0006…等。依次做下去,,直到最后一個表項內(nèi)容為FFFF為止,;

(3)由第(2)步可知,“Myfile"這個文件占用了4個簇,這4個簇號形成一個簇鏈000dH一0005H一0006H一0008H,,根據(jù)這些簇號所形成的簇鏈訪問這4個簇號對應的4個數(shù)據(jù)存儲區(qū)域.文件“Myfile”就分成4個部分分別存放在這4個存儲區(qū)域中161,。
 

4.3 IAP功能的實現(xiàn)

IAP:In Application Programming 是指在應用編程,即在程序運行中編程,,就是片子提供一系列的機制(硬件/軟件上的)當片子在運行程序的時候可以提供一種改變flash數(shù)據(jù)的方法,。通俗點講,也就是說程序自己可以往程序存儲器里寫數(shù)據(jù)或修改程序,。這種方式的典型應用就是用一小段代碼來實現(xiàn)程序的下載,,實際上單片機的ISP功能就是通過IAP技術來實現(xiàn)的,即片子在出廠前就已經(jīng)有一段小的boot程序在里面,,片子上電后,,開始運行這段程序,當檢測到上位機有下載要求時,,便和上位機通信,,然后下載數(shù)據(jù)到存儲區(qū)。

LPC2148支持多種方式對Flash進行編程,,用來寫入用戶代碼或數(shù)據(jù),。第一種方式是通過內(nèi)置的串行JTAG接口進行編程:第二種方式是通過UART0進行在系統(tǒng)編程(ISP);第三種方式是通過在應用編程(IAP),。IAP程序是thumb代碼,,地址為0x7FFFFFF0。在使用IAP擦除,、編程操作過程中,,片內(nèi)Flash存儲器不可訪問。當用戶運行應用程序時,,用戶Flash區(qū)域的中斷向量有效.所以在調(diào)用Flash擦除,、寫IAP之前,用戶應當禁止中斷,,確保用戶中斷向量在RAM中有效和中斷處理程序位于RAM中,。IAP代碼不使用或禁止中斷??蓪D卡讀出的數(shù)據(jù)用C代碼燒入指定的Flash段中:

4.4 程序?qū)崿F(xiàn)跳轉(zhuǎn)到任意行代碼段執(zhí)行

現(xiàn)以下例來說明這段程序,,如果程序跳轉(zhuǎn)到絕對地址為0xFFFF0執(zhí)行,代碼如下:

typedef void(*run)(),;//定義一個無參數(shù),,無返回類型的函數(shù)指針類型

run address=(run)0xFFFFO;//定義一個函數(shù)指針,指向跳轉(zhuǎn)的位置

address()://調(diào)用函數(shù)

在上述應用程序中,,根本沒有看到任何一個函數(shù)實體,,但是卻執(zhí)行了函數(shù)調(diào)用,;實際上它起到了"軟重肩"的作用,跳轉(zhuǎn)到CPU啟動后第一條要執(zhí)行的指令位置,,即實現(xiàn)了程序的跳轉(zhuǎn),。

5、結(jié)語

該設計方案以LPC2148為核心,,通過SD卡驅(qū)動,、FAT32文件系統(tǒng)、IAP功能和程序跳轉(zhuǎn)實現(xiàn)了系統(tǒng)升級的模塊設計,,并用于實際開發(fā)中,。該設計增強了系統(tǒng)維護,縮短了產(chǎn)品的開發(fā)周期,。節(jié)約了大量的人力,、財力,增加了與用戶的交流力度,。與傳統(tǒng)設計相比,。在開發(fā)時間、成本和靈活性等方面都占有優(yōu)勢性,。該設計已經(jīng)調(diào)試成功,,并作為一個功能模塊用于某電子產(chǎn)品上,在產(chǎn)品需要增加新功能和維護系統(tǒng)穩(wěn)定方面起到了巨大的作用,。要注意的是,,該程序設計是在Keil下編譯通過的,生成的HEX文件不能直接放入SD卡中,,因為該文件與通過ISP燒寫Flash的文件不一樣,,要作一定的修改,。另外,,該方案不僅能用于系統(tǒng)升級,也能用于為程序補丁和寫入數(shù)據(jù)等,,也可用于ARM9.因此該設計方案具有廣泛的應用前景,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載,。