利用XC2300系列微控制器实现CAN网络安全
CAN收发器引起的错
CRC或存储检查模块
为保证程序和数据等存储信息的完整性,需要进行CRC(循环冗余检查)。CRC的值通常针对信息块进行计算,并被储存在某个存储区域。在检查信息时,重新计算CRC的值,并与储存的CRC值对比。这既可在启动等时点单次进行,也可在运行期间定期进行。CRC也能像CAN协议那样保护数据通信,还能保护要求最高数据完整性的单个关键安全数据或变量。当然,软件也能非常灵活地完成CRC计算,但使用专用硬件的效率更高,因为后者可提高计算速度并将CPU从此类任务中解放出来。利用DMA(直接内存存取)等读写功能,可以在无需CPU参与的情况下,在后台进行CRC检查,将CRC检查与外设初始化分开。
FLASH 和RAM上的ECC
在存储区域使用CRC机制并由CPU启动的同时,可以延伸CRC存储内容保护理念,在存储模块本身增加这类机制。由特殊ECC(纠错码)多项式生成的附加存储校检和来保护单个存储数据。通过这个校检和,能检测到数据的意外变化,并在将数据提交CPU之前自动予以纠正。这是CRC和ECC的主要区别。例如,可以检测到两个比特错误,其中一个比特可被纠正,具体取决于所采用的多项式和存储ECC值的长度。在进行写入访问时,生成ECC值,除存储所写入的数据外,所生成的ECC值也被存储。在进行读取访问时,数据的ECC被重新计算,并自主地与所存储的值对比。该机制由硬件执行,从系统的角度来看,不需要增加总线周期。目前,ECC一般用于闪存,但出于安全需要,RAM存储器也采用ECC。
图4 利用分析器模式构建低成本冗余路径,检测被阻断或受到干扰的报文传输
结语
英飞凌全新的XC2300系列微控制器专为安全关键系统而设计,可支持多个并行的CAN网络。网关功能实现了不同CAN网络间的内部连接, MultiCAN模块的分析器模式可增加冗余,以检测潜在错误。其他特性如上次错误代码(LEC)位域、可读的全部错误计数器以及错误报警级别的灵活下调,都使潜在错误更易被发现。最后但并非最不重要的特性还有:MPU(存储保护单元)、CRC(循环冗余检查 ) 和ECC(纠错码)等,这些特性可检测关键危险因素,确保运行的软件安全。只有将各种硬件和软件特性集合在一起所构成的完整系统,才能确保CAN系统适用于应用。