DIY编程器网

标题: 利用XC2300系列微控制器实现CAN网络安全 [打印本页]

作者: admin    时间: 2015-4-27 20:26
标题: 利用XC2300系列微控制器实现CAN网络安全
XC2300是专门针对汽车安全应用,特别是气囊系统和电动助力转向应用而设计的新型微控制器系列。该产品系列旨在使汽车电子安全系统实现可扩展性、软硬件重复使用以及兼容性。XC2300系列配备高性能中央处理器(CPU)和丰富外设。本文以MultiCAN模块为例,说明如何利用这些特性来支持安全应用,以及如何进一步通过硬件支持来满足对软件及CAN软件的特定安全要求。
  MultiCAN 简介
  MultiCAN是一种经过验证的可扩展模块,这个模块最多可提供四个与ISO 11898完全兼容的独立CAN节点。所有CAN节点均可共享的报文对象的数量多达128个。链表将报文对象分配给特定节点,从而为系统布局提供了极大的灵活性。报文对象通过内部联系,实现自主网关功能。未被分配给特定节点的报文对象可用于FIFO结构。所有节点均支持分析器功能,作为总线无源组件与总线系统连接。

图1 拥有多达4个独立CAN节点和128个报文对象的XC2300安全产品系列MultiCAN模块

       灵活的FIFO结构
  CAN 节点共享的所有报文对象可分别被单独地分配给特定的链表,而每个链表则被绑定到特定的节点。例如,链表1对应节点0,链表2对应节点1,以此类推。链表0是对应所有未被分配的报文对象的附加链表。这些链表采用双链式链表结构。这种结构为在不同CAN节点上使用报文对象提供了高度灵活性。同时,未被使用的报文对象可用于FIFO结构。而这些FIFO既可被分配给特定的CAN节点,也可被分配给一个未使用节点的链表。由于仅需将输入到节点的报文与分配给该链表的报文对象进行比较,报文对象的判断速度得到提高。当然,需要将FIFO基础报文对象链接到特定的节点链表。
  网关功能
  嵌入式应用中通常有多个CAN网络,以适合该应用的不同速度运行。有些报文需要从一个总线系统传输到另一个总线系统。网关功能对实现上述应用非常有效,而且还有可能将网关和FIFO功能结合起来。例如,在将出现频度很高的报文从高速CAN总线传输到低速 CAN总线时,将网关和FIFO功能结合起来,就有可能在不增加CPU负荷的前提下实现这种报文传输。
  分析器模式
  CAN网络的所有节点通常都采用CAN协议,即对报文做出反应并进行确认。在分析器模式下,CAN节点监听总线,不主动利用协议进行传输。该特性对于多种应用具有价值。例如在不影响总线运行的情况下检测波特率,该特性还可以用于实现对运行中的CAN网络进行热插拔。更多优点包括同步分析和驱动器延时测量。这可用于帧定时测量,并根据物理CAN总线情况调整位定时值。它还能提供所检测到错误的详细信息,便于分析出错原因。比如,上次错误代码(LEC)位域、所有错误计数器的可读性和错误报警级别的灵活下调。
  用于安全应用的分析器模式
  安全应用具有特殊要求,例如在关键路径中增加冗余部件。在CAN网络中,CAN节点和CAN收发器就处于这种关键路径中。通过节点进行的报文传输可能会被阻断,更糟糕的是,总线上其他节点的通信也可能会受到干扰。英飞凌XC2300系列微控制器最多可提供4个独立的CAN节点,并可在多种配置下利用分析器模式进行错误检测。利用2个CAN节点和2个独立的CAN收发器,可检测从物理CAN总线到报文存储器的错误。第二个CAN节点以分析器模式运行,监听总线,不主动利用协议进行传输。这种配置的优点在于,CAN收发器引起的错误也能被检测到。其缺点在于成本。另一种配置是放弃第二CAN收发器,这种配置在成本上更低,但不能检测到收发器引起的错误。在两种配置下,节点均被异步处理,原因是内部协议处理器按一个报文对象接着另一个的顺序请求信息。使用两个不同的报文对象并通过软件进行比较,以检验所收到信息的正确性。这样甚至能发现协议处理器和报文存储器之间的问题。

图2 利用网关功能自主传送CAN报文,毋须额外增加CPU负荷

       软件是内置安全应用中最关键的部分。由于软件通常被认为“不可信”,必须采取强制性的特殊措施,以满足安全要求。微控制器中集成的附加硬件可以满足这些要求。即将推出的XC2300系列新型器件可提供下述硬件特性。
  存储器保护单元
  存储器保护单元(MPU)区分不同的软件任务,为每项任务分配存储区,并在其各自指定的存储区内运行每项任务。如果某项任务试图访问未被分配给该项任务的存储区,该访问将被阻止,并触发一个自陷(trap)。还可采取其他措施,如向外部看门狗发送出错报文、关闭引起错误的任务、切断安全路径或者甚至重启微控制器。MPU将程序存储区、数据存储区和I/O存储区分开,控制读写,并执行存储器访问。

图3 利用分析器模式构建完整的冗余路径,检测被阻断或受到干扰的报文传输(包括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系统适用于应用。




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2