新闻中心

EEPW首页 > 设计应用 > 基于UDS的CAN节点软件升级设计

基于UDS的CAN节点软件升级设计

作者:马建辉 慕永云 侯冬冬 胡代荣 朱亮时间:2019-03-29来源:电子产品世界收藏

Design of CAN node software ypdate based on UDS

本文引用地址:http://www.eepw.com.cn/article/201903/399039.htm

马建辉 123 ,慕永云 123 ,侯冬冬 123 ,胡代荣 123 ,朱亮 1
(1.齐鲁工业大学(山东省科学院),山东 济南,250353;
2.山东省科学院自动化研究所,山东 济南,250014;
3.山东省汽车电子技术重点实验室,山东 济南,250014)

       摘要:汽车过程中大量频繁的CAN通信造成网络负载率升高,可能导致大部分节点功能降级或者失败,时间过长也会给其它节点的功能安全带来隐患。基于协议设计了一种,在软件升级过程中通过特定的UDS服务禁止CAN网络节点的应用报文和网络管理报文发送,升级完成后恢复CAN网络节点的应用报文和网络管理报文发送,保证了软件升级过程中的CAN网络带宽。同时结合节点CAN报文接收服务程序设计、缓冲区设置以及对参数的调整,降低了程序升级时间。
       关键词:;软件升级;

  0 引言

       汽车电子零部件产品的生命周期一般多达10年以上,使用过程中可能会暴露一些产品部署初期未能测试出来的bug,导致产品存在被修复的需要,此外,新技术的出现也可能导致产品的功能升级。由于汽车电子零部件安装空间受限,通过拆卸并更换新的电子零部件的方式进行功能升级或者bug修复,不仅操作复杂,而且成本高昂。因此,在实施了CAN总线系统的汽车中,一般是设计一种,通过CAN总线进行汽车电子零部件功能的升级,部署实施新技术,或修复产品bug。
  在汽车CAN网络中进行程序升级时,其它的应用报文和网络管理报文会占用大量的CAN网络带宽资源,延缓整个升级过程,而且,程序升级过程中大量频繁的CAN总线通信会造成大部分节点功能的降级,因此,有必要控制并尽可能降低软件升级时间。
  通过CAN总线升级CAN节点程序的方法 [1] ,提出在进行节点程序更新之前,禁止CAN网络节点报文发送和故障码设置,避免了程序升级过程中网络负载率过高的问题,但没有针对性地提出降低升级时间的解决方案。
  本文设计了一种基于UDS协议的Booloader,在下载应用程序的Flash数据之前,通过UDS服务禁止CAN网络节点报文发送和故障码设置,通过设定多帧接收缓冲区大小以及中的STmin和BS参数,最大程度上降低了升级时间。
  1 基于CAN的UDS协议

1554700425247784.png

       定义了UDS [2] (表1 UDS报文格式services,统一诊断服务),侧重于描述诊断服务部分,是全球通用的汽车诊断技术标准。ISO 15765-3以定义的服务为基础,规范了基于CAN总线的诊断服务 [3] (),既给出了底层软硬件要求,包含网络定时、应用层定时等详细内容,又给出了汽车CAN节点程序升级和通信的主体流程。
  基于客户端-服务器的请求-响应式系统架构 [4] ,在汽车CAN网络中,诊断仪为发起请求的客户端,CAN节点为返回响应的服务器,UDS报文格式如表1所示。
  2 Bootloader设计

       2.1 升级过程设计

       在汽车CAN网络中通过Bootloader进行CAN节点的软件升级,其它节点的应用报文和网络管理报文会占用大量的网络带宽,为了给升级过程创造一个良好的网络环境,将软件升级步骤分成编程前-编程-编程后三个阶段,如图2所示。
  在“编程前”阶段,首先进入扩展会话模式,然后通过功能寻址的UDS服务禁止各个节点的应用报文发送、网络管理报文发送,同时,由于很多节点收不到其它节点的报文后会记录DTC故障,因此,首先禁止各个节点的DTC检测,再禁止各个节点的报文发送 [5] 。
  在“编程”阶段,首先进入编程会话模式,然后进行安全访问,下载应用程序对应的指令数据。
  通过执行被复制到指定RAM空间中的Flash驱动程序,擦除并烧写应用程序Flash数据。应用程序数据下载并烧写完成后,对数据进行校验,校验通过后,在数据Flash中存储“应用程序有效标志”。
  在“编程后”阶段,首先进入扩展会话模式,然后通过功能寻址的UDS服务恢复各个节点的应用报文发送、网络管理报文发送,然后恢复各个节点的DTC检测。
  2.2 UDS服务

       软件升级使用的UDS服务如表2所示。其中,“编程前”和“编程后”阶段使用到的诊断服务包括“诊断会话控制”、“通信控制”、“控制DTC设置”,“编程”阶段使用到的诊断服务有“诊断会话控制”、“安全访问”、“请求下载”、“数据传输”、“请求退出传输”、“ECU复位”。

