李淑娟 鄭昌濤
摘 要:嵌入式軟件在線升級(jí)是指不重啟計(jì)算機(jī)而完成的軟件升級(jí)工作,文中通過(guò)儀表的SD卡更新嵌入式軟件,不需要拆裝儀表,由于軟件本身不包含可擦寫(xiě)的FLASH代碼,不影響燒錄過(guò)程,具備較高的可靠性和安全性。
關(guān)鍵詞:SD卡;嵌入式;在線升級(jí);計(jì)算機(jī);軟件;FLASH代碼
中圖分類(lèi)號(hào):TP274文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-1302(2019)03-0-02
0 引 言
隨著電子通信技術(shù)、計(jì)算機(jī)技術(shù)的迅速發(fā)展,嵌入式產(chǎn)品被廣泛應(yīng)用到醫(yī)療、工控、辦公、商用等各個(gè)領(lǐng)域。新技術(shù)的不斷涌現(xiàn)及對(duì)系統(tǒng)性能規(guī)模的不斷提高,要求開(kāi)發(fā)者為應(yīng)對(duì)各種需求及時(shí)對(duì)智能儀器儀表系統(tǒng)進(jìn)行維護(hù)或升級(jí),以延長(zhǎng)系統(tǒng)的使用周期。嵌入式軟件是智能儀器儀表的軟件主體,隨著智能儀表的多功能化,通過(guò)升級(jí)嵌入式軟件改進(jìn)或增加功能變得普遍,升級(jí)嵌入式軟件就必須對(duì)存儲(chǔ)嵌入式軟件的FLASH進(jìn)行擦除,再重新寫(xiě)入新的軟件[1-3]。
1 嵌入式軟件的特點(diǎn)及關(guān)鍵技術(shù)
嵌入式軟件即嵌入在硬件中的操作系統(tǒng)和開(kāi)發(fā)工具軟件,嵌入式軟件廣泛應(yīng)用于國(guó)防、工控、家用、醫(yī)療等領(lǐng)域,如我們常見(jiàn)的移動(dòng)電話(huà)、數(shù)碼相機(jī)、機(jī)頂盒等都是嵌入式軟件對(duì)傳統(tǒng)產(chǎn)品進(jìn)行智能化改造的結(jié)果。嵌入式軟件可分為嵌入式操作系統(tǒng)、嵌入式支撐軟件及嵌入式應(yīng)用軟件,其具有獨(dú)特的實(shí)用性、靈活的適用性等特點(diǎn)。嵌入式軟件與嵌入式硬件資源關(guān)系密切,涉及相應(yīng)的關(guān)鍵技術(shù)也較多,主要包括數(shù)字電路、微控制器及傳感器燈硬件技術(shù),還包含Canvas繪圖功能、HTML5、移動(dòng)定位等軟件技術(shù)。總體而言,嵌入式軟件可與智能終端、傳感器、數(shù)據(jù)相結(jié)合,利用嵌入式軟件處理視頻、音頻、文字等相關(guān)內(nèi)容,為各領(lǐng)域的信息化服務(wù)提供支撐,實(shí)現(xiàn)其強(qiáng)大的數(shù)據(jù)共享等服務(wù)功能[4]。
2 嵌入式軟件在線升級(jí)技術(shù)的系統(tǒng)構(gòu)架
嵌入式軟件在線升級(jí)是指不重啟硬件設(shè)備而完成的軟件升級(jí)。嵌入式軟件在線升級(jí)是提高系統(tǒng)可靠性的有效途徑,有利于維持嵌入式系統(tǒng)平臺(tái)的穩(wěn)定性。本文研究的重點(diǎn)是提供一種無(wú)需拆裝儀表,不需要特殊工具和軟件,通過(guò)儀表的SD卡更新嵌入式軟件的在線嵌入式軟件升級(jí)技術(shù)。所述的微處理器采用STM32F429BIT6芯片,RAM使用IS42S16160C-7TLI的SDRAM存儲(chǔ)器,F(xiàn)LASH使用STM32F429BIT6集成的具有IAP功能的FLASH存儲(chǔ)器,SD控制器使用STM32F429BIT6集成的SD控制器模塊,SD卡接口為標(biāo)準(zhǔn)的SD卡連接器,SD卡為標(biāo)準(zhǔn)的SD卡[5-6]。嵌入式軟件在線升級(jí)技術(shù)的系統(tǒng)框圖如圖1所示。
該系統(tǒng)包括集成CPU,F(xiàn)LASH,SD卡控制器的微處理器,SDRAM存儲(chǔ)器,SD卡連接器及SD卡。微處理器與SDRAM通過(guò)并行總線連接,與SD卡通過(guò)SD卡連接器連接,并使用內(nèi)部的SD控制器進(jìn)行通信。
在更新嵌入式軟件時(shí),裝置上啟動(dòng)更新,更新程序從SD卡中讀取引導(dǎo)程序和新程序文件到SDRAM中,CPU跳轉(zhuǎn)執(zhí)行SDRAM中的引導(dǎo)程序,引導(dǎo)程序包含了擦除FLASH和寫(xiě)入FLASH的代碼,通過(guò)這種方式,擦除FLASH和寫(xiě)入FLASH的代碼不會(huì)出現(xiàn)在正常運(yùn)行的嵌入式軟件中,可避免因程序跑飛引起誤擦除或誤寫(xiě)入的情況,然后引導(dǎo)程序會(huì)將新程序文件寫(xiě)入到FLASH中,新程序文件寫(xiě)入完成后,儀表將運(yùn)行更新后的嵌入式軟件,嵌入式軟件更新完成[7-8]。
3 SD卡的系統(tǒng)軟件設(shè)計(jì)
3.1 SD卡的底層驅(qū)動(dòng)程序設(shè)計(jì)
SD卡(Secure Digital Memory Card,SD)是一種基于半導(dǎo)體快閃記憶器的新記憶設(shè)備,由于在體積、重量、傳輸速率、穩(wěn)定性、價(jià)格等方面有眾多優(yōu)勢(shì),因此被廣泛地用于便攜式裝置上,如多媒體播放器、數(shù)碼相機(jī)及AV器材等。SD卡技術(shù)是基于FLASH的存儲(chǔ)卡,通過(guò)接口界面與驅(qū)動(dòng)器相連,不需要外接電源來(lái)維持記憶信息;同時(shí)也是一體化的固態(tài)介質(zhì),功能穩(wěn)定,不會(huì)造成機(jī)械性損壞[9]。
SD卡驅(qū)動(dòng)程序的主要步驟為SD卡的初始化,向SD卡發(fā)送命令函數(shù),獲得響應(yīng)的接口函數(shù)。SD卡的初始化是指用戶(hù)應(yīng)用程序以文件的形式訪問(wèn)和讀取SD卡上的數(shù)據(jù);SD卡本身只是一種數(shù)據(jù)介質(zhì),不包含文件系統(tǒng),因此要想以文件系統(tǒng)的形式訪問(wèn)SD卡,必須先驅(qū)動(dòng)SD卡,通過(guò)調(diào)用SD卡物理層的有關(guān)函數(shù)來(lái)實(shí)現(xiàn)驅(qū)動(dòng)。驅(qū)動(dòng)SD卡主要實(shí)現(xiàn)扇區(qū)的讀寫(xiě)、獲取SD卡的相關(guān)配置信息等。SD卡的讀寫(xiě)操作都是基于命令的,通過(guò)向SD卡發(fā)送相應(yīng)的命令,獲得相應(yīng)的接口函數(shù)控制SD卡。通過(guò)這些基本的底層驅(qū)動(dòng)接口程序,配合相應(yīng)的命令,可完成SD卡的驅(qū)動(dòng)操作[10]。
3.2 SD卡的FAT32文件系統(tǒng)設(shè)計(jì)
為了對(duì)數(shù)據(jù)的寫(xiě)入進(jìn)行有效地管理,能夠在SD卡的PC端被訪問(wèn),在SD卡完成底層驅(qū)動(dòng)后,可按照FAT32文件系統(tǒng)格式對(duì)數(shù)據(jù)進(jìn)行操作,進(jìn)而在SD卡上實(shí)現(xiàn)讀寫(xiě)文件等操作。FAT32文件系統(tǒng)是目前微軟FAT類(lèi)文件系統(tǒng)中的最高版本,采用了32位的文件分配表,可提高利用率,是現(xiàn)今Windows下常用的硬盤(pán)文件系統(tǒng)。FAT32文件系統(tǒng)設(shè)計(jì)包括以下步驟:程序的初始化、初始化內(nèi)存、載入SD卡、打開(kāi)文件夾、讀寫(xiě)文件等操作[11]。
3.3 軟件升級(jí)功能的實(shí)現(xiàn)
在線更新嵌入式軟件的流程如圖2所示。軟件部分首先通過(guò)SPI協(xié)議對(duì)SD卡進(jìn)行初始化,完成SD卡的底層驅(qū)動(dòng)程序設(shè)計(jì),再根據(jù)FAT32文件系統(tǒng)組織形式對(duì)SD卡中的數(shù)據(jù)進(jìn)行讀取或更新,將讀取到的數(shù)據(jù)通過(guò)IAP方式寫(xiě)入FLASH中,新程序文件寫(xiě)入完成后,用程序?qū)崿F(xiàn)跳轉(zhuǎn)到指定代碼段執(zhí)行,儀表將運(yùn)行更新后的嵌入式軟件。
4 結(jié) 語(yǔ)
嵌入式系統(tǒng)是當(dāng)前最有發(fā)展前景的IT應(yīng)用領(lǐng)域之一,傳統(tǒng)的嵌入式系統(tǒng)軟件升級(jí)方式耗時(shí)長(zhǎng)、成本高。本文的研究可妥善解決這一問(wèn)題,同時(shí)還能解決一些問(wèn)題:不需要拆裝儀表,避免二次損壞;嵌入式軟件本身不包含擦寫(xiě)FLASH的代碼,保證FLASH不會(huì)被誤擦寫(xiě),具備較高的安全性;程序預(yù)先載入到RAM,即使升級(jí)過(guò)程中發(fā)生SD卡損壞、拔除等異常事件,也不會(huì)影響燒錄過(guò)程,具備較高的可靠性。
參 考 文 獻(xiàn)
[1]孔凡鵬,付友濤.基于NIOS Ⅱ的SD卡讀寫(xiě)控制設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013(13):115-118.
[2]肖敏,劉宇紅.SD卡硬件加密在工業(yè)MP3中的實(shí)現(xiàn)[J].通信技術(shù),2012(11):38-40.
[3]李敏,侯亞玲,劉穎. 基于SD卡的FAT32文件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2017,7(7):102-104.
[4]劉赟.嵌入式軟件在線升級(jí)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2015,23(4):1425-1427.
[5]劉海,朱紅.基于LPC2148的SD卡實(shí)現(xiàn)嵌入式系統(tǒng)升級(jí)設(shè)計(jì)[J]. 電子設(shè)計(jì)工程,2008,16(10):27-29.
[6]茅勝榮,肖家文,喬?hào)|海.用SD卡定制嵌入式Linux系統(tǒng)的最小系統(tǒng)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2017(10):28-32.
[7]田超. 基于ARM嵌入式系統(tǒng)上的SD卡驅(qū)動(dòng)程序及文件系統(tǒng)的研究和開(kāi)發(fā)[D].北京:北京郵電大學(xué),2013.
[8]關(guān)峰,謝曉明.嵌入式設(shè)備軟件更新系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)試,2013(10x):11-12.
[9]劉振東.基于ARM的嵌入式軟硬件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].信息記錄材料,2018(4):105-106.
[10]楊明東.嵌入式軟件開(kāi)發(fā)模式與軟件架構(gòu)探究[J].無(wú)線互聯(lián)科技,2018(7):59-60.
[11]陳駿勰.嵌入式系統(tǒng)軟件自動(dòng)生成方法研究[J].軟件導(dǎo)刊,2017(12):40-43.