HTTP/1.1 200 OK Date: Tue, 23 Apr 2019 00:38:00 GMT Server: nginx/1.4.7 Content-Type: text/html Transfer-Encoding: chunked X-Via: 1.1 xinxzai206:9 (Cdn Cache Server V2.0), 1.1 PSxjpSin1rc199:5 (Cdn Cache Server V2.0) Connection: keep-alive 基于UDS的CAN节点软件升级设计

新闻中心

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

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

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

Design of CAN node software ypdate based on UDS

本文引用地址:/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

1554700480926740.png

1554700498312798.png

1554700529252579.png

  2.3 指令数据下载

     “编程”阶段的“下载应用程序”采用“请求下载”、“数据传输”和“请求退出传输”服务下载应用程序的指令数据,