1554700454305125.png

1554700529252579.png

  2.3 指令数据下载

     “编程”阶段的“下载应用程序”采用“请求下载”、“数据传输”和“请求退出传输”服务下载应用程序的指令数据,流程如图3所示。
  首先通过“请求下载”服务设定“数据传输”服务的多帧报文数据长度,然后以多帧通信方式实现“数据传输”服务,完成“请求下载”服务指定长度的多帧报文数据的传输后,通过“请求退出传输”服务退出数据传输。
  2.4 软件升级时间

     “编程前”阶段、“编程后”阶段以及“编程”阶段的进入扩展会话模式、禁止DTC检测、禁止应用报文和网络管理报文发送、进入编程会话模式、安全访问、数据校验、复位、恢复应用报文和网络管理报文发送、恢复DTC检测等UDS服务均采用单帧通信,执行时间固定,升级时间主要取决于“编程”阶段的“下载应用程序”。
  “数据传输”服务采用多帧通信方式,通信速度由和BS的设置决定,此外,“请求下载”服务设定的多帧报文长度不同,升级时间也不同。
  3 软件升级测试

       笔者为某车厂开发了一款带有软件升级功能的车身控制器,MCU为恩智浦中端16位单片机,升级文件采用S19格式,文件大小为左右,采用canoe设计了上位机升级软件,选择升级文件后进行一键式下载,自动完成上述“编程前”-“编程”-“编程后”三个步骤。软件升级数据流如图4所示。
  、BS、多帧报文长度的设置取决于报文接收缓冲区容量和接收端数据帧处理速度,为了提高接收端数据帧处理速度,将CAN报文接收中断服务程序放入RAM中执行。同时考虑到功能安全、MCU RAM容量和运行主频,将多帧报文长度设定为512字节,STmin设置为1 ms,BS设置为0,在这种设置下,软件升级时间可以控制在30秒以内,改善了开发人员和4S店服务人员现场升级的体验。
  4 结论

       本文对在CAN总线上通过UDS服务进行节点软件升级的过程进行了研究,在下载程序指令数据前,禁止CAN网络中所有节点的报文发送,降低了CAN节点的应用报文和网络管理报文对CAN总线带宽资源的消耗,避免了因网络负载率过高导致升级失败的问题;同时,根据对UDS数据传输服务的分析,设置合理的多帧报文长度和STmin参数,在保证功能安全的前提下,尽可能降低了软件升级时间。

       参考文献:
[1] 比亚迪股份有限公司.车辆程序更新系统及车辆程序更新方法:中国, 201510510468.X[P].2015-8-19.
[2] Road vehicles–Unified diagnostic services (UDS) –Specification and Requirement ISO14229[S].2006(E).
[3] Road vehicles-Diagnostics on Controller Area Net works( CAN )-Part 3: Implementation of unified diagnostic services (UDS on CAN) ISO15765-3[S].2004(E).
[4] 陈姿霖 宋磊锋 张龙岗 董海.基于UDS的整车诊断系统设计方法[J].汽车电器,2017,(4):14-17.
[5] 李娟娟 刘孔祥 李济林.智能前照灯的CAN刷新软件的设计[J].汽车电器,2012,(9):1-4.

作者简介
马建辉(1983),男,硕士,工程师,主要研究方向:汽车电子、嵌入式。

本文来源于科技期刊《电子产品世界》2019年第4期第66页,欢迎您写论文时引用,并注明出处



评论


相关推荐

技术专区

关闭