基于 SD 卡的嵌入式軟件在線升級(jí)系統(tǒng)研究
引 言
隨著電子通信技術(shù)、計(jì)算機(jī)技術(shù)的迅速發(fā)展,嵌入式產(chǎn)品被廣泛應(yīng)用到醫(yī)療、工控、辦公、商用等各個(gè)領(lǐng)域。新技術(shù)的不斷涌現(xiàn)及對系統(tǒng)性能規(guī)模的不斷提高,要求開發(fā)者為應(yīng)對各種需求及時(shí)對智能儀器儀表系統(tǒng)進(jìn)行維護(hù)或升級(jí),以延長系統(tǒng)的使用周期。嵌入式軟件是智能儀器儀表的軟件主體,隨著智能儀表的多功能化,通過升級(jí)嵌入式軟件改進(jìn)或增加功能變得普遍,升級(jí)嵌入式軟件就必須對存儲(chǔ)嵌入式軟件的 FLASH 進(jìn)行擦除,再重新寫入新的軟件 [1-3]。
1 嵌入式軟件的特點(diǎn)及關(guān)鍵技術(shù)
嵌入式軟件即嵌入在硬件中的操作系統(tǒng)和開發(fā)工具軟件,嵌入式軟件廣泛應(yīng)用于國防、工控、家用、醫(yī)療等領(lǐng)域, 如我們常見的移動(dòng)電話、數(shù)碼相機(jī)、機(jī)頂盒等都是嵌入式軟件對傳統(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)是提供一種無需拆裝儀表,不需要特殊工具和軟件,通過儀表的 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 所示。
圖 1 嵌入式軟件在線升級(jí)技術(shù)的系統(tǒng)框圖
該系統(tǒng)包括集成 CPU,F(xiàn)LASH,SD 卡控制器的微處理器,SDRAM 存儲(chǔ)器,SD 卡連接器及 SD 卡。微處理器與SDRAM 通過并行總線連接,與 SD 卡通過 SD 卡連接器連接, 并使用內(nèi)部的 SD 控制器進(jìn)行通信。
在更新嵌入式軟件時(shí),裝置上啟動(dòng)更新,更新程序從SD 卡中讀取引導(dǎo)程序和新程序文件到 SDRAM 中,CPU 跳轉(zhuǎn)執(zhí)行 SDRAM 中的引導(dǎo)程序,引導(dǎo)程序包含了擦除 FLASH 和寫入 FLASH 的代碼,通過這種方式,擦除 FLASH 和寫入 FLASH 的代碼不會(huì)出現(xiàn)在正常運(yùn)行的嵌入式軟件中,可避免因程序跑飛引起誤擦除或誤寫入的情況,然后引導(dǎo)程序會(huì)將新程序文件寫入到 FLASH 中, 新程序文件寫入完成后,儀表將運(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ù)碼相機(jī)及 AV器材等。SD 卡技術(shù)是基于 FLASH的存儲(chǔ)卡,通過接口界面與驅(qū)動(dòng)器相連,不需要外接電源來維持記憶信息 ;同時(shí)也是一體化的固態(tài)介質(zhì),功能穩(wěn)定,不會(huì)造成機(jī)械性損壞 [9]。
SD卡驅(qū)動(dòng)程序的主要步驟為 SD卡的初始化,向 SD卡發(fā)送命令函數(shù),獲得響應(yīng)的接口函數(shù)。SD 卡的初始化是指用戶應(yīng)用程序以文件的形式訪問和讀取 SD卡上的數(shù)據(jù) ;SD 卡本身只是一種數(shù)據(jù)介質(zhì),不包含文件系統(tǒng),因此要想以文件系統(tǒng)的形式訪問 SD卡,必須先驅(qū)動(dòng) SD卡,通過調(diào)用 SD 卡物理層的有關(guān)函數(shù)來實(shí)現(xiàn)驅(qū)動(dòng)。驅(qū)動(dòng) SD卡主要實(shí)現(xiàn)扇區(qū)的讀寫、獲取 SD卡的相關(guān)配置信息等。SD卡的讀寫操作都是基于命令的,通過向 SD卡發(fā)送相應(yīng)的命令,獲得相應(yīng)的接口函數(shù)控制 SD 卡。通過這些基本的底層驅(qū)動(dòng)接口程序, 配合相應(yīng)的命令,可完成 SD卡的驅(qū)動(dòng)操作 [10]。
3.2 SD卡的 FAT32文件系統(tǒng)設(shè)計(jì)
為了對數(shù)據(jù)的寫入進(jìn)行有效地管理,能夠在 SD 卡的 PC 端被訪問,在 SD 卡完成底層驅(qū)動(dòng)后,可按照 FAT32 文件系統(tǒng)格式對數(shù)據(jù)進(jìn)行操作,進(jìn)而在 SD 卡上實(shí)現(xiàn)讀寫文件等操作。FAT32 文件系統(tǒng)是目前微軟 FAT 類文件系統(tǒng)中的最高版本,采用了 32 位的文件分配表,可提高利用率,是現(xiàn)今Windows 下常用的硬盤文件系統(tǒng)。FAT32 文件系統(tǒng)設(shè)計(jì)包括以下步驟 :程序的初始化、初始化內(nèi)存、載入 SD 卡、打開文件夾、讀寫文件等操作 [11]。
3.3 軟件升級(jí)功能的實(shí)現(xiàn)
在線更新嵌入式軟件的流程如圖 2 所示。軟件部分首先通過 SPI 協(xié)議對 SD 卡進(jìn)行初始化,完成 SD 卡的底層驅(qū)動(dòng)程序設(shè)計(jì),再根據(jù) FAT32 文件系統(tǒng)組織形式對 SD 卡中的數(shù)據(jù)進(jìn)行讀取或更新,將讀取到的數(shù)據(jù)通過 IAP 方式寫入FLASH 中,新程序文件寫入完成后,用程序?qū)崿F(xiàn)跳轉(zhuǎn)到指定代碼段執(zhí)行,儀表將運(yùn)行更新后的嵌入式軟件。
4 結(jié) 語
嵌入式系統(tǒng)是當(dāng)前最有發(fā)展前景的 IT 應(yīng)用領(lǐng)域之一, 傳統(tǒng)的嵌入式系統(tǒng)軟件升級(jí)方式耗時(shí)長、成本高。本文的研究可妥善解決這一問題,同時(shí)還能解決一些問題 :不需要拆裝儀表,避免二次損壞 ;嵌入式軟件本身不包含擦寫 FLASH 的代碼,保證 FLASH 不會(huì)被誤擦寫,具備較高的安全性 ;程序預(yù)先載入到 RAM,即使升級(jí)過程中發(fā)生 SD 卡損壞、拔除等異常事件,也不會(huì)影響燒錄過程,具備較高的可靠性。