未解决
已解决
旗芯微FC7300 EIM ERM模块的典型应用

1      概述

旗芯微FC7300系列是基于多核Arm® Cortex-M7的高性能车规级超融合处理器(HPU),满足ISO 26262 ASIL-D最高功能安全等级要求。为实现这一严苛的安全目标,FC7300芯片内部集成了多项关键安全机制,其中EIM(错误注入模块)和ERM(错误报告模块)扮演着至关重要的角色。

l  EIM:主要以通过模拟ECC故障注入,进行上电、周期性的ECC功能自检。

l  ERM:主要用于响应ECC故障,并触发中断进行故障处理,防止故障导致系统功能失效。

这两个模块紧密协作,是FC7300达到ASIL-D认证、确保汽车动力、底盘、域控制等安全关键应用可靠运行的核心硬件基础

2      ECC机制介绍

对于内存有两种失效模式

1. 非法访问,通常使用MPU进行内存管理进行保护

2. 内存损坏,一般通过ECC来进行诊断,ECC的机制可由软件或硬件实现

ECC是芯片用于保障信息安全的一种常用机制,主要是为了避免存储设备中存放的数据因为硬件干扰而被篡改的情况。

2.1  ECC基本概念

ECC全称 Error Checking and Correcting,属于一种错误检查和纠正算法。在数字电路中,最小的数据单位就是叫 “比特(bit)”,也叫数据 “位”,“比特” 也是内存中的最小单位,它是通过 “1” 和 “0” 表示数据高、低电平信号的。空间中的无线电磁干扰、电路噪声会导致内存与 CPU 在进行数据交互的时候发生比特翻转  (“0” 变为 “1”,“1” 变为 “0”), 典型的ECC算法一般可以做到纠正单比特错误和检查2比特错误 。

2.2  ECC数据的构成

ECC需要的bit位数量由数据段的比特数决定,8位的数据需要5位的ECC位进行校验,数据位每增加一倍,ECC只增加一位校验位。例如,32位数据的ECC校验位数量位7位。

2.3  ECC带来的潜伏故障问题

潜伏故障是ECC机制面临的一个常见问题,在检查冗余校验位时可能会由于一些原因导致无法检测到读取数据的损坏。当硬件无法解决自身带来问题时,就需要软件协助覆盖相应的故障。

以FC7300芯片为例,该芯片提供了EIM外设,专门提供了通过总线翻转数据比特位的功能,它在存储器和 EDC/ECC 功能之间的读取路径中插入了该模块的错误注入通道来达到注入ECC故障的手段。软件可以在上电时主动注入ECC故障,然后检查ECC监控机制的功能是否正常,从而降低潜伏故障率。

3      EIM与ERM模块的应用

3.1  上电检测

针对ECC监控功能的验证通常在上电过程中进行检测,使用EIM模块对特定区域(例如SRAM、FLASH、TCM等)进行ECC故障注入,然后主动读取故障地址触发ECC故障,最后再观察故障是否能被ERM模块响应(如中断是否触发,故障地址是否被记录等)。

3.2  周期监控

当上电自检通过之后,通常认为ERM的ECC监控功能是可以正常运行的,随后会开启ERM对应的监控功能,并开启中断响应用于ECC的故障处理(例如主动尝试清除故障、记录DTC信息,引发复位等动作)。

3.3  下电检测

下电检测的过程与上电检测类似,但需要注意的是,由于下电检测完毕后ECU会进入休眠或直接掉电,检测结果将无法通过RAM区进行保存。所以下电检测完毕后额外的步骤是通过FLASH存储的形式将检测结果保留,在下次上电时读取结果信息,并确认故障区域的故障是否仍然存在。

3.4  注意事项

在自检过程中会往目标区域注入ECC故障,这个会导致这块区域的数据都产生异常。影响场景如下:

l  若多核共享的数据处于故障注入目标区域,则在核0做自检的时候,核1会由于读取了这个共享数据而触发异常。由于核1没有做自检而是在正常执行程序,因此核1会认为当前芯片存在了ECC故障,从而挂起。

l  若堆栈数据存放在了故障注入目标区域,则在注入故障后进行一次函数的调用会导致读写堆栈触发异常,并且由于堆栈数据故障,这还会导致异常调转错误,从而程序跑飞。

l  若中断向量表存放在了故障注入目标区域,则在注入故障后,若触发了中断(例如定时中断、CAN中断等),由于向量表数据异常则会导致最终中断跳转异常,从而程序跑飞。

因此在使用EIM进行故障注入测试的时候,应当小心谨慎,需要考虑的故障注入涉及到的各个方面。例如将避免将多核共享的变量防止在ECC故障注入影响的范围内;如果堆栈放置在TCM区域的话,那么在执行TCM相关测试时加入堆栈的切换工作;在做FLASH自检的时候,为了避免代码数据异常,应当考虑将代码放置在RAM中执行。

4      知从木牛介绍

知从木牛配置工具基于最新ARTOP架构,支持最新AUTOSAR R21-11标准所提供的基础平台上,根据AUTOSAR开发方法中定义的ECU配置步骤,实现了从配置、验证到代码生成的ECU配置全流程的功能。主要优势可以总结为以下几个方面:配置、验证和代码生成全流程功能的实现,完整的实现了AUTOSAR开发方法中ECU配置阶段的开发要求。

在ZC MuNiu SafetyLibrary软件中实现了EimErmTst模块,该模块运用Eim和Erm外设实现了上电自检功能,下面将简单介绍一下使用ZC MuNiu进行EimErmTst模块配置的过程:

4.1  EimErmTst配置简介

4.1.1        添加测试集合

通过在TestCore界面可以为指定的CPU核添加测试集合。

image.png                                             

4.1.2        配置EIM测试通道

在对应的Channel配置页面下可以添加多个EIM测试通道。

image.png

4.1.3        额外安全机制检测功能配置

知从木牛功能安全具有高度的可扩展性,针对客户提出的额外安全机制需求,知从可以针对性地制作检测功能,并提供相应的配置项。在ECCTestSets页面中选择需要执行的检测项。

image.png

4.1.4        生成配置代码

在配置完所有功能后即可生成EimErmTst相关的配置代码。

image.png

           4.2     应用领域

知从木牛配置工具,给ECU控制器软件开发提供友好的人机界面。可以支持标准的AUTOSAR基础软件代码模块的配置以及复杂驱动的配置界面开发。目前主要应用于如下场景:

image.png

Ø  知从木牛基础软件平台标准AUTOSAR模块配置

Ø   知从木牛基础软件平台复杂驱动模块配置

u  SAFETY FRAME

u  CRYPTO LIBRARY

u  BCCIC

u  SBC

Ø  同芯片企业合作,提供MCU MCAL 的配置工具

发布者:admin    发布于 2025-06-25 11:15:01
写回答
好问题0
好问题0
已收藏
收藏问题
暂无回答