【摘 要】随着软件定义汽车时代的到来,汽车域控制器的软件体量越来越大,使用传统的诊断服务做软件升级将无法满足升级时间需求,已有OEM使用一种新型的升级方法来提升软件升级的效率,本文将从汽车电子测试的角度出发,探讨这种新型升级的测试方案。
“智能化、网联化、电动化、共享化”已成为汽车产业变革的必然趋势,汽车产品逐步由传统代步机械工具向新一代具备感知和决策能力的智能终端转变。“四化”变革趋势的需求使得汽车的电子电气架构由分布式处理器架构逐步向域控制器架构和中央计算平台架构演变,汽车软件将成为定义整车功能的关键[1]。而车内的域控制器承担了新四化的主要功能,电子架构也大多采用MPU/SOC+MCU方案,如智能网联域控制器、智能座舱域控制器、智能驾驶域控制器等,域控之间的通信也主要使用车载以太网。针对域控制器的升级软件大小往往是几百MB甚至几GB,使用传统的诊断服务实现软件传输与更新,无法有效利用以太网总线带宽,对产线升级或者OTA升级的效率都会产生影响。针对大体量的软件升级,已有OEM使用一种新型升级方案,基于SOA与一种文件传输协议实现域控制器的软件升级。
1 软件升级方案概述
1.1 基于DoIP与UDS协议的升级方案介绍
UDS协议是诊断服务的标准规范,规定了诊断服务的具体命令[2]。使用UDS服务刷写是目前更新汽车控制器软件的主要方案。针对域控制器,主要使用DoIP+UDS协议来实现刷写方案。DoIP(Diagnostic communication over Internet Protocol)是一种基于互联网协议的诊断。基于该诊断协议,主机厂和售后工程可以对车辆进行诊断、刷新等操作[3]。在此种方案中,DoIP用来传输诊断数据,通过UDS的0x34/0x38、0x36、0x37诊断服务实现升级软件的控制与传输,文件的传输主要通过0x36服务。如图1所示,DoIP的报头长度为8个字节,另外在净荷中有4个字节用来表示逻辑地址,在0x36传输数据过程中,UDS中的SID+blockSequenceCounter占据两个字节,所以每次传输一次数据,有14个字节的占用。
图1 DoIP报文结构
另外一方面,由于协议分层,域控制器收到TCP数据后,需要将数据分配给DoIP协议栈处理,再分配给UDS协议栈处理,每个层级都需要给相应的ACK,如图2所示,DoIP数据传输时域控制器需要响应DoIP 0x8002报文(使用简化版DoIP时不需要),在UDS层收到诊断请求后,需要回复肯定响应,Tester才能继续发送诊断数据。
图2 数据传输分层
基于以上两点,DoIP+UDS的方案受到报头长度、协议分配处理、协议响应影响数据传输效率,无法有效利用以太网总线带宽。
1.2 基于SOA与文件传输协议的域控制器软件升级方案介绍
在软件定义汽车的时代,越来越多的OEM选择基于SOA架构开发软件。SOA是从遵循服务导向原则的可重用服务中构建复杂软件系统的方法[4],即面向服务的架构;目前在汽车行业实现SOA架构的主要有SOME/IP与DDS两种协议;软件更新可以在SOA架构下采取新的方案;已有OEM使用一种实现了SOA架构的协议与一种文件传输协议,来实现域控制器的软件升级。以下简称“SOA协议”和“文件传输协议”。
主要的流程如图3所示,由主节点来发起升级任务,此流程主要在车内进行。主节点首先通过SOA协议给从节点建立升级任务,再将升级包通过文件传输协议发送给从节点,同时通过SOA协议控制升级流程;文件传输协议基于可靠TCP传输协议,在传输数据过程中,利用TCP传输数据的可靠性与速度,无其他上层协议的报头占用,无上层协议的转换,可以实现升级包的稳定、可靠、快速传输,并且流程简单。相比使用诊断服务实现升级,此流程简洁高效,能快速实现升级软件的目的。
图3 基于SOA协议升级流程简介
2 基于SOA与文件传输协议的域控制器升级测试方案介绍
2.1 测试用例
基于SOA与文件传输协议的域控制器升级测试,主要分为主节点测试与从节点测试。针对从节点升级测试,主要分为以下几个部分:①正向流程测试;②状态跳转测试;③故障码测试;④场景测试。测试内容如表1所示。
表1 从节点测试用例分类
针对主节点升级测试,主要分为以下几部分:①主节点自升级测试;②流程控制测试;③故障处理测试;④场景测试。测试内容如表2所示。
表2 主节点用例测试分类
2.2 测试环境
使用Vector的CANoe+VN56xx来开发测试用例与执行测试,加上基本外设,如程控电源等,可以快速搭建好测试环境,如图4所示。在自动化测试中,使用CANoe仿真主节点,主要实现的是SOA协议与文件传输协议两个模块功能:①仿真CANoe作为主节点,发送SOA协议请求给DUT,来控制升级流程;②仿真CANoe作为文件传输协议Server,收到DUT的请求后,将升级包发送给DUT。测试脚本框图如图5所示。
图4 测试环境
图5 测试脚本框图
2.3 测试示例
CANoe仿真主节点给从节点建立升级任务后,从节点请求升级包路径,仿真主节点响应升级包路径,从节点使用文件传输协议获取升级包。仿真主节点使用文件传输协议发送升级包,在传输过程中可以使用SOA协议周期读取传输进度,等待传输完成后,仿真主节点发送安装请求,在安装过程中周期读取安装进度。图6是传输升级文件阶段的测试报告,从报告中可以查看具体的升级流程,并能查看文件传输进度,图7是测试数据的示例。文件传输完成后,则通过SOA协议控制安装升级包,如图8所示。通过测试脚本,将升级流程简化为报告,帮助测试人员将精力从大量的数据中抽出,集中在测试流程的分析上。
图6 建立任务与传输过程测试报告
图7 一种“文件传输协议”传输数据
图8 安装升级包测试报告
3 结论
软件带动着汽车技术的革新,引领汽车产品差异化发展潮流,正逐渐成为汽车信息化、智能化发展的基础和核心[5]。同时,越来越复杂的软件对软件开发、测试都带来巨大的挑战,安全、可靠、高效的软件更新是软件持续优化迭代的重要保障。在汽车软件研发阶段中,软件更新功能可靠性与稳定性,需要通过设计测试用例并通过测试实施,确保软件更新功能满足需求。本文介绍基于SOA与文件传输协议的域控制器升级测试方案,其在汽车电子领域已广为接受并采用。
参考文献:
[1]马承恩.智能汽车软件产业发展趋势分析[J].软件和集成电路,2021(10):56-59.
[2]唐恒飞,王效金.基于UDS协议的汽车控制器刷写软件设计[J].智能计算机与应用,2021,11(1):102-105.
[3]黄志坚,姜立标.基于Ethernet的车载ECU诊断刷新研究[J].汽车零部件,2021(7):17-21.
[4]李丹,郑红丽,回姝,等.智能网联时代汽车智能座舱操作系统的发展[J].汽车文摘,2022(5):1-6.
[5]方祥毅,张永嘉.大数据背景下软件定义安全的服务架构研究与分析[J].数码世界,2018(11):108-109.