當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]基于LPC2148的SD卡實現嵌入式系統(tǒng)升級設計

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


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

    按圖1所示,廠商與用戶交流過程如下:
    (1)廠商將一個類似Boot loader的程序通過ISP方式,將其下載到Flash中,如圖2所示的位置。
    (2)將升級程序放入SD卡中,隨產品一起出廠。
    (3)用戶拿到SD卡后,將其插入SD卡槽,終端設備開始工作。
    (4)用戶使用一段時間后,若出現問題或者需要升級、維護時.只需將SD卡返回廠家即可。
    (5)廠家將升級后的程序放入返回的SD卡中,再返回給用戶.或者廠家直接再發(fā)放SD卡給用戶,而無需用戶返回SD卡。
    (6)用戶拿到SD卡后,將其直接插入終端設備卡后,則可達到升級的目的。
    出廠前,通過ISP編程方式燒入一個類似于Boot loader的程序。該程序的實現大致分為3個步驟:
    (1)SPI模式下的SD卡底層驅動;
    (2)讀出SD卡中的系統(tǒng)程序,并放入指定的Flash地址段中:
    (3)跳轉到指定的Flash地址段,執(zhí)行升級后的系統(tǒng)。
    在用戶插入SD卡前,程序不斷判斷SD卡是否插入。用戶插入SD卡后,程序首先驅動SD卡,使其能正常工作,然后讀取SD卡中的升級程序,并將其放入指定的Flash地址段中。最后,跳轉到指定段,開始工作。廠家可根據需要,任意安排升級程序放置的位置。


3 系統(tǒng)硬件設計
   
核心處理器采用PHILIPS公司的LPC2148。它是一個支持實時仿真和嵌入式跟蹤的32位ARM7微控制器。帶有32KB和512 KB嵌入的高速Flash存儲器。128位寬度的存儲器接口和獨特的加速結構,使32位代碼能夠在最大時鐘速率下運行,并帶有SPI總線。選用該處理器主要考慮其內部資源豐富,無需擴展存儲器和SPI總線,且性能優(yōu)異,抗干擾能力強,價格低廉,具有極高的性價比。
    該設計只是產品電路中的一部分。其硬件電路如圖3所示。LPC2148具有同步、全雙工串行接口(SPI),其最大數據位頻率為輸入時鐘頻率的1/8,可以設置為主機或從機工作方式。SD卡是通過SPI總線協議驅動的,數據傳輸中。主機總是向從機發(fā)送一個字節(jié)數據,而從機也總是向主機發(fā)送一個字節(jié)數據。圖3中左邊為LPC2148,右邊為SD卡插槽。SCKl為串行時鐘,用于LPC2148與SD卡之間的數據傳輸時鐘信號:MISOl是一個單向信號,用于將數據從SD卡傳輸至LPC2148;MOSll也是一個單向信號。用于將數據從LPC2148傳輸至SD卡;SSEL1為選通信號,用于選中SD卡。圖3中的引腳3和引腳6分別接地,引腳4接電源,引腳8用于檢測SD卡是否插入,并可根據實際要求選定。SD卡與LPC2148之間通過SPI協議和SD文件系統(tǒng)的組織形式.才能協調通訊。

4 系統(tǒng)軟件設計
   
系統(tǒng)軟件部分首先通過SPI協議對SD卡初始化,然后根據SD卡的FAF32文件系統(tǒng)組織形式讀取SD卡中的數據,將讀取數據通過IAP方式將其寫入Flash中,最后用一個跳轉程序跳轉到該段,以達到升級的目的。
4.1 SD卡的初始化
   
用戶應用程序通常以文件的形式訪問SD卡,并以文件的形式存取數據;文件系統(tǒng)層是通過調用SD卡物理層的有關函數來實現的,所以要想以文件系統(tǒng)的形式訪問SD卡,則必須先驅動SD。SD卡的讀寫操作都是基于命令的,通過向SD卡發(fā)送相應的命令并讀取相應的響應控制SD卡。在對SD卡讀寫前,首先要進行初始化操作。這是確保SD卡能在SPI模式下正常讀寫數據的前提。SD卡上電復位后,默認是SD模式。為了使SD卡進入SPI模式,必須將CS置低(至少延遲74個時鐘)并通過SPI總線發(fā)送CMDn,使SD卡復位,同時激活,并進行內部初始化處理,使SD卡退出空閑狀態(tài)。
    SD卡初始化流程圖如圖4所示。

    SD卡中SPI模塊的讀操作包括讀單塊和讀多塊兩種。該系統(tǒng)僅實現了讀單塊功能。初始化的長度為512字節(jié)。函數的實現分為4個步驟:①LPC2148向SD卡發(fā)送讀單塊命令(CMD17),SD卡響應(Rl格式);②等待SD卡發(fā)送讀起始令牌;③判斷收到的令牌是否為0xFE;④從SD卡中讀取數據。
4.2 SD卡文件系統(tǒng)
    SD卡完成底層驅動后,可按照FAT32文件系統(tǒng)格式對SD卡上的數據進行操作,進而在SD卡上實現讀寫文件等操作。FAT32文件系統(tǒng)是微軟FAT類文件系統(tǒng)中的最高版本.是現今Windows下最常用的硬盤文件系統(tǒng)。
    當讀取SD卡中的文件時,首先要根據文件名查找該文件的信息結構體。根據文件信息結構體中的起始簇號即可找到數據區(qū)第1簇的內容,也可在FAT表中找到第2個簇號。根據第2個簇號又能找到第2簇的內容和FAT表中的第3個簇號,直至遇到文件結束標志。這樣,就可根據FAT表中的簇號讀取到全部文件數據。以圖5為例,說明讀取SD卡文件的具體步驟:

    (1)先在目錄項表中找到與文件名匹配的,如“Mvfile”,從“Myfile”所對應的目錄項中可以讀到該文件的首簇號0004:
    (2)根據首簇號0004訪問FAT表,讀出首簇號對應的FAT表項內容0005,即第2個簇號。根據第2個簇號再訪問FAT表,讀出其對應的FAT表內容,即第3個簇號0006…等。依次做下去,直到最后一個表項內容為FFFF為止;
    (3)由第(2)步可知,“Myfile"這個文件占用了4個簇,這4個簇號形成一個簇鏈000dH一0005H一0006H一0008H,根據這些簇號所形成的簇鏈訪問這4個簇號對應的4個數據存儲區(qū)域.文件“Myfile”就分成4個部分分別存放在這4個存儲區(qū)域中161。
4.3 IAP功能的實現
    LPC2148支持多種方式對Flash進行編程,用來寫入用戶代碼或數據。第一種方式是通過內置的串行JTAG接口進行編程:第二種方式是通過UART0進行在系統(tǒng)編程(ISP);第三種方式是通過在應用編程(IAP)。IAP程序是thumb代碼,地址為0x7FFFFFF0。在使用IAP擦除、編程操作過程中,片內Flash存儲器不可訪問。當用戶運行應用程序時,用戶Flash區(qū)域的中斷向量有效.所以在調用Flash擦除、寫IAP之前,用戶應當禁止中斷,確保用戶中斷向量在RAM中有效和中斷處理程序位于RAM中。IAP代碼不使用或禁止中斷??蓪D卡讀出的數據用C代碼燒入指定的Flash段中:


4.4 程序實現跳轉到任意行代碼段執(zhí)行
    現以下例來說明這段程序,如果程序跳轉到絕對地址為0xFFFF0執(zhí)行,代碼如下:
    typedef void(*run)();//定義一個無參數,無返回類型的函數指針類型
    run address=(run)0xFFFFO;//定義一個函數指針,指向跳轉的位置
    address()://調用函數
    在上述應用程序中,根本沒有看到任何一個函數實體,但是卻執(zhí)行了函數調用;實際上它起到了“軟重肩”的作用,跳轉到CPU啟動后第一條要執(zhí)行的指令位置,即實現了程序的跳轉。


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

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