圖解AUTOSAR_SWS_FlashTest

AUTOSAR Flash Test模塊詳解

基于AUTOSAR 4.4.0規范的Flash測試模塊分析與圖解

目錄

  1. 概述
    1.1 Flash Test模塊的作用
    1.2 工作原理
  2. 架構設計
    2.1 整體架構
    2.2 依賴關系
  3. 狀態管理
    3.1 狀態轉換圖
    3.2 前臺與后臺測試模式
  4. 配置結構
    4.1 配置類圖
    4.2 關鍵配置參數
  5. 交互流程
    5.1 序列圖
    5.2 測試執行流程
  6. 總結

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模塊的主要依賴關系如下:

  1. BSW調度器:負責周期性觸發Flash Test的后臺測試模式執行。
  2. MCU驅動:提供對微控制器Flash存儲器和存儲映射區域的訪問能力。
  3. DEM(診斷事件管理器):用于報告Flash測試過程中發現的診斷事件。
  4. DET(默認錯誤跟蹤器):用于報告開發錯誤,如參數無效或狀態錯誤。
  5. 應用軟件組件:作為Flash Test服務的用戶,可以觸發測試執行和獲取測試結果。

在架構圖中可以看到,Flash Test模塊內部分為前臺測試、后臺測試和測試算法三個主要子組件,它們協同工作以完成Flash測試功能。前臺和后臺測試組件均使用測試算法組件來執行實際的測試操作。


3. 狀態管理

3.1 狀態轉換圖

以下狀態圖展示了Flash Test模塊的各種狀態及其轉換關系:

在這里插入圖片描述

3.2 前臺與后臺測試模式

Flash Test模塊提供兩種測試模式,它們在狀態管理上有明顯區別:

  1. 前臺測試模式

    • 通過FlsTst_StartFgnd()函數啟動
    • 一旦啟動,連續執行直到完成,不被中斷
    • 測試結果可通過FlsTst_GetFgndTestResult()獲取
    • 適合測試關鍵但較小的Flash區域
  2. 后臺測試模式

    • 通過FlsTst_StartBgnd()函數初始化測試狀態
    • 實際測試由BSW調度器通過周期性調用FlsTst_MainFunction()執行
    • 測試執行可以被中斷和恢復,適合大范圍測試
    • 可以通過FlsTst_StopBgnd()函數中止測試
    • 測試結果可通過FlsTst_GetBgndTestResult()獲取

狀態圖展示了模塊從未初始化狀態開始,通過初始化進入空閑狀態,然后根據調用的不同API進入前臺或后臺測試狀態的流程。測試完成后返回空閑狀態,或在測試失敗時進入測試失敗狀態。


4. 配置結構

4.1 配置類圖

下圖展示了Flash Test模塊的配置類結構:

在這里插入圖片描述

4.2 關鍵配置參數

Flash Test模塊的配置分為三個主要部分:

  1. 通用配置(FlsTstGeneral)

    • FlsTstDevErrorDetect:是否啟用開發錯誤檢測
    • FlsTstVersionInfoApi:是否啟用版本信息API
    • FlsTstMainFunctionPeriod:主函數周期調用時間
    • FlsTstMaxNumOfBlocksFgnd:前臺測試最大塊數
    • FlsTstMaxNumOfBlocksBgnd:后臺測試最大塊數
  2. 前臺測試塊配置(FlsTstBlockFgndConfigSet)

    • FlsTstBlockFgnd:前臺測試塊配置
    • FlsTstEnableObjectBasedFgndTest:是否啟用基于對象的前臺測試
    • FlsTstNumberOfTestedCellsAtomic:原子操作中測試的單元數
  3. 后臺測試塊配置(FlsTstBlockBgndConfigSet)

    • FlsTstBlockBgnd:后臺測試塊配置
    • FlsTstEnableObjectBasedBgndTest:是否啟用基于對象的后臺測試
    • FlsTstEnableSuspendResumeInterface:是否啟用掛起恢復接口
    • FlsTstNumberOfCyclesPerInterval:每個區間內的周期數
    • FlsTstNumberOfTestedCellsPerCycle:每個周期測試的單元數

每個測試塊(無論前臺還是后臺)都包含以下關鍵配置參數:

  • 塊ID
  • 塊索引
  • 塊大小
  • 起始地址
  • 測試算法類型
  • 測試簽名起始地址
  • 塊標記地址(可選)
  • DEM事件參數引用(可選)

5. 交互流程

5.1 序列圖

以下序列圖展示了Flash Test模塊與其他組件的交互流程:

在這里插入圖片描述

5.2 測試執行流程

