首页 > 汽车技术 > 正文

汽车电子硬件开发常用的安全机制

2025-04-07 08:34:10·  来源:汽车电子与软件  作者:SASETECH社区  
 

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)( 01 )

MBIST 是一种结构性 DFT 技术,将芯片的测试结构置于芯片内部。MBIST 电路通常包括测试向量生成电路、BIST 控制电路和响应分析电路三部分。通过系统上/下电运行来检测内存单元中的永久性故障,以防随机故障潜伏在内存单元中。

(7) MMU/MPU

MMU(存储器管理单元)的主要功能是将输入地址转换为输出地址。此转换基于地址映射和内存属性信息,这些信息可从存储在内存中的配置表和转换表中获得。MMU提供的功能可以帮助软件实现内存分区,即所有对内存地址的访问都需要经过MMU中的表格进行检查或转换,使得软件无法直接访问物理地址,而是通过虚拟地址访问。同时,MMU 提供基于硬件的存储器访问授权,从而实现不同进程任务的空间隔离。

MPU(存储器保护单元)是位于存储器内部的一个可编程区域,它将内存划分为具有特定权限和访问规则的多个区域,定义了存储器的属性和存储器的访问权限。

MPU 要实现的保护如下。

可以将内存划分为特权区域和普通区域,普通用户禁止访问特权区域,以此保护特权区域中的数据。

设置某区域为只读,可以防止安全相关的数据被篡改。

检测堆和栈的溢出以及数组是否越界。

MMU/MPU 对于非法访问相关的失效,诊断覆盖率水平为高。

分享到:
 
反对 0 举报 0 收藏 0 评论 0
沪ICP备11026917号-25