UDS的CAN刷新软件

http://www.gzweix.com/article/sort0253/sort0487/info-260414_2.html


ISO 14229用于刷新方面的主要诊断服务见表1。

 

根据ISO 14229协议的诊断服务及ISO 15765-3的通信建议, 刷新通信主要分为3个部分: 刷新前准备工作, 刷新过程, 刷新后的处理过程。 刷新前准备工作和刷新后的处理过程在application软件中,而刷新过程在bootloader中。 刷新的主导过程由上位机根据ISO 14229及ISO 15765标准中规定的流程来进行, 相关通信服务在下文中详细说明。



2.2 软件内存映射及跳转

2.2.1 内存映射

智能前照灯软件设计中, 控制器软件分为两个独立的软件, 即为两个独立的软件部分, 主要为bootloader software启动加载软件 (内含启动加载和刷新功能, 一般简称bootloader软件) 和applicationsoftware应用软件 (也即应用软件 , 简称application软件)。 两个软件之间相互独立, 从软件内容和功能方面来说, bootloader软件主要用于刷新的主流程以及系统总体的启动加载功能, 而application软件侧重于智能前照灯的策略和系统运行, 以及故障诊断和刷新前准备、 刷新后系统恢复工作。 从刷新服务来说, bootloader软件主要使用刷新相关及最为紧要的下载服务, 而应用软件服务大多为准备工作服务。 从CAN驱动以及CAN诊断传输层来说, 两个软件可以共享驱动, 也可以各自设置各自的驱动。

 

图1为智能前照灯的内存映射 (memory map)及中断跳转 (ISR Jump) 图。 图1中智能前照灯控制器flash内存映射含有两个独立的存储区域, 即bootloader软件区域 (灰色阴影) 和应用软件区域,分别用于存放两个独立的软件。

 

2.2.2 软件跳转

两个软件主要通过诊断服务进行跳转, 在设计的软件中通过函数指针来进行跳转。 对于智能前照灯的中断来说, 其跳转如图1所示。 Jump_1为appli-cation软件收到诊断仪器命令后跳入bootloader软件进行刷新的跳转。 Jump_2为bootloader软件复位检查效验区后, 当效验成功也即application应用软件正确后, 跳转到application区域运行。 Jump_3为bootload-er软件进行刷新完毕后复位中断的跳转过程。

 


2.3 application中刷新准备的设计

刷新前的准备工作主要用于刷新的各种数据读取和验证, 安全检查工作和各种条件使能工作。 刷新准备工作流程如图2所示, 主要过程为, 用读取诊断信息服务0x22读取当前软件版本和主要信息; 用开始诊断会话服务0x10切换当前诊断模式到扩展模式; 用故障码设置服务0x85禁止设置DTC以便于刷新; 用通信控制服务0x28禁止当前网络管理及通信信息, 以便于刷新可以获得最大的流量, 以及阻止其他网络信号的干扰, 保证刷新的顺利进行。 之后用软件控制服务进行刷新前的条件检查, 如电源电压、 数据和软件稳定等检查。

 

2.4 启动加载设计

bootloader软件有两大功能: 启动加载跳转功能和刷新功能。

一般启动加载安排在bootloader软件的死循环前面, 用于上电自启, 并检查应用软件是否正确与完备。 如果应用软件效验成功, 则跳入应用软件区域; 否则留在bootloader中, 等待软件刷新。 boot-loader启动加载流程如图3所示。

 

2.6 bootloaer中刷新通信主要流程

刷新的主要流程如图5所示。 本流程图中, 用开始诊断会话服务切换到刷新模式, 也即从appli-cation软件跳入bootloader软件 ; 用安全加密及算法服务来进行控制器的解密; 用软件控制服务对待更新软件进行存储区域擦除, 之后进入刷新的数据传递过程。 数据传递采用块、 包的形式, 对数据进行整体打包发送, 当本包完成时继续进行下一个包的传递。 主要用请求下载服务, 服务中含有待更新软件的首地址和传输字节数; 传递数据服务含有控制器和诊断设备之间的数据传递; 请求传递数据退出服务, 本服务用于对每块进行效验和的效验, 检查通过后才可以进行下一个数据包的传递。 这3个服务不断地循环进行, 把各个数据块给刷入。 全部数据刷入后, 用软件控制服务对所有的软件区进行CRC_16效验。

 

2.7 刷新后的处理工作

最简单直接的方法为控制器复位。 对于非动力方面的控制器, 在不需要进行写数据如VIN等信息的时候, 可以直接复位, 并建议钥匙断电并重新打到IGN ON , 恢复CAN网络上所有控制器模块的网络管理信息和数据通信功能, 及各控制器故障码设置功能。

猜你喜欢

转载自blog.csdn.net/huan447882949/article/details/80234828