基于UDS协议的地铁制动系统控制器软件升级方法研究

2022-09-16 01:54孙红敏杜运哲杨正专胡子佳
轨道交通装备与技术 2022年4期
关键词:字符上位编程

孙红敏 杜运哲 杨正专 胡子佳

(南京中车浦镇海泰制动设备有限公司 江苏 南京 210031)

地铁列车调试和运营阶段,制动系统控制软件需要根据地铁列车现车运行情况进行优化和修正,将涉及现车软件升级操作,而地铁制动系统控制器安装在地铁列车车体下方,传统软件升级方式需要拆卸控制器通过专用烧录工具对软件进行升级,操作不便,耗时耗力,需要寻找一种更加方便快捷、安全有效的软件升级方法。UDS(Unified Diagnostic Services)协议是国际ISO统一诊断服务协议标准,定义了一套规范化和高安全性的控制器软件升级服务标准[1]。目前基于 UDS 协议的软件升级方法在汽车电子领域应用广泛,各大主流汽车生产商都基于UDS协议开发了软件升级工具[2]。因此,本文针对地铁制动系统控制器开展了基于UDS协议的软件升级方法研究,将 UDS 协议中控制器在线升级相关的诊断指令集成到控制器BootLoader程序中,通过上位机软件配合控制器BootLoader程序实现对应用软件的在线升级。

1 UDS协议

UDS(Unified Diagnostic Services)协议即ISO 14229道路车辆统一诊断服务协议,该协议为OSI模型中的一个应用层协议,该协议支持CAN、LIN、Flexray、Ethernet和K-line常用汽车通讯总线[3]。

在UDS协议中,控制器作为诊断服务器,诊断设备作为客户端,客户端使用应用层服务请求在1个或多个服务端中执行诊断功能。服务端使用应用层服务将请求的诊断服务提供的响应数据发送回客户端[4]。UDS协议定义了6大类26种诊断服务,每种服务都有独立的SID(Service ID)。UDS协议定义了诊断服务的基本框架,主机厂和零部件供应商可以根据自身需求开发自有诊断服务工具,实现诸如故障读取、参数设置、软件程序升级等多种诊断服务功能[5]。

2 控制器软件映像文件分析

地铁制动系统控制器采用的微控制器(MCU)为恩智浦公司的MPC56系列MCU。该型控制器FLASH存储容量为2 MB,编译完成的映像文件格式为Motorola S-Record,文件后缀名为“.S19”。

2.1 Motorola S-Record格式

Motorola S-Record格式允许在2个计算机系统之间上传和下载二进制文件,该格式在计算机系统与摩托罗拉微控制器和微处理器的仿真器或评估板之间传输程序和数据时被广泛使用。Motorola S-Record格式文件内容由多个S记录组成,文件内容中的一行为一个S记录,每个S记录由多个特殊格式ASCII字符组成,单个S记录最多由156个字符组成[6]。每个S记录由记录类型、字符长度、存储地址、代码/数据、校验和5个部分组成,组成形式如图1所示。

图1 Motorola S-Record格式文件单个S记录组成图

(1)记录类型:由2个ASCII字符构成,描述该条记录的类型,共有 S0、S1、S2、S3、S5、S6、S7、S8、S9这9种类型。

(2)字符长度:由2个ASCII字符构成1个十六进制整型值,描述了该条记录后续包含的ASCII字符对数。

(3)存储地址:由4、6、8个ASCII字符构成1个十六进制整型值,描述了数据字段需要被载入的存储地址,该部分字符长度取决于描述存储地址的字节长度。

(4)代码/数据:由0-64个ASCII字符构成,每2个ASCII字符构成1个字节的数据,该字段描述了需要载入存储地址的代码或数据内容。

(5)校验和:由2个ASCII字符构成1个十六进制的整型值,将前面所有字段的ASCII字符每2个组成1个字节的十六进制整型值,将所有字节数值相加求和,保留和的最低2个字符为1个字节,校验和为该字节补码。

实际的Motorola S-Record格式存储示例如图2所示。

图2 Motorola S-Record格式文件示例图

2.2 映像文件地址划分

MPC56系列单片机共拥有2 MB的片内代码存储空间,地址范围0x00000000~0x001FFFFF。其中前272 KB用于存储BootLoader程序,地址范围:0x00000000~0x00043FFF。剩下的地址空间用于存储测试应用程序代码,地址范围:0x00044000~0x001FFFFF,地址划分示意如图3所示。

图3 映像文件地址划分示意图

3 软件升级

软件升级过程基于UDS服务协议实现,上位机发送不同的服务ID号给控制器BootLoader程序来逐一实现软件升级步骤,完成软件升级过程,主要的步骤为重编程模式进入、预编程过程、主编程过程。

3.1 重编程模式进入

控制器在运行过程中收到上位机发送的服务ID号为0x10,子功能号为0x02的报文时,控制机将在特定存储区的外部重编程请求标志有效,之后重启控制器。

控制器重启后首先进入BootLoader程序,BootLoader程序对控制器进行简单初始化后,对特定存储区的外部重编程标志进行检查,若外部重编程标志有效,则BootLoader程序将进入重编程会话模式,等待上位机发送新的报文信息,流程图如图4所示。

图4 重编程模式进入流程图

3.2 预编程过程

预编程过程用来为要下载的控制器做重编程前的网络准备,同时也进行提高软件下载速度的相关操作,预编程过程流程如图5所示:

图5 预编程过程流程图

(1)进入扩展诊断会话模式:上位机通过诊断会话控制(0x10)服务,使控制器进入扩展诊断会话模式,为后续禁止控制器间的正常通信和控制 DTC 设置做准备。

