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