引 言
隨著電子通信技術、計算機技術的迅速發(fā)展,嵌入式產品被廣泛應用到醫(yī)療、工控、辦公、商用等各個領域。新技術的不斷涌現及對系統性能規(guī)模的不斷提高,要求開發(fā)者為應對各種需求及時對智能儀器儀表系統進行維護或升級,以延長系統的使用周期。嵌入式軟件是智能儀器儀表的軟件主體,隨著智能儀表的多功能化,通過升級嵌入式軟件改進或增加功能變得普遍,升級嵌入式軟件就必須對存儲嵌入式軟件的 FLASH 進行擦除,再重新寫入新的軟件 [1-3]。
1 嵌入式軟件的特點及關鍵技術
嵌入式軟件即嵌入在硬件中的操作系統和開發(fā)工具軟件,嵌入式軟件廣泛應用于國防、工控、家用、醫(yī)療等領域, 如我們常見的移動電話、數碼相機、機頂盒等都是嵌入式軟件對傳統產品進行智能化改造的結果。嵌入式軟件可分為嵌入式操作系統、嵌入式支撐軟件及嵌入式應用軟件,其具有獨特的實用性、靈活的適用性等特點。嵌入式軟件與嵌入式硬件資源關系密切,涉及相應的關鍵技術也較多,主要包括數字電路、微控制器及傳感器燈硬件技術,還包含 Canvas 繪圖功能、HTML5、移動定位等軟件技術??傮w而言,嵌入式軟件可與智能終端、傳感器、數據相結合,利用嵌入式軟件處理視頻、音頻、文字等相關內容,為各領域的信息化服務提供支撐,實現其強大的數據共享等服務功能 [4]。
2 嵌入式軟件在線升級技術的系統構架
嵌入式軟件在線升級是指不重啟硬件設備而完成的軟件升級。嵌入式軟件在線升級是提高系統可靠性的有效途徑,有利于維持嵌入式系統平臺的穩(wěn)定性。本文研究的重點是提供一種無需拆裝儀表,不需要特殊工具和軟件,通過儀表的 SD 卡更新嵌入式軟件的在線嵌入式軟件升級技術。所述的微處理器采用 STM32F429BIT6 芯片,RAM 使用 IS42S16160C-7TLI 的 SDRAM 存 儲 器 ,FLASH 使 用STM32F429BIT6 集成的具有 IAP 功能的 FLASH 存儲器, SD 控制器使用 STM32F429BIT6 集成的 SD 控制器模塊,SD 卡接口為標準的 SD 卡連接器,SD 卡為標準的 SD 卡 [5-6]。嵌入式軟件在線升級技術的系統框圖如圖 1 所示。
圖 1 嵌入式軟件在線升級技術的系統框圖
該系統包括集成 CPU,FLASH,SD 卡控制器的微處理器,SDRAM 存儲器,SD 卡連接器及 SD 卡。微處理器與SDRAM 通過并行總線連接,與 SD 卡通過 SD 卡連接器連接, 并使用內部的 SD 控制器進行通信。
在更新嵌入式軟件時,裝置上啟動更新,更新程序從SD 卡中讀取引導程序和新程序文件到 SDRAM 中,CPU 跳轉執(zhí)行 SDRAM 中的引導程序,引導程序包含了擦除 FLASH 和寫入 FLASH 的代碼,通過這種方式,擦除 FLASH 和寫入 FLASH 的代碼不會出現在正常運行的嵌入式軟件中,可避免因程序跑飛引起誤擦除或誤寫入的情況,然后引導程序會將新程序文件寫入到 FLASH 中, 新程序文件寫入完成后,儀表將運行更新后的嵌入式軟件,嵌入式軟件更新完成 [7-8]。
3 SD卡的系統軟件設計
3.1 SD卡的底層驅動程序設計
SD 卡(Secure Digital Memory Card,SD)是一種基于半導體快閃記憶器的新記憶設備,由于在體積、重量、傳輸速率、穩(wěn)定性、價格等方面有眾多優(yōu)勢,因此被廣泛地用于便攜式裝置上,如多媒體播放器、數碼相機及 AV器材等。SD 卡技術是基于 FLASH的存儲卡,通過接口界面與驅動器相連,不需要外接電源來維持記憶信息 ;同時也是一體化的固態(tài)介質,功能穩(wěn)定,不會造成機械性損壞 [9]。
SD卡驅動程序的主要步驟為 SD卡的初始化,向 SD卡發(fā)送命令函數,獲得響應的接口函數。SD 卡的初始化是指用戶應用程序以文件的形式訪問和讀取 SD卡上的數據 ;SD 卡本身只是一種數據介質,不包含文件系統,因此要想以文件系統的形式訪問 SD卡,必須先驅動 SD卡,通過調用 SD 卡物理層的有關函數來實現驅動。驅動 SD卡主要實現扇區(qū)的讀寫、獲取 SD卡的相關配置信息等。SD卡的讀寫操作都是基于命令的,通過向 SD卡發(fā)送相應的命令,獲得相應的接口函數控制 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 中,新程序文件寫入完成后,用程序實現跳轉到指定代碼段執(zhí)行,儀表將運行更新后的嵌入式軟件。
4 結 語
嵌入式系統是當前最有發(fā)展前景的 IT 應用領域之一, 傳統的嵌入式系統軟件升級方式耗時長、成本高。本文的研究可妥善解決這一問題,同時還能解決一些問題 :不需要拆裝儀表,避免二次損壞 ;嵌入式軟件本身不包含擦寫 FLASH 的代碼,保證 FLASH 不會被誤擦寫,具備較高的安全性 ;程序預先載入到 RAM,即使升級過程中發(fā)生 SD 卡損壞、拔除等異常事件,也不會影響燒錄過程,具備較高的可靠性。