AUTOSAR Flash Test模塊詳解
目錄
- 概述
1.1 Flash Test模塊的作用
1.2 工作原理 - 架構設計
2.1 整體架構
2.2 依賴關系 - 狀態管理
3.1 狀態轉換圖
3.2 前臺與后臺測試模式 - 配置結構
4.1 配置類圖
4.2 關鍵配置參數 - 交互流程
5.1 序列圖
5.2 測試執行流程 - 總結
1. 概述
1.1 Flash Test模塊的作用
AUTOSAR Flash Test模塊是AUTOSAR基礎軟件棧中的一個關鍵組件,主要用于測試不變內存的完整性和正確性。不變內存可以是嵌入在微控制器中或通過存儲映射連接到微控制器的數據/程序flash、程序SRAM、鎖定緩存等。
Flash Test模塊可以在MCU初始化后的任何時間執行,并提供多種測試算法供系統安全需求選擇。值得注意的是,Flash測試服務本身依賴于系統的存儲概念,需要集成到整體安全概念中,單獨使用無法提供足夠的診斷覆蓋率。
1.2 工作原理
Flash Test模塊支持兩種主要的測試模式:
- 前臺測試模式:通過用戶調用直接觸發,測試一旦啟動會連續執行直到完成,不可中斷。
- 后臺測試模式:通過調度器周期性觸發,可以被中斷,測試可以分段執行,跨越多個調度任務。
Flash Test提供多種測試算法,包括簽名檢查、黑盒測試、GALPAT算法、棋盤格模式、行走路徑和遍歷測試等。這些算法用于驗證Flash內容的正確性和完整性,確保系統運行過程中關鍵內存區域不被意外修改。
2. 架構設計
2.1 整體架構
下圖展示了AUTOSAR Flash Test模塊的整體架構及其與其他模塊的關系:
2.2 依賴關系
Flash Test模塊的主要依賴關系如下:
- BSW調度器:負責周期性觸發Flash Test的后臺測試模式執行。
- MCU驅動:提供對微控制器Flash存儲器和存儲映射區域的訪問能力。
- DEM(診斷事件管理器):用于報告Flash測試過程中發現的診斷事件。
- DET(默認錯誤跟蹤器):用于報告開發錯誤,如參數無效或狀態錯誤。
- 應用軟件組件:作為Flash Test服務的用戶,可以觸發測試執行和獲取測試結果。
在架構圖中可以看到,Flash Test模塊內部分為前臺測試、后臺測試和測試算法三個主要子組件,它們協同工作以完成Flash測試功能。前臺和后臺測試組件均使用測試算法組件來執行實際的測試操作。
3. 狀態管理
3.1 狀態轉換圖
以下狀態圖展示了Flash Test模塊的各種狀態及其轉換關系:
3.2 前臺與后臺測試模式
Flash Test模塊提供兩種測試模式,它們在狀態管理上有明顯區別:
-
前臺測試模式:
- 通過
FlsTst_StartFgnd()
函數啟動 - 一旦啟動,連續執行直到完成,不被中斷
- 測試結果可通過
FlsTst_GetFgndTestResult()
獲取 - 適合測試關鍵但較小的Flash區域
- 通過
-
后臺測試模式:
- 通過
FlsTst_StartBgnd()
函數初始化測試狀態 - 實際測試由BSW調度器通過周期性調用
FlsTst_MainFunction()
執行 - 測試執行可以被中斷和恢復,適合大范圍測試
- 可以通過
FlsTst_StopBgnd()
函數中止測試 - 測試結果可通過
FlsTst_GetBgndTestResult()
獲取
- 通過
狀態圖展示了模塊從未初始化狀態開始,通過初始化進入空閑狀態,然后根據調用的不同API進入前臺或后臺測試狀態的流程。測試完成后返回空閑狀態,或在測試失敗時進入測試失敗狀態。
4. 配置結構
4.1 配置類圖
下圖展示了Flash Test模塊的配置類結構:
4.2 關鍵配置參數
Flash Test模塊的配置分為三個主要部分:
-
通用配置(FlsTstGeneral):
FlsTstDevErrorDetect
:是否啟用開發錯誤檢測FlsTstVersionInfoApi
:是否啟用版本信息APIFlsTstMainFunctionPeriod
:主函數周期調用時間FlsTstMaxNumOfBlocksFgnd
:前臺測試最大塊數FlsTstMaxNumOfBlocksBgnd
:后臺測試最大塊數
-
前臺測試塊配置(FlsTstBlockFgndConfigSet):
FlsTstBlockFgnd
:前臺測試塊配置FlsTstEnableObjectBasedFgndTest
:是否啟用基于對象的前臺測試FlsTstNumberOfTestedCellsAtomic
:原子操作中測試的單元數
-
后臺測試塊配置(FlsTstBlockBgndConfigSet):
FlsTstBlockBgnd
:后臺測試塊配置FlsTstEnableObjectBasedBgndTest
:是否啟用基于對象的后臺測試FlsTstEnableSuspendResumeInterface
:是否啟用掛起恢復接口FlsTstNumberOfCyclesPerInterval
:每個區間內的周期數FlsTstNumberOfTestedCellsPerCycle
:每個周期測試的單元數
每個測試塊(無論前臺還是后臺)都包含以下關鍵配置參數:
- 塊ID
- 塊索引
- 塊大小
- 起始地址
- 測試算法類型
- 測試簽名起始地址
- 塊標記地址(可選)
- DEM事件參數引用(可選)
5. 交互流程
5.1 序列圖
以下序列圖展示了Flash Test模塊與其他組件的交互流程:
5.2 測試執行流程
Flash Test模塊的測試執行流程可以分為以下幾個階段:
-
初始化階段:
- 應用軟件組件調用
FlsTst_Init()
- Flash Test模塊獲取Flash配置信息并初始化內部變量和狀態
- 應用軟件組件調用
-
前臺測試執行:
- 應用軟件組件調用
FlsTst_StartFgnd(BlockId)
- Flash Test模塊驗證參數,執行測試算法
- 通過MCU驅動讀取Flash區域內容并與預期值比較
- 返回測試結果,如果失敗則向DEM報告診斷事件
- 應用軟件組件調用
-
后臺測試執行:
- 應用軟件組件調用
FlsTst_StartBgnd(BlockId, TestIntervalId)
初始化測試狀態 - BSW調度器周期性調用
FlsTst_MainFunction()
- Flash Test模塊在每次調用中執行部分測試并保存中間狀態
- 全部測試完成后設置測試完成標志,如果失敗則向DEM報告診斷事件
- 應用軟件組件可通過
FlsTst_GetBgndTestResult()
獲取結果或通過FlsTst_StopBgnd()
中斷測試
- 應用軟件組件調用
序列圖詳細展示了這些階段中各組件之間的交互過程,包括參數驗證、錯誤處理、測試執行和結果報告等關鍵步驟。
6. 總結
AUTOSAR Flash Test模塊是汽車電子系統中確保不變內存完整性的關鍵組件。通過本文的分析,我們可以得出以下幾點關鍵認識:
-
雙重測試模式:
- 前臺模式提供不可中斷的完整測試,適合關鍵區域測試
- 后臺模式提供可中斷的分段測試,適合大范圍測試
-
靈活的配置結構:
- 支持多種測試算法
- 可配置的測試參數和范圍
- 與DEM和DET集成實現診斷和錯誤報告
-
完善的狀態管理:
- 清晰的狀態轉換邏輯
- 錯誤狀態處理
- 測試結果反饋機制
-
集成到安全概念:
- Flash Test模塊需要集成到整體安全概念中
- 單獨使用無法提供足夠的診斷覆蓋率
- 與MCU驅動緊密協作
AUTOSAR Flash Test模塊通過提供標準化的Flash測試功能,幫助汽車電子系統開發人員確保系統內存完整性,提高系統可靠性和安全性,是現代汽車電子系統中不可或缺的組成部分。