(2)读取设备名称和项目信息: 上位机通过标识符读取数据(0x22)服务读取控制器设备名称和项目信息,上位机确认当前设备和项目与即将更新的软件一致后继续后续操作。

(3)检查重编程条件:上位机通过例行控制(0x31)服务启动控制器重编程条件检查流程,控制器将按照设定的检测流程对重编程条件进行检验,若重编程条件不满足,则控制器不执行重编程操作并向上位机发送否定响应。

(4)停止DTC服务:上位机通过控制诊断故障码(DTC)设置(0x85)服务停止控制器DTC 状态位的更新,这样可以提升后续的软件升级速度。

(5)禁用非诊断通信功能:上位机通过通信控制(0x28)服务请求禁用控制器非诊断报文的发送和接收,可以避免控制器正常通信占用带宽资源,有助于提升软件升级速度。

预编程过程结束后进入重编程过程,继续进行软件升级工作。

3.3 主编程过程

主编程过程中将真正执行软件升级工作,主编程过程流程如图6所示。

图6 主编程过程流程图

(1)进入重编程会话模式:上位机通过诊断会话控制(0x10)服务,使控制器进入编程会话模式。

(2)安全访问控制:为了提高系统的安全性,控制器会对重编程请求进行安全认证,安全认证通过后才可正常进行重编程操作,否则控制器拒绝执行重编程操作。安全访问流程为上位机通过安全访问(0x27)服务请求控制器安全种子,下位机将安全种子发送给上位机,上位机接收到控制器安全种子后进行计算得到上位机安全种子后将上位机安全种子发给控制器,控制器对上位机安全种子进行解析,若与自身种子配对,则控制器解锁成功,可以进行后续重编程操作,否则控制器将拒绝执行重编程指令并发送否定响应。

(3)FLASH驱动下载:为了提高系统安全性,防止软件程序跑飞并异常调用FLASH驱动程序擦除软件代码情况出现,在软件代码设计时控制器中并没有FLASH驱动程序的任何备份。所以,为了实现对软件程序的升级,上位机需要依次通过请求下载(0x34)服务、传输数据(0x36)服务、请求传输退出(0x37)服务将FLASH驱动备份到控制器制定内存中,驱动下载完成后上位机通过例行控制(0x31)服务启动控制器“检查编程完整性”例程来检查FLASH驱动程序的正确性。

(4)“指纹”信息写入:在软件升级之前,上位机需要通过标识符写入数据(0x2E)服务将“指纹”信息写入控制器的指定存储区,“指纹”信息包括上位机品牌、型号、主机名、物理地址、IP地址等信息。上位机通过按标志符读取数据(0x22)服务可以读取控制器“指纹”信息,“指纹”信息可以实现对本次重编程操作上位机的信息追踪。

(5)应用软件擦除:上位机通过例行控制(0x31)服务启动控制器“应用程序擦除”例程,控制器执行该例程对应用程序FLASH存储空间全部擦除,同时控制器将特定存储区的应用软件标志位置为无效。

(6)应用软件下载:上位机通过请求下载(0x34)服务、传输数据(0x36)服务、请求传输退出(0x37)服务将新的应用软件代码写入对应的FLASH地址。

(7)数据检查:上位机通过例行控制(0x31)服务启动“检查编程完整性”例程和“检查编程依赖性”例程,对下载完成的应用软件代码进行完整性和依赖性检查,检查合格后将特定存储区的应用软件标志位置为有效。

(8)复位控制器:上位机通过ECU复位(0x31)服务,使用物理寻址方式,使目标控制产生硬复位,控制器复位并退出重编程过程。

(9)进入默认会话模式:上位机通过诊断会话控制(0x10)服务,使控制器进入默认会话模式,进入默认会话模式后控制器网络通信恢复,DTC服务开启,完成控制器软件升级完成。

4 软件升级功能验证

根据上述软件实现过程,使用JAVA语言进行上位机程序设计,使用C语言进行BootLoad程序设计,软件设计完成后搭建验证平台对软件升级功能进行实际验证。

4.1 验证环境搭建

验证环境搭建情况如图7所示,控制器使用的MCU为MPC56系列,该控制器具备以太网通信模块,配置后可以使用以太网通信接口与外部设备通信,映像文件存储格式为S-Record,文件后缀为“.s19”。上位机程序在电脑端运行,电脑和控制器之间使用网线连接,两者之间采用以太网方式通信。

图7 验证平台示意图

4.2 功能验证

将控制网口与电脑网口使用网线连接完成后打开上位机软件,选择需要刷新的控制器板卡,设置板卡功能寻址地址和物理寻址地址,选择FLASH驱动文件,选择需要升级的应用软件程序“.s19”文件,选择数据文件,然后勾选下载程序文件和下载数据文件选项,再点击开始下载按钮,进入程序下载流程。在通讯日志界面显示当前正在进行的操作步骤,软件下载失败时会有提示,可以通过查看下载失败时的步骤诊断失败原因。通过多次测成功完成了地铁制动系统控制器的软件升级工作。实际验证结果表明,根据上一章基于UDS协议设计完成的软件升级过程成功实现了地铁制动系统控制器在线升级操作。上位机操作界面如图8所示。

图8 上位机操作界面

5 结论

本文设计了一种基于UDS协议的地铁制动系统控制器软件升级方法,并搭建试验验证环境完成了地铁制动系统控制器软件升级方法的验证。试验结果表明,该方法方便快捷、可靠有效地实现了地铁制动系统控制器软件在线升级,解决了传统软件升级方式需要拆卸控制器耗时耗力及操作不便的问题,提升了软件维护效率。

猜你喜欢
字符上位编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
论高级用字阶段汉字系统选择字符的几个原则
纺织机上诞生的编程
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
特斯拉 风云之老阿姨上位
基于ZigBee和VC上位机的教室智能监测管理系统