丁爱峰,胡胜云
(江铃汽车股份有限公司,江西 南昌 330001)
各行各业竞争激烈,汽车行业亦是如此,配置情况是客户选择的一个重要参数,配置越丰富被选购的概率就越高。目前,整车电器配置除传统的收放机、点烟器、仪表之外,有诸如MP5、TBOX、BCM、ABS、ADAS等功能越来越强大的电器供选择。越多的配置,意味着静态电流叠加越大,如果控制不好更容易导致蓄电池馈电。集成芯片作为电器件的“大脑”,在馈电情况下更容易出问题。
下面对某车型仪表出现芯片内部数据擦除或篡改故障进行软件设计分析,并通过模拟馈电工况,利用专用诊断仪读取内部数据,确认故障原因,提出新设计,并证实新设计的软件能有效地解决此类故障。
1)整车上电,仪表无任何反应,无指示灯、指针不自检、仪表液晶屏黑屏不显示。故障表装到其他车上,故障依旧。
2)整车上电,仪表指针不自检,其它功能正常。故障表装到其他车上,故障依旧。
用诊断仪读取故障仪表Dflash数据,发现仪表的4个表头的校表数据有不同程度的篡改或清空。所有仪表配置数据、随车信息表配置信息等都没有恢复到默认数据。初步确认芯片中 (Dflash)内存的表头数据丢失。图1是读取到的故障表转速表数据和正常表的转速表数据对比。可以看出,数据块中多个数据被擦除或篡改。
图1 故障表与正常表的转速数据对比
进一步分析发现,这些故障车库存时间较长,蓄电池亏电严重,电池电压接近0V。怀疑Dflash在非正常工作电压状态时,擦写操作异常导致数据丢失。
为确定Dflash在非正常工作电压状态时,擦写操作异常是否会导致数据丢失,设计实验如下。
1)取2块正常仪表,编号分别为1号件、2号件,连接上如图2所示台架。
2)软件对Dflash(写DTC)不断擦写。
3)电压调到MCU复位点附近 (电压表显示3.3V左右,万用表测试输入电压2.7V左右),此时电流0A和0.01~0.03A跳变,说明MCU在复位和启动之间不断转换。
图2 实验测试台
4)测试时间约30min。
试验后,2块仪表均出现故障,故障表现和前述一致。通过诊断工具读取ODO值、4个表头数据、配置数据,发现1号件的ODO数据由5kM变为0kM、部分配置数据被清零,图3为1号件试验前的配置数据,图4为1号件试验后的配置数据。
2号件的ODO数据由5kM变为0kM,水温表、转速表部分参数被清零,图5~图8分别为2号件试验前后水温表、转速表参数比较。
图3 1号件试验前的配置数据
图4 1号件试验后的配置数据
图5 2号件试验前的水温表参数
图6 2号件试验后的水温表参数
图7 2号件试验前转速表参数
图8 2号件试验后转速表参数
实验结果表明,整车持续低电压情况下,芯片内存Dflash擦除和写入数据过程存在异常,导致内存数据被篡改,造成仪表指针无动作和无法启动现象。
细读现有软件,逻辑框图分析如图9所示。
Dflash驱动会计算一个Checksums存储在Dflash对应区域,当初始化检测到Checksums对应不上就会启动锁死Dflash模块,导致初始化失败和读写不成功,进而启用看门狗复位,一直在内部重启,即导致仪表黑屏问题。Dflash的ODO或者表头数据或者诊断数据被改写,即导致仪表ODO清零和表头不动问题。这从软件逻辑上确认会导致故障。为杜绝此问题,应优化现有软件,增加低电压保护策略,如下所述。
1)判断仪表常电进入低电压 (<7V)时,禁止对Dflash进行读写操作。
2)判断仪表芯片进入低电压 (<4.06V)时进行Reset。
注:芯片支持的最大复位电压是4.06V。
在本案例中,面对仪表部分或全部功能失效的故障,通过诊断工具得知仪表DFLASH内部配置、表头等数据被篡改,并模拟故障发生时工况,确认软件没有低电压保护,整车持续低电压情况下,芯片内存Dflash擦除和写入数据过程存在异常,导致内存数据被篡改,造成仪表指针无动作和无法启动现象。最后通过优化软件,非常便捷地完成了优化设计,成功解决了仪表因数据篡改而失效的问题。