汽车电子硬件开发常用的安全机制
02、控制器及周边器件的安全机制
1. 时钟的安全机制
看门狗是一种用于监控MCU程序是否失控或已停止运行的定时器。如果MCU发生失效或故障,我们可以依靠看门狗的独立路径来重启或复位MCU。看门狗定时器 (WDT) 和MCU 在电路结构上的关系如图5-6所示。
图 5-6 看门狗定时器 (WDT) 和MCU在电路结构上的关系
从功能上看,看门狗分类如下。
(1) 超时看门狗
如果在设定的时间间隔内未收到来自MCU的喂狗信号,则看门狗输出复位信号。这种看门狗逻辑最简单,但其诊断覆盖率为低。
这种看门狗的局限在于,如果MCU的时钟过快,过早地喂狗,它是无法发现的。
注:大家常说的“喂狗”其实是指:用信号触发看门狗,使其计数器刷新,重新开始计时。
(2)窗口看门狗
窗口看门狗相比超时看门狗增加了闭合窗口时间段的设计,即在此时间段外不允许接收喂狗信号。
如果在设定的时间间隔内没有接收到来自MCU的信号,或过早接收到来自MCU的信 号 (或者多个类似信号),看门狗定时器则会判断MCU发生故障并输出复位信号。
图5-7很好地解释了过早或过晚喂狗后看门狗复位的逻辑。窗口看门狗的诊断覆盖率为中等。这种看门狗的局限在于,如果MCU内部的算术逻辑单元(Arithmetic Logic Unit,ALU) 发生问题,它是无法发现的。
(3) 问答看门狗
这种看门狗通常基于时间窗口。 MCU根据“看门狗发来的问题”或者“上一次回答的答案” 或者“预设的序列”向看门狗发送这次的答案。看门狗根据 “MCU发送的答案与预定数据是否匹配”以及“是否在时间窗口内”来判断MCU 是否正常工作。诊断覆盖率被认为是“高”。
图 5-7 过早或过晚喂狗后看门狗复位的逻辑
如果从时钟源上划分,看门狗分类如下:
独立时钟源的看门狗。这种看门狗有独立的时钟源,才被认为能提供诊断覆盖。
非独立时钟源的看门狗。非独立时钟源的看门狗一般被认为连低诊断覆盖率都达不到。如果从看门狗的位置是否和MCU在同一个Die 上划分,看门狗可以被分为外部看门狗、内部看门狗。
通常,只有外部看门狗才被认为能提供诊断覆盖。因为MCU的故障很可能也会影响内部看门狗,即两者很可能存在共因失效,导致MCU发生问题时,内部看门狗无法触发RESET。
2. 存储的安全机制
(1) Parity
Parity分为奇校验和偶校验。
奇校验:数据位和奇校验位所有位上的1相加为奇数。
偶校验:数据位和偶校验位所有位上的1相加为偶数。
当包括奇偶校验位在内的奇数个位发生错误时,奇偶校验可以检测到数据传输发生错误。
奇偶校验只需要一位就可以对数据进行校验,但只能发现是否有错误,不能定位错误的具体位。且当有偶数个位发生错误时,无法发现错误,诊断覆盖率为低。
(2) ECC
ECC (Error Correcting Code,纠错码)可检测并在某些情况下纠正受保护的数据中的错误。ECC使用固定数量的码位。ECC的位数取决于受保护的数据位数。当数据或其ECC 码中的特定数量的位损坏时,ECC可以检测错误。通常,ECC 可以纠正数据或其ECC码中的一些错误。 ECC的诊断覆盖率取决于冗余位数,一般认为ECC的诊断覆盖率水平可以达到高。
(3) Checksum
Checksum是指传输位数的累加。在传输结束时,接收方可以根据该数值判断是否正确接收了数据。如果数值匹配,说明传送正确。校验和一般用于通信中,特别是远距离通信,以保证数据的完整性和准确性。
Checksum诊断覆盖率与被保护的数据和Checksum的长度有关。 一般认为,Checksum 诊断覆盖率水平可达到高。
数据发送方生成Checksum的步骤如下。
1) 将需要数据中的Checksum 位设为0。
2) 数据按每2 Byte 划分开来,每两字节组成一个16bit的值,若最后有单字节的数据, 补1 Byte 的0组成2 Byte。
3) 将所有的16bit的值累加到一个32bit 的值中。
4) 将32bit 值的高16bit 值和低16bit 值相加,得到一个新的值,若新的值大于0Xffff,再将新的值的高16bit 与低16bit 相加,直到值小于等于0Xff。
5) 将第四步计算得出的16bit 值按位取反(即取补码),即可得到Checksum 值,存入相关字段即可。
数据接收方校验的步骤如下。
1) 数据接收方把接收到的数据按发送方的方法进行累加和取反。
2) 校验结果为零表示校验通过;否则,校验不通过。
(4) CRC
CRC(Cyclic Redundancy Check,循环冗余校验码)由数据nbit和校验码kbit构成。n+k为循环冗余校验码的字长,又被称为“(n+k,n) 码”。数据序列之后的kbit校验码与nbit数据之间存在特定的关系。如果因失效等原因使nbit数据中的某一位或多位发生错误,这种关系就会被破坏。因此,通过检查这一关系,可以实现对数据正确性的检验。
CRC 的诊断覆盖率与被保护数据的长度、 CRC 的位数以及多项式种类有关。一般认为,CRC 诊断覆盖率水平可达到高。
(5) Memory Replication
Memory Replication(模块备份)是功能安全中的一种高诊断覆盖率的安全机制,其核心理念是通过对关键或高风险模块进行冗余设计,使两个或多个相同或不同的模块实现同样的功能,并且在运行时进行比较和切换,以防故障发生。
以 Double Memory with Hardware or Software Comparison(通过硬件或软件的双份内存数据比较方法)为例,通常会将地址空间复制到两个不同的内存中,这样就有了两份相同的数据。第一个内存正常工作,第二个内存与第一个内存同时工作,但不影响程序运行。每次访问内存时,都会比较两个内存的输出,如果发现不一致,就说明有错误发生,并且会给出提示。这种方法可以提高诊断覆盖率水平,也就是检测错误的能力,但需要注意考虑共因失效。
但是 ,Memory Replication 会极大地消耗硬件资源,且一般使用三模冗余(Triple Modular Redundancy, 三个模块执行相同的操作),将多数相同的输出作为整个系统的正确输出。该方法只有在安全性和鲁棒性要求极高的系统中才会使用。 一般认为,Memory Replication 的诊断覆盖率水平可达到高。
(6) Memory BIST(MBIST)( 写全0和全1 )
MBIST 是一种结构性 DFT 技术,将芯片的测试结构置于芯片内部。MBIST 电路通常包括测试向量生成电路、BIST 控制电路和响应分析电路三部分。通过系统上/下电运行来检测内存单元中的永久性故障,以防随机故障潜伏在内存单元中。
(7) MMU/MPU
MMU(存储器管理单元)的主要功能是将输入地址转换为输出地址。此转换基于地址映射和内存属性信息,这些信息可从存储在内存中的配置表和转换表中获得。MMU提供的功能可以帮助软件实现内存分区,即所有对内存地址的访问都需要经过MMU中的表格进行检查或转换,使得软件无法直接访问物理地址,而是通过虚拟地址访问。同时,MMU 提供基于硬件的存储器访问授权,从而实现不同进程任务的空间隔离。
MPU(存储器保护单元)是位于存储器内部的一个可编程区域,它将内存划分为具有特定权限和访问规则的多个区域,定义了存储器的属性和存储器的访问权限。
MPU 主要实现的保护如下。
可以将内存划分为特权区域和普通区域,普通用户禁止访问特权区域,以此保护特权区域中的数据。
设置某区域为只读,可以防止安全相关的数据被篡改。
检测堆和栈的溢出以及数组是否越界。
MMU/MPU 对于非法访问相关的失效,诊断覆盖率水平为高。
编辑推荐
最新资讯
-
泽尔测试战略入股赛孚汽车科技,布局汽车安
2025-04-07 17:33
-
每秒采集100万个数据 | 下一代USB DAQ产品-
2025-04-07 14:12
-
重型商用车辆和客车的动力学——振动环境
2025-04-07 14:11
-
2025年10大隐形车衣品牌排行榜
2025-04-07 10:40
-
沃尔沃卡车与Greenlane合作推动商业电动化
2025-04-07 08:42