关于车用通信协议中的假冒错
时间:03-24
来源:互联网
点击:
在嵌入式系统里,通信是骨干部分,通信系统的错会引起整个嵌入式系统的故障。在通信系统里,假冒错(Masquerade fault)是指一种冒名顶替性质的故障,即发送时的一条消息被误收为另一种格式上合法的消息。此种错的后果显然是不能接受的,因为接收节点会把完全无关的数据进行解读,例如把制动踏板的位置解释为加速踏板的位置。在这种类型的应用中,由于控制方案对信号的突变有安全设计,机器本身的惯性也有滤波的效果,而且在很短的周期内又有正确的消息送来,在大多数情况下除了造成不适感觉外,不会造成很严重的后果。但如果这是会影响到最终执行的信号,那么如果在需要刹车时变为加油,就会造成事故。在有些平时信号更新较慢的系统里,误信号也可能造成新的问题。例如为了在启动瞬间防止电池电压跌落过大,要错开负荷,像汽车把空调暂时关闭,若误认为是打开信号,就会违背设计意图,造成新的干扰中的误信号也会带来令人难以解释的现象,浪费维修的人力物力,且损害品牌的声誉。在安全攸关的需要冗余的系统里,这种冒名错会使表决机制失效。因此对车用通信协议中的假冒错进行研究有重要的意义,它是解决车用嵌入式系统可靠性的关键之一。现有的主流车内通信协议是CAN,它还没有采用足够的措施可对抗假冒错。新的FlexRay协议有了这方面的措施,但是否足够还有待商榷。
1 假冒错
一条消息在整个发送/接收的过程中会受到干扰,从而产生数据位的改变。为了不被误收,现有的通信协议都有一些检错的措施,例如在传送的帧尾部附加校验数据。一般来说,较多采用循环冗余校验(CRc)方法,CRC生成多项式的长度与需要的检错Hamming距离以及需要处理的数据长度有关。CRC算法的Hamming距离是指码源。又如行车中误开车锁,则会带来新的风险。诊断系统字中无法用CRC算法检测出的出错位的个数。因此一个协议选用的CRC多项式反映了它要保证的Hamming距离。如果发生的位错误太多,CRC检验会产生漏判,把错误帧判为正常帧。例如CAN协议采用的 15位cRC生成多项式在CAN的最大数据帧长度内Hamming距离为6。即CRc可检验帧内5位错误。不过CAN的CRC是在去掉填充位后计算的,由于填充位而造成Hamming距离下降[1]是一个设计上的失误,这在后面介绍。
当考虑假冒错时,要分析漏检的情况。第一种是干扰时间很长,出错位数太多,超出了CRC检验的能力;第二种是通信控制器在发帧以前数据已有变化,而变化后的数据有了合法的身份,CRC检验只是保证这一假冒者不被错发。在这二种情况下,都可能产生假冒错。在CAN中如果数据位错误发生在消息的ID部分就产生了假冒错,就有可能把刹车当成加油。下面进一步讨论产生假冒错的情况。
1.1数据传送链
从数据的产生到数据的利用的角度来看,通信不只是由一个通信控制器(cc)到另一个通信控制器的过程,它还包括由主机(host)到通信控制器的来回过程,这个过程同样会出错。一般的通信干扰分析大多数着眼于来自空问的幅射干扰对串行传输的影响,这当然是很重要的途径,但在采取一定措施后,可以得到缓解,例如用屏蔽电缆、双绞线、屏蔽的ECU外壳等。在汽车环境里电源的传导干扰很大,国际标准IS()7637列出了典型的传导干扰形式,它们的波形上升或下降沿很陡,不但在正电压方向超出电源电压很多倍,而且会在负电压方向超出很多倍。电源的传导干扰引起一般单片机(甚至是没有很多对外连线的应用)程序走飞的例子常有所闻,这说明在电源部分防范不够的主机,完全有可能失常,包括将数据传输到 cc的过程。所以车用控制器组件要通过抗电源传导干扰的测试。
大部分host到cc的传送用的是并行方式,例如以字节方式把内容(ID、数据等)写入cc的有关寄存器里。也有少数采用串行方式,例如Microchip公司的MCP2515型号cAN通信控制器,它采用SPI串行接口来传送。即使将来大量使用32位MCU,这二种方式很可能依然会并存:带cc的host在MCU内部用字节交换数据;分立的host与cc可以采用并行或串行办式。但是host在计算时用的最小单位是字节,即使用串口送到cc,它也要有用并行方式写入的部分。当电源传导干扰引起传送失常时,这二种传送可能出错的位数是不同的。由于并行方式时l字节8位同时受干扰,出错的位数就较多,其后果看来就像突发错(burst error)。串行时可能先错一位,但如果干扰的持续时间长,就可能形成多位错,其后果也是发错。当然,一般host并行读写的过程较快,同样的干扰持续时间内可能有多次写入,出错就较多。
对于空间干扰,例如电磁场或重粒子流干扰,对传送出错的影响与上述分析不同,需要进一步研究,但后果是一样的。
1.2 出错位数
既然大部分host到cc的传送总经过并行方式,那么非常短时的干扰有可能引起的错就是1 个字节的错。并行传送时由于各位线路电路结构的同一性,同一极性信号的出错可能性相同,不同极性信号则不太可能同时翻转,所以传送内容的不同会影响出错位数。此时最坏的情形就是8位全为1或全为O,同时发生翻转。Host写一条消息一般不止写1字节到cc。由此看来,对抗假冒错的CRC Hatoml。ng距离最好为9。当然,即使能保证8位错能检出,由于要保护的数据不止1字节,这种对抗假冒错的CRC只是消除了一次干扰。从实际数据来看全0或全l的数据只占极少数,所以较小的Hamming距离仍有较大的拦截错误的概率。
1 假冒错
一条消息在整个发送/接收的过程中会受到干扰,从而产生数据位的改变。为了不被误收,现有的通信协议都有一些检错的措施,例如在传送的帧尾部附加校验数据。一般来说,较多采用循环冗余校验(CRc)方法,CRC生成多项式的长度与需要的检错Hamming距离以及需要处理的数据长度有关。CRC算法的Hamming距离是指码源。又如行车中误开车锁,则会带来新的风险。诊断系统字中无法用CRC算法检测出的出错位的个数。因此一个协议选用的CRC多项式反映了它要保证的Hamming距离。如果发生的位错误太多,CRC检验会产生漏判,把错误帧判为正常帧。例如CAN协议采用的 15位cRC生成多项式在CAN的最大数据帧长度内Hamming距离为6。即CRc可检验帧内5位错误。不过CAN的CRC是在去掉填充位后计算的,由于填充位而造成Hamming距离下降[1]是一个设计上的失误,这在后面介绍。
当考虑假冒错时,要分析漏检的情况。第一种是干扰时间很长,出错位数太多,超出了CRC检验的能力;第二种是通信控制器在发帧以前数据已有变化,而变化后的数据有了合法的身份,CRC检验只是保证这一假冒者不被错发。在这二种情况下,都可能产生假冒错。在CAN中如果数据位错误发生在消息的ID部分就产生了假冒错,就有可能把刹车当成加油。下面进一步讨论产生假冒错的情况。
1.1数据传送链
从数据的产生到数据的利用的角度来看,通信不只是由一个通信控制器(cc)到另一个通信控制器的过程,它还包括由主机(host)到通信控制器的来回过程,这个过程同样会出错。一般的通信干扰分析大多数着眼于来自空问的幅射干扰对串行传输的影响,这当然是很重要的途径,但在采取一定措施后,可以得到缓解,例如用屏蔽电缆、双绞线、屏蔽的ECU外壳等。在汽车环境里电源的传导干扰很大,国际标准IS()7637列出了典型的传导干扰形式,它们的波形上升或下降沿很陡,不但在正电压方向超出电源电压很多倍,而且会在负电压方向超出很多倍。电源的传导干扰引起一般单片机(甚至是没有很多对外连线的应用)程序走飞的例子常有所闻,这说明在电源部分防范不够的主机,完全有可能失常,包括将数据传输到 cc的过程。所以车用控制器组件要通过抗电源传导干扰的测试。
大部分host到cc的传送用的是并行方式,例如以字节方式把内容(ID、数据等)写入cc的有关寄存器里。也有少数采用串行方式,例如Microchip公司的MCP2515型号cAN通信控制器,它采用SPI串行接口来传送。即使将来大量使用32位MCU,这二种方式很可能依然会并存:带cc的host在MCU内部用字节交换数据;分立的host与cc可以采用并行或串行办式。但是host在计算时用的最小单位是字节,即使用串口送到cc,它也要有用并行方式写入的部分。当电源传导干扰引起传送失常时,这二种传送可能出错的位数是不同的。由于并行方式时l字节8位同时受干扰,出错的位数就较多,其后果看来就像突发错(burst error)。串行时可能先错一位,但如果干扰的持续时间长,就可能形成多位错,其后果也是发错。当然,一般host并行读写的过程较快,同样的干扰持续时间内可能有多次写入,出错就较多。
对于空间干扰,例如电磁场或重粒子流干扰,对传送出错的影响与上述分析不同,需要进一步研究,但后果是一样的。
1.2 出错位数
既然大部分host到cc的传送总经过并行方式,那么非常短时的干扰有可能引起的错就是1 个字节的错。并行传送时由于各位线路电路结构的同一性,同一极性信号的出错可能性相同,不同极性信号则不太可能同时翻转,所以传送内容的不同会影响出错位数。此时最坏的情形就是8位全为1或全为O,同时发生翻转。Host写一条消息一般不止写1字节到cc。由此看来,对抗假冒错的CRC Hatoml。ng距离最好为9。当然,即使能保证8位错能检出,由于要保护的数据不止1字节,这种对抗假冒错的CRC只是消除了一次干扰。从实际数据来看全0或全l的数据只占极少数,所以较小的Hamming距离仍有较大的拦截错误的概率。
嵌入式 电压 单片机 Microchip MCU 电路 总线 仿真 CAN总线 滤波器 自动化 相关文章:
- 蓝牙无线电调制解调器Siw1701原理与应用(02-19)
- 嵌入式移动数据库的关键技术(03-20)
- 在嵌入式SQL中怎样使用游标(08-12)
- 嵌入式Linux系统软件开发学习思路详细介绍 (08-20)
- 基于AVR单片机的嵌入式“瘦服务器”系统设计思想(03-11)
- 嵌入式系统设计中的存储碎片收集策略(05-04)