APP下载

基于CAN的UDS服务BootLoader设计

2021-11-08李娟刘鑫张玉敏张海红

电脑知识与技术 2021年27期

李娟 刘鑫 张玉敏 张海红

摘要:智能汽车对于汽车电子控制单元(ECU)的升级非常频繁,需要从汽车中拆出ECU更新升级软件,该种操作会增加拆装风险和软件升级成本。基于统一诊断服务(UDS)的操作系统启动加载程序升级方法能够解决以上难题,利用UDS的上位机通过控制器局域网络总线连接升级,可以避免从智能汽车上拆卸ECU,为后续软件更新提供方便。该种升级方法也使软件的烧录流程统一规范,可以兼容不同ECU设备,方便不同厂商之间共同调试。

关键词:操作系统启动加载程序;统一诊断服务协议;控制器局域网络总线

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2021)27-0129-03

Abstract: Smart cars frequently upgrade their electronic control units (ECUs). The ECU needs to be removed from the car to update the software. This operation increases the risk of disassembly and installation and the cost of software upgrades. The upgrade method of operating system boot loader based on Unified Diagnostic Service (UDS) can solve the above problems. Upgrade the upper computer using the UDS through the controller local area network bus connection. Removing the ECU from the smart car can be avoided. Provide convenience for subsequent software updates. This upgrade method also makes the software burning process a unified standard. It can be compatible with different ECU devices to facilitate joint debugging between different manufacturers

Key words: BootLoader; UDS agreement; CAN

1 背景

随着智能汽车的逐步推广和使用,汽车的各方面功能在不断增加,软件的更新周期开始变得越来越短,软件烧录的成本开始增高。控制器局域网络总线(CAN)作为汽车通信的主要方式,具有完善的通信标准,也为UDS服务和操作系统启动加载程序(BootLoader)提供可靠的保障。智能汽车通过CAN总线来部署实现软件升级,是一项低成本、高效、操作简单且被广泛利用的技术。

UDS统一诊断服务由ISO-14229系列标准定义[1],是完善的国际标准协议。主机厂商和零部件生产商都会按照这种统一的标准进行生产。采用统一的诊断服务,使软件开发和硬件生产更加高效,能够降低生产开发周期。UDS也具有完善的安全服务流程,CAN具有可靠性的数据完整性机制。基于CAN和UDS服务的BootLoader升级方法使软件升级更新具有快速、可靠、易用、安全等特点。

2 BootLoader相关的UDS服务

2.1 诊断类型

虽然有很多服务,但是一般常用的有15种左右[2]。BootLoader一般涉及的诊断服务有0x10诊断会话控制,切换会话模式,0x11ECU复位操作。0x27解锁,用于解锁ECU安全限制。0x3E保持会话。0x2E数据的写入操作,诊断仪通过这个服务写入数据到ECU。0x22数据读取,主要读取ECU上面的内部数据。0x31例程控制、触发ECU执行操作。0x34请求下载,诊断仪向ECU烧写软件前的确认信息。0x36数据传输,来给ECU烧写数据。0x37请求退出。0x85啟动或者暂停DTC,0x28打开或者关闭CAN报文,0x85和0x28主要用于BootLoader烧写程序过程中减少带宽负载。

2.2 诊断会话

会话模式是汽车诊断很重要的状态机。每种会话形式,对应着差异的SID执行限制。常用的会话模式有三种,默认会话、编程会话、扩展会话[3]。ECU启动位于默认会话。ECU从默认切换到扩展,但是不能从默认跳转到编程。必须通过扩展切换到编程。

在BootLoader加载过程中会话的切换很重要。ECU开机后,启动Boot程序,通过判断软件更新的标志位,决定是否更新操作。不更新的话,会判断App段代码是否有效,然后执行App段代码。App段代码执行进入默认会话。需要一些读写操作时需要进入到扩展会话。刷写软件时,需要进入到编程会话。这时则有App地址段进入到Boot地址段代码,并切换编程状态,然后回复诊断仪(Tester)编程会话正响应,诊断仪本身具备UDS协议,可以扩展软件更新功能。

2.3 UDS服务

1)0x10诊断会话控制

ECU开机会进入到默认方式中,诊断仪需要进行BootLoader的85、28服务操作,需要扩展会话。诊断仪发送10 03使ECU进入到扩展会话。其中子服务 01表示默认、02表示编程、03表示扩展。

0x11ECU复位服务

11服务的主要目的是使ECU的某些操作生效,需要重启ECU。所以通过11服务来重启ECU。重启后ECU会进入到默认会话形式。