前言
传统的汽车ECU通过诊断刷写来实现软件更新,数据量较小,一般在几十KB到几十MB;随着汽车的新四化进程持续推进,汽车上的域控制器或中央计算器的架构已经演变为MPU/SOC+MCU的方案,而针对MPU/SOC软件升级的数据量往往是几百MB甚至几GB,使用DoIP加诊断服务(0x34、0x36)来传输升级包数据,过程比较繁琐,并且带宽利用率较低。通过DoIP发送36服务,需等待传输层的应答即TCP ACK,再等待DoIP的0x8002报文(简化版不使用0x8002),最后必须等待控制器的诊断肯定响应才能继续发送数据。因此,针对数据量较大的升级包,各厂商纷纷采用多种新的方法来实现域控制器软件升级。
上海北汇信息根据既有的经验,为大家介绍其中一种抛弃了传统方案,一种新型软件升级技术及测试方案,该方案基于“一种支持SOA的协议 +传统IT的传输协议”组合实现。以下简称“SOA协议”和“IT协议”。
域控制器升级流程简介
图1升级流程示意图
如上图所示,实现从节点域控升级,是由主节点来发起升级任务,此流程主要在车内进行。主节点首先通过“SOA协议”给从节点建立升级任务,再将升级包通过”IT协议”发送给从节点,同时通过”SOA协议”控制升级流程;相比使用诊断服务实现升级,此流程简洁高效,能快速实现升级软件的目的。
测试用例的构成
针对从节点的升级测试,主要分为以下几个部分:1.正向流程测试;2.状态跳转测试;3.故障码测试;4.场景测试
图2部分测试用例
域控制器升级测试的主要环境
北汇主要使用Vector的CANoe+VN56xx来开发测试用例与执行测试,加上基本外设,如程控电源等,可以快速搭建好测试环境,示意图如下所示:
图3测试环境示意图
在测试脚本中,使用CANoe仿真主节点,主要实现的是”SOA协议”与”IT协议”两个模块功能;1.仿真CANoe作为主节点,发送”SOA协议”请求给DUT,来控制升级流程;2.仿真CANoe作为”IT协议” Server,收到DUT的”IT协议”请求后,将升级包通过”IT协议”发送给DUT。
图4测试脚本框图
域控制器升级测试实例
数据传输过程
CANoe仿真主节点给从节点建立升级任务后,从节点便发送”IT协议”请求升级包路径,仿真主节点响应升级包路径,从节点则发送”IT协议”获取升级包。仿真主节点使用”IT协议”发送升级包,在传输过程中可以使用SOA协议周期读取传输进度,等待传输完成后,仿真主节点发送安装请求,在安装过程中周期读取安装进度。以下是测试报告和测试数据的示例。
图5建立任务与传输过程测试报告
图6安装升级包测试报告
总结
本文介绍实现域控制器升级的一种新兴技术方案,其在汽车电子领域已广为接受并采用。此方案相比使用诊断服务实现升级,主要有以下两个优点:
升级流程简洁高效
传输升级包效率更高