E-GAS三层安全监控概念中的提到的ROM/RAM检查具体是如何实施的

发布于 2022-05-05 17:24:28

背景

  • 控制器:VCU
  • MCU:TC275
  • 基础软件:自研

问题描述

标准《Standardized E-Gas Monitoring Concept for Gasoline and Diesel Engine Control Units》中有提到Level3中针对RAM/ROM的测试,但没有描述具体测试方法,实际开发中如何实现?需要注意哪些方面?
image.png

查看更多

关注者
0
被浏览
671
1 个回答
AaronFU
AaronFU 认证专家 2022-05-05
每天进步一点点

标准《Standardized E-Gas Monitoring Concept for Gasoline and Diesel Engine Control Units》中的Level3 控制器监控层没有就ROM/RAM等内存空间的检测开设专门的章节,如下图所示。
image.png

有关内存空间的检测要求分散在上图中各部分章节,具体实现方法没有指定。实际开发中,常见的测试方法有:

  • 双存储测试法: 针对关键的变量均额外定义对应的补码变量,由于这些变量都存储有各自的补码,因此,检查方法就是对其自身和其补码进行一致性检查。
  • IFA9 测试法:这种方法通常针对一段RAM空间,测试其是否可以正常读写。具体实现方法为:1 按照地址递增的顺序向待检测的RAM区域写入测试码; 2 验证写入的测试码,并将测试码的反码写入到RAM中; 3 验证上一步中写入的测试码的反码,并再次将测试码写入到RAM中; 4 验证上一步中写入的测试码,并将测试码的反码按照地址递减的顺序写入到RAM; 5 验证上一步中写入的测试码的反码,并再次将测试码按照地址递减的顺序写入到RAM中,并验证。其中用到的测试码有两种:0xAAAA AAAA/0x5555 5555 和 0x0000 0000/0xFFFF FFFF;
  • 单点RAM测试法:这种方法主要针对具体某处RAM地址,测试其是否可以正常读写。具体实现方法为:1保存要检查RAM处的数值;2 写入0x55555555,读出测试是否为0x55555555;3 写入0xAAAAAAAA,读出测试是否为0xAAAAAAAA;4 恢复RAM区的原始数值。
  • ROM测试法:这种方法主要针对存储在Flash空间内的程序代码和标定数据,采用某种算法计算指定区域的Checksum,然后与本就保存在Flash中的Checksum进行对比,确认数据是否有损坏。需要注意的是,保存在Flash中的Checksum是在软件编译过程中由专用工具计算出来并保存在最终生成的Hex文件中,随之刷入Flash内的。

实际开发过程中,应当根据不同的检查区域的特点,采用不同的检查算法,主要考虑的因素有:

  1. 提前确定检测区域,这需要在内存空间分配时就进行相应设计;
  2. 对于采用Checksum校验的测试方法,还需提前离线计算出对应的Checksum;
  3. 根据功能安全技术需求,选择恰当的测试执行时机,如启动阶段、关机阶段或运行过程中周期性;
  4. 注意测试耗时对系统的影响,必要时分批测试,避免ECU启动时间过长或CPU负荷偏高;
  5. 根据功能安全技术需求,定义恰当的失效响应机制,如轻的可以仅记录故障,严重的则需触发系统复位;

-

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览