Flash Test模塊的測試執行流程可以分為以下幾個階段:

  1. 初始化階段

    • 應用軟件組件調用FlsTst_Init()
    • Flash Test模塊獲取Flash配置信息并初始化內部變量和狀態
  2. 前臺測試執行

    • 應用軟件組件調用FlsTst_StartFgnd(BlockId)
    • Flash Test模塊驗證參數,執行測試算法
    • 通過MCU驅動讀取Flash區域內容并與預期值比較
    • 返回測試結果,如果失敗則向DEM報告診斷事件
  3. 后臺測試執行

    • 應用軟件組件調用FlsTst_StartBgnd(BlockId, TestIntervalId)初始化測試狀態
    • BSW調度器周期性調用FlsTst_MainFunction()
    • Flash Test模塊在每次調用中執行部分測試并保存中間狀態
    • 全部測試完成后設置測試完成標志,如果失敗則向DEM報告診斷事件
    • 應用軟件組件可通過FlsTst_GetBgndTestResult()獲取結果或通過FlsTst_StopBgnd()中斷測試

序列圖詳細展示了這些階段中各組件之間的交互過程,包括參數驗證、錯誤處理、測試執行和結果報告等關鍵步驟。


6. 總結

AUTOSAR Flash Test模塊是汽車電子系統中確保不變內存完整性的關鍵組件。通過本文的分析,我們可以得出以下幾點關鍵認識:

  1. 雙重測試模式

    • 前臺模式提供不可中斷的完整測試,適合關鍵區域測試
    • 后臺模式提供可中斷的分段測試,適合大范圍測試
  2. 靈活的配置結構

    • 支持多種測試算法
    • 可配置的測試參數和范圍
    • 與DEM和DET集成實現診斷和錯誤報告
  3. 完善的狀態管理

    • 清晰的狀態轉換邏輯
    • 錯誤狀態處理
    • 測試結果反饋機制
  4. 集成到安全概念

    • Flash Test模塊需要集成到整體安全概念中
    • 單獨使用無法提供足夠的診斷覆蓋率
    • 與MCU驅動緊密協作

AUTOSAR Flash Test模塊通過提供標準化的Flash測試功能,幫助汽車電子系統開發人員確保系統內存完整性,提高系統可靠性和安全性,是現代汽車電子系統中不可或缺的組成部分。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74725.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【mongodb】mongodb的字段類型

目錄 1. 基本數據類型1.1 String1.2 Number1.3 Boolean1.4 Date1.5 Null1.6 ObjectId1.7 Array1.8 Binary Data1.9 Object 2. 特殊數據類型2.1 Regular Expression2.2 JavaScript2.3 Symbol2.4 Decimal1282.5 Timestamp2.6 MinKey/MaxKey2.7 DBPointer 3. 常用字段類型示例4. 注…

MySQL篇(五)MySQL主從同步原理深度剖析

MySQL篇(五)MySQL主從同步原理深度剖析 MySQL篇(五)MySQL主從同步原理深度剖析一、引言二、MySQL主從同步基礎概念主庫(Master)從庫(Slave)二進制日志(Binary Log&#x…

論文學習16:Learning Transferable Visual Models From Natural Language Supervision

代碼來源 Learning Transferable Visual Models From Natural Language Supervisionhttps://arxiv.org/pdf/2103.00020 模塊作用 當前最先進的計算機視覺系統被訓練用于預測一組固定的、預先定義的目標類別。這種受限的監督方式限制了它們的通用性和可用性,因為要…

[MySQL初階]MySQL(9)事務機制

標題:[MySQL初階]MySQL(9)事物機制 水墨不寫bug 文章目錄 一、認識事務1、多線程訪問數據庫出現的問題2、對CURD的限制是通過事務機制實現的3、事務的四個屬性4、哪些引擎支持事務 二、事務的提交與autocommit設置三、事務的隔離性和隔離級別…

spring-cloud-alibaba-nacos-config使用說明

一、核心功能與定位 Spring Cloud Alibaba Nacos Config 是 Spring Cloud Alibaba 生態中的核心組件之一,專為微服務架構提供動態配置管理能力。它通過整合 Nacos 的配置中心功能,替代傳統的 Spring Cloud Config,提供更高效的配置集中化管理…

SonarQube數據庫配置

SonarQube部署完成后,在瀏覽器地址欄輸入http://IP:9000可以進入登錄頁面,以本機運行為例,地址為http://127.0.0.1:9000/,默認登錄名:admin,登錄密碼也是admin。登錄后會要求設置密碼: 按要求設…

醫藥檔案區塊鏈系統

1. 醫生用戶模塊?? ??目標用戶??:醫護人員 ??核心功能??: ??檢索檔案??:通過關鍵詞或篩選條件快速定位患者健康檔案。??請求授權??:向個人用戶發起檔案訪問權限申請,需經對方確認。??查看檔案?…

CSS3學習教程,從入門到精通, 化妝品網站 HTML5 + CSS3 完整項目(26)

化妝品網站 HTML5 CSS3 完整項目 下面是一個完整的化妝品網站項目,包含主頁、登錄頁面和注冊頁面。我將按照您的要求提供詳細的代碼和注釋。 1. 網站規劃與需求分析 需求分析 展示化妝品產品信息提供用戶注冊和登錄功能響應式設計,適配不同設備美觀…

ROS2 多機時間同步(Chrony配置簡明指南)

適用場景: 主機運行 ROS2 Humble(發布 /scan 等),板子運行 ROS2 Foxy(發布 /tf 等),兩邊通過 ROS_DOMAIN_ID 跨平臺通訊。需要保證系統時間對齊,避免 TF 插值失敗、建圖抖動等問題。…

Nginx配置偽靜態,URL重寫

Nginx配置偽靜態,URL重寫 [ Nginx ] 在Nginx低版本中,是不支持PATHINFO的,但是可以通過在Nginx.conf中配置轉發規則實現: location / { // …..省略部分代碼if (!-e $request_filename) {rewrite ^(.*)$ /index.php?s/$1 l…

電路筆記(元器件):ADC LTC系列模數轉換器的輸出范圍+滿量程和偏移調整

LTC1740(LTC1740官方文檔)是Analog Devices(原Linear Technology)公司生產的一款高性能、低功耗的14位模數轉換器(ADC)。它通常用于需要高精度和快速采樣率的應用中,如通信系統、數據采集設備等。同類產品 LTC1746:一款14位、40Ms…

續-算法-數學知識

3、歐拉函數 1、定義: 1~n 中與 n 互質的數的個數 例如:6 的有 1 2 3 4 5 6 其中,與 n 互質 的 數的個數為 2個分別是:1、5 2、計算: $ N p_1^{a1} p_2^{a2} p_3^{a3} … p_k^{ak} $(例如&#x…

C/C++測試框架googletest使用示例

文章目錄 文檔編譯安裝示例參考文章 文檔 https://github.com/google/googletest https://google.github.io/googletest/ 編譯安裝 googletest是cmake項目,可以用cmake指令編譯 cmake -B build && cmake --build build將編譯產物lib和include 兩個文件夾…

LintCode第974題-求矩陣各節點的最短路徑(以0為標準)

描述 給定一個由0和1組成的矩陣,求每個單元格最近的0的距離。 兩個相鄰細胞之間的距離是1。 給定矩陣的元素數不超過10,000。 在給定的矩陣中至少有一個0。 單元格在四個方向上相鄰:上,下,左和右。 樣例 例1: 輸入: [[0,0,0],[0,0,0],[0…

Redis核心機制-緩存、分布式鎖

目錄 緩存 緩存更新策略 定期生成 實時生成 緩存問題 緩存預熱(Cache preheating) 緩存穿透(Cache penetration) 緩存雪崩(Cache avalanche) 緩存擊穿(Cache breakdown) 分…

CF每日5題(1300-1500)

最近急速補練藍橋杯中,疏于cf練習。 感覺自己過題還是太慢了。 今日水題,我水水水水。 1- 1979C lcm 水 1400 第 i i i局贏了,1個硬幣頂 k [ i ] k[i] k[i]個貢獻,所以每局分硬幣 x i 1 k [ i ] x_i{1\over k[i]} xi?k[i]1?個…

從代碼學習深度學習 - LSTM PyTorch版

文章目錄 前言一、數據加載與預處理1.1 代碼實現1.2 功能解析二、LSTM介紹2.1 LSTM原理2.2 模型定義代碼解析三、訓練與預測3.1 訓練邏輯代碼解析3.2 可視化工具功能解析功能結果總結前言 深度學習中的循環神經網絡(RNN)及其變種長短期記憶網絡(LSTM)在處理序列數據(如文…

easy-poi 一對多導出

1. 需求: 某一列上下兩行單元格A,B值一樣且這兩個單元格, 前面所有列對應單元格值一樣的話, 就對A,B 兩個單元格進行縱向合并單元格 1. 核心思路: 先對數據集的國家,省份,城市...... id 身份證進行排序…

AI比人腦更強,因為被植入思維模型【42】思維投影思維模型

giszz的理解:本質和外在。我們的行為舉止,都是我們的內心的表現。從外邊可以看內心,從內心可以判斷外在。曾國藩有7個識人的方法,大部分的人在他的面前如同沒穿衣服一樣。對于我們自身的啟迪,我認為有四點&…

Spring Boot 打印日志

1.通過slf4j包中的logger對象打印日志 Spring Boot內置了日志框架slf4j,在程序中調用slf4j來輸出日志 通過創建logger對象打印日志,Logger 對象是屬于 org.slf4j 包下的不要導錯包。 2.日志級別 日志級別從高到低依次為: FATAL:致命信息,表…