當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]一種嵌入式系統(tǒng)升級(jí)的設(shè)計(jì)和實(shí)現(xiàn)

1、引言

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

2、總體系統(tǒng)升級(jí)方案設(shè)計(jì)

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

 


 

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

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

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

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

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

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

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

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

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

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

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

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

3、系統(tǒng)硬件設(shè)計(jì)

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

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

4、系統(tǒng)軟件設(shè)計(jì)

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

4.1 SD卡的初始化

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

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

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

[!--empirenews.page--]
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5、結(jié)語(yǔ)

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

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

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

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

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

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

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

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

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

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

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

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

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

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

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