孫梧雨,龔 俊,袁 霞,陳栩睿
(中國兵器裝備集團自動化研究所有限公司,四川綿陽 621000)
數據記錄系統可以對嵌入式系統的運行狀態信息和數據進行實時采集、存儲、傳輸和處理,支持建立系統數據維護管理體系,可以有效降低維護成本[1-4]。在近兩年自主國產化浪潮的背景下,對數據記錄系統的國產化率、存儲容量、處理速度、可靠性提出了更高的要求[5-6]。
eMMC 作為一種非易失性存儲器件,在其內部集成存儲控制器,可以完成存儲塊的自我管理,其由于較高的讀寫速率、處理效率,在航空航天、金融電子行業有著廣泛應用[7-9]。
文中針對基于eMMC 的數據記錄系統提出一種高可靠性的嵌入式軟件設計與實現方案,并通過實驗驗證了該軟件的可靠性,滿足國產高可靠數據記錄系統的設計需求。
基于國產eMMC 芯片的數據記錄系統可以為其他系統提供運行過程的數據存儲功能,并支持上位機通過網絡讀取數據。數據記錄系統采用ARM+eMMC 架構,數據記錄系統結構框圖如圖1 所示。微控制器負責主控模塊的數據收發、存儲控制、接口控制等功能,eMMC 存儲芯片選用容量為128 GB 的國產芯片TEE12833TW0,實現數據存儲功能,整個系統的國產化率超過95%。

圖1 數據記錄系統結構框圖
數據記錄系統嵌入式軟件采用模塊化設計方法,主要功能模塊包括系統初始化模塊、系統功能調度任務、數據接收任務、數據存儲任務、數據讀取任務、系統自診斷任務和錯誤處理任務。軟件體系架構如圖2 所示。利用FreeRTOS 的多任務并行處理技術,通過消息隊列和信號量的同步機制實現任務間的同步協作。

圖2 軟件體系架構
系統初始化模塊流程如圖3 所示,首先開啟并檢查系統功能硬件,再開啟FreeRTOS 運行周期進行任務調度。需要特別注意的是,eMMC 上電時需要先讀取eMMC 存儲卡,判斷是否已經存在數據文件,如存在數據文件,則跳過eMMC 初始化流程,避免系統重新上電后誤擦除已有數據。

圖3 系統初始化流程圖
系統功能調度任務負責根據從其他任務中傳來的事件消息開啟相應的功能任務,系統功能調度任務流程圖如圖4 所示。由于系統運行過程中,數據接收的時間可能是隨機的,為了保證系統運行的高效性和避免不必要的系統開支,在系統功能調度任務中建立一個消息指針隊列,用于等待事件消息。只有當接收到數據接收成功消息時才開啟數據存儲任務,接收到錯誤數據時打開錯誤處理任務,接收到讀取存儲數據指令時打開相應的數據讀取任務,這些任務都在各自的處理函數中進行關閉和資源回收。另外,系統功能調度任務對系統數據接收狀態進行監控,存儲系統的數據來源由外部設備周期性地輸入,若超過一定時間沒有接收到數據正確讀取的事件消息,則開啟錯誤處理任務提示操作員。最后,系統功能調度任務負責周期性地喂看門狗,防止 系統程序跑飛。

圖4 系統功能調度任務流程圖
數據存取任務的關鍵在于對數據的可靠寫入和讀取,FreeRTOS 的內核不帶文件系統,為提升開發效率,在設計中加入高效、資源占用率低、專為小型嵌入式系統設計的文件管理系統FATFS[10-13]。在數據存儲過程中,對文件系統工作狀態進行實時檢測,對寫入的文件進行重讀校驗檢查,確保每幀數據的完整性,一旦發現錯誤,則打開相應的錯誤處理任務。
為了保證系統的穩定運行,對系統狀態進行周期性檢查,若出現電壓和芯片溫度超限的情況,則打開錯誤處理任務,打開對應的錯誤指示燈并記錄錯誤信息。圖5 表示系統自診斷任務流程。

圖5 系統自診斷任務流程圖
從系統安全的角度分析,最佳的錯誤處理策略是盡可能地避錯,如果無法避錯,應該有相應的報警措施[14-16]。為了提高系統運行的可靠性,根據不同錯誤對系統功能的影響程度對錯誤進行分級處理,錯誤處理任務流程圖如圖6 所示。當有錯誤發生時,首先在存儲芯片中建立的特定錯誤日志文件中進行記錄,記錄下錯誤發生的時間戳信息。對于高風險錯誤,系統點亮有特定占空比和顏色的指示燈,此時必須由操作員重啟系統才能關閉錯誤指示燈提示;對于中風險錯誤,規定報警運行時間不得低于1 小時;對于不影響系統運行和文件數據讀寫的低風險錯誤,則點亮對應指示燈10 s,當完成記錄和點亮指示燈后,關閉這個錯誤處理任務進程,數據記錄系統的錯誤分級標準如圖7 所示。

圖6 錯誤處理任務流程圖

圖7 錯誤分類標準
為了驗證系統軟件的有效性和可靠性,將數據記錄系統放置于高低溫試驗箱,兩路數據接收接口通過UART 分別與兩個專用測試設備相連接,測試設備周期性地發送模擬數據至數據記錄系統。數據記錄系統另一側通過以太網接口連接至上位機,用于接收數據讀取指令,并根據讀取指令返回特定的存儲數據,實驗過程中改變系統環境溫度,檢測系統對溫度的適應性。系統測試時設備連接示意圖如圖8 所示。

圖8 系統測試連接示意圖
在測試設備的發送數據中按照0.001%的概率隨機加入錯誤數據,最后通過查驗比對測試設備的錯誤數據信息和數據記錄系統錯誤信息日志,確定系統對錯誤數據的檢測概率。
測得的系統性能參數如表1 所示。

表1 系統性能參數
針對當前武器系統數據記錄單元國產化和可靠性提出的更高需求,文中采用ARM+eMMC 架構,設計并實現了一種針對國產數據記錄單元的高可靠嵌入式軟件,文中對軟件系統架構和各個功能模塊的設計和實現進行了詳實的說明。為保證系統的可靠性,在各個模塊的設計中加入防錯及報警措施,并利用事件消息隊列和系統調度節省了軟件資源。文中提供了一種可行的針對國產數據記錄單元的高可靠軟件方案,經過測試證明了該方案的有效性。同時該軟件已經在某武器系統中得到應用,大量的測試也證明了該方案的有效性和魯棒性。