<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于LPC2148的SD卡實(shí)現嵌入式系統升級

基于LPC2148的SD卡實(shí)現嵌入式系統升級

作者: 時(shí)間:2009-02-19 來(lái)源:網(wǎng)絡(luò ) 收藏

1、引言

  隨著(zhù)現代工業(yè)社會(huì )逐步向智能化社會(huì )的過(guò)渡,嵌入式在現代經(jīng)濟生活中扮演著(zhù)重要的角色。為了做出好的產(chǎn)品,必須與用戶(hù)形成互動(dòng),利用用戶(hù)的反饋信息不斷完善產(chǎn)品。另外,產(chǎn)品在長(cháng)時(shí)間使用中,會(huì )慢慢出現終端程序設計上的缺陷,這就要求對終端系統設備的內核、文件進(jìn)行或者對設備進(jìn)行功能維護。如果對幾百個(gè)終端進(jìn)行現場(chǎng)ISP升級,或通過(guò)JTAG口、串口實(shí)現升級,不僅浪費大量的人力、財力,更重要的是浪費了寶貴的時(shí)間,延誤了開(kāi)拓市場(chǎng)的機遇,降低了用戶(hù)對產(chǎn)品的信譽(yù)度。為了解決這些問(wèn)題,提出了利用LPC2148的SD卡實(shí)現嵌入式的設計方案。

2、總體方案設計

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


  按圖1所示,廠(chǎng)商與用戶(hù)交流過(guò)程如下:

  (1)廠(chǎng)商將一個(gè)類(lèi)似Boot loader的程序通過(guò)ISP方式,將其下載到Flash中,如圖2所示的位置。

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

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

  (4)用戶(hù)使用一段時(shí)間后,若出現問(wèn)題或者需要升級、維護時(shí).只需將SD卡返回廠(chǎng)家即可。

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

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

  出廠(chǎng)前,通過(guò)ISP編程方式燒入一個(gè)類(lèi)似于Boot loader的程序。該程序的實(shí)現大致分為3個(gè)步驟:

  (1)SPI模式下的SD卡底層驅動(dòng);

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

  (3)跳轉到指定的Flash地址段,執行升級后的系統。

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

3、系統硬件設計

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

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


4、系統軟件設計


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

4.1 SD卡的初始化

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

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


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

4.2 SD卡文件系統

  SD卡完成底層驅動(dòng)后,可按照FAT32文件系統格式對SD卡上的數據進(jìn)行操作,進(jìn)而在SD卡上實(shí)現讀寫(xiě)文件等操作。FAT32文件系統是微軟FAT類(lèi)文件系統中的最高版本.是現今Windows下最常用的硬盤(pán)文件系統。

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

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

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

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


4.3 IAP功能的實(shí)現

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


4.4 程序實(shí)現跳轉到任意行代碼段執行

  現以下例來(lái)說(shuō)明這段程序,如果程序跳轉到絕對地址為0xFFFF0執行,代碼如下:

  typedef void(*run)();//定義一個(gè)無(wú)參數,無(wú)返回類(lèi)型的函數指針類(lèi)型

  run address=(run)0xFFFFO;//定義一個(gè)函數指針,指向跳轉的位置

  address()://調用函數

  在上述應用程序中,根本沒(méi)有看到任何一個(gè)函數實(shí)體,但是卻執行了函數調用;實(shí)際上它起到了“軟重肩”的作用,跳轉到CPU啟動(dòng)后第一條要執行的指令位置,即實(shí)現了程序的跳轉。

5、結語(yǔ)

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>