ECU模块的外围器件,还是微控制器本身,产生故障的可能性还是存在的。最关键的地方在于故障应可以自动检测出来,且当某些器件失效时,系统应能作出快速反应,采取相应的保障措施来维持基本功能。目前的微控制器技术使得系统可以采取合适的失效策略和良好的程序设计,使得系统能发现失效情况的几率有很大的提高。失效模式及影响分析就是一种可以识别潜在故障的模式、一种良好的检测策略,同时也是一种抑制方法。
一、硬件失效保护策略
硬件在失效保护中起着很重要的作用,它可以检测一些失效模式,并可以对这些模式作出反应。有时候单独的软件系统很难检测外部设备的失效,这时硬件失效保护策略就可以发挥其作用了。假设采集过程中,电路出现过载,且烧毁一个端口引脚,导致系统错误地读取并执行某一操作,这个失效的情况对于软件来说是不易检测的,因为此时软件无法通过烧毁的引脚读取信号的值。汽车微控制器的硬件失效保护策略主要有看门狗定时器、外部失效保护设备、振荡器失效检测、冗余交叉校验等几种。
1.看门狗定时器
看门狗实际上是一个16位计数器,它的工作与否可通过看门狗特殊功能寄存器进行使能或禁止设置。一旦进行了使能设置,系统就给看门狗一个数(16位微控制器为216,即65536),程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间(工作在16MHz的16位微控制器为4.1ms) CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0,微控制器就认为程序没有正常工作,已产生失效,则会强制整个系统复位。此外,看门狗定时器还可以在程序陷入死循环的时候,让微控制器复位而不用整个系统断电,从而保护硬件电路。看门狗定时器对微控制器提供了独立的保护系统,当系统出现故障时,超过一定时间后,看门狗就会向控制器发出RESET信号。
2.外部失效保护设备
目前的微控制器上普遍集成有外部失效保护设备,这些设备形式有多样,有的是额外的微控制器,有的采用专用集成电路。这些设备的主要作用都是监测主控制器的工作状况,并根据实际情况采取合适的对应措施。
失效保护设备通常对主控制器发送脉冲信号,若主控制器未能及时地正确反应,失效保护设备便认为主控制器工作出现不正常,此时会让微控制器复位,同时使ECU在失效模式下工作。更多的失效保护设备采取监测几个重要电路的方法进行保护,这些电路通常有:电源的电压、停止或递减振荡频率、短路/断路信号输入等。
3.振荡器失效检测
在汽车微控制器工作过程中,有些原因会造成时钟源(通常为振荡器)失效。由于很多微控制器属于静态设备,很难检测时钟设备的频率是否正常。振荡失效检测电路可以检则这种失效情况,它集成在微控制器中。当振荡器时钟频率下降到一定值时,失效检测电路产生中断或产生复位信号。
4.冗余交叉校验
冗余交叉校验也是一种较普遍的失效保护策略,这种策略是在正常的模块中额外设计个冗余的备用处理器,用于执行微控制器代码的部分子程序、处理关键的输入数据及周期性地进行交叉校验,以确保微控制器的正常工作。如果备用处理器与微控制器之间的数据交换互不相关,系统将初始化失效保护子程序。
二、软件失效保护策略
软件失效保护策略在监测失效模式方面非常有效,它可使用合适的程序流进行保护。尖噪声是使软件失效的一种,它会导致外部存储系统取指时获得错误的地址。例如, ROM或EPROM存储器发生尖噪声时,系统有可能会从非法的中断向量地址中取得ISR的起始地址。此时中断的产生速度也比较快,以至于系统未能及时采取措施。目前,软件失效保护策略可以轻易地处理这类失效模式。以下是可以处理部分失效模式的几种软件失效保护策略。
1.校验和
对于ROM或EPROM存储器来说,数据破坏的错误是非常有可能发生的。监测这种失效的方式通常是在初始化用户程序时计算校验和。校验和是在每一个ROM(只读储存器,具有断电后信息不丢失的优点,通常用来存储不变的用户代码及数据)或EPROM(通常应用在用户代码需要经常改变的场合)存储空间中执行完成一些算术操作后所得到的终值。最后得到的校验和将与存储的校验和比较,如果两者匹配,说明ROM或EPROM的内容是完整的,若不匹配,系统将会调用错误子程序。校验和的计算是通过对所有存储空间的相加实现的,执行加法时,迸位可以忽略,最后得到一个字节或字的校验和。
2.未使用的中断向量
在具体的应用中,所有的中断源同时都允许的情况应该是很少的。但若在这种情况下,当程序按正常的工作方式,试图指向下一条未使用的中断源时,将会产生软件失效。此时软件失效保护系统将执行相应的失效保护子程序。这些子程序可以是非常简单的复位程序,也可以非常复杂,这主要取决于程序员的意愿。
3.未使用的存储空间
当程序开始执行未使用的ROM或EPROM存储空间时,软件保护策略应能监测到。在微控制器工作过程中,用户代码不太可能完全占满ROM或EPROM的阵列空间。因此可以在未使用的存储空间中存储一些指令的操作码,如复位指令。
4.未实施的操作码中断向量
微控制器通常设计有专用的一个或多个用于失效保护的中断向量。未实施操作码中断就是用于监测错误的指令取址。当不支持的操作码取出准备执行时,系统就会执行相应的中断服务子程序。这样的中断服务子程序包括失效保护子程序,用于在具体的应用中标记错误的地址。