符合功能安全CAN网络设计及AUTOSAR软件实现

来源:曹文峰
2020-03-31
1455

CAN-BUS在目前的汽车设计领域中的作用就不必多说了。因其重要性,CAN网络本身在其硬件层面上就有一定的安全强度,其中在数据链路层中就进行了CRC校验,保证数据传输在电磁干扰等情况下改变数据的情况下可被检测到。具体就不再这多说,具体可查CAN的基本原理。重点说说功能安全对CAN通讯的设计要求与实现,准确的说功能安全是对控制器中的外部通讯提出了安全要求,包括FlexRay,SPI等。,

ISO26262中对CAN通讯的要求
在ISO26262_PART5硬件这一章,在Table D.1的Specific semiconductor elements中有如下的描述:

其中对低覆盖率,中覆盖率,高覆盖率所要达到的失效模式检测提出了要求,包括:通信节点失效,消息损坏,消息延迟,消息丢失,非预期消息重复,顺序错误,消息插入,消息伪装(这里的失效模式并非对所有的通讯模式都适用,例如SPI单对单的传输不存在消息伪装这种说法)


标准实现
这里讨论如何做才能达到最高等级的CAN通讯,标准中给出了实现参考建议,如下图:



这个表格中对不同的覆盖率提到了不同的设计方法,硬件冗余,发送消息回读,使用测试模式等。但行业内普遍使用的是红框中的方式,即帧计数器,超时监控,信息冗余三种中等覆盖率的检测方式的组合来实现最高等级的安全设计。

【1】Information redundancy
其中Information redundancy中的介绍:


这里软件设计中要做到的重要的几点:
1,用checksum或CRC
2,checksum或CRC要包含message ID
3,汉明距不小于3.

关于CRC的汉明距的计算我找了不少资料仍然没找着具体的说明,如果哪位了解的,还请不吝赐教。通常CRC我们会使用美国汽车工程师协会制定的ASE-J1850推荐的CRC,很多芯片厂商及零部件供应商都已依据此标准开发了相关的CRC标准库。AUTOSAR标准对E2E的PROFILE1格式中推荐使用如下的CRC:
【2】 Frame counter


下图是对Frame counter的解释:


【3】Timeout monitoring


帧计数器较好理解,即每次收到或发出报文是进行计数器增加或翻转,显而易见,通过收发两端计数器的更新判断可判断报文是否更新,顺序是否正确等问题。
除了CRC与Frame counter,还需要进行超时监控:

这较好理解,需要检测到此channel连续丢失报文或者特定ID信息连续丢失。


如上是功能安全标准中对最高等级CAN网络安全设计提出的要求,那么在CAN协议 应用设计的时候便可根据这一要求,在CAN报文中加入CAN ID信息及frame counter,再通过一些软件设计对这些信息进行逻辑判断得到各类失效模式的检测。后一篇会重点解释AUTOSAR中如何实现这一软件设计。


收藏
点赞
2000