图解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.mzph.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:致命信息,表…