初次进入汽车行业的时候对uds还比较陌生,以前写代码一直也没有写过bootloader程序,在茫茫 络的海洋中去查找资料,总是有点没有头绪,其实主要原因是不懂服务,不懂流程。有些前提工作还是非常次要的,那么现在我就来给大家讲讲bootloader
根据ISO 14229协议的诊断服务及ISO 15765-3的通信建议, 刷新通信主要分为3个部分: 刷新前准备工作, 刷新过程, 刷新后的处理过程。 刷新前准备工作和刷新后的处理过程在application软件中,而刷新过程在bootloader中。 刷新的主导过程由上位机根据ISO 14229及ISO 15765标准中规定的流程来进行, 相关通信服务在下文中详细说明。
1.application中刷新前准备
刷新前的准备工作主要用于刷新的各种数据读取和验证, 安全检查工作和各种条件使能工作。 主要过程为, 用读取诊断信息服务0x22读取当前软件版本和主要信息; 用开始诊断会话服务0x10切换当前诊断模式到扩展模式; 用故障码设置服务0x85禁止设置DTC以便于刷新; 用通信控制服务0x28禁止当前 络管理及通信信息, 以便于刷新可以获得最大的流量, 以及阻止其他 络信 的干扰, 保证刷新的顺利进行。 之后用软件控制服务进行刷新前的条件检查, 如电源电压、 数据和软件稳定等检查。
2. boot loader软件
bootloader软件有两大功能: 启动加载跳转功能和刷新功能。
1)启动加载程序
一般启动加载安排在bootloader软件的死循环前面, 用于上电自启, 并检查应用软件是否正确与完备。 如果应用软件效验成功, 则跳入应用软件区域; 否则留在bootloader中, 等待软件刷新
2)bootloader是一个完整的软件, 它用CAN进行刷新, 底层驱动包括CAN驱动的接收和发送部分, 并含有传输层数据处理部分
用开始诊断会话服务切换到刷新模式, 也即从appli-cation软件跳入bootloader软件 ; 用安全加密及算法服务来进行控制器的解密; 用软件控制服务对待更新软件进行存储区域擦除, 之后进入刷新的数据传递过程。 数据传递采用块、 包的形式, 对数据进行整体打包发送, 当本包完成时继续进行下一个包的传递。 主要用请求下载服务, 服务中含有待更新软件的首地址和传输字节数; 传递数据服务含有控制器和诊断设备之间的数据传递; 请求传递数据退出服务, 本服务用于对每块进行效验和的效验, 检查通过后才可以进行下一个数据包的传递。 这3个服务不断地循环进行, 把各个数据块给刷入。 全部数据刷入后, 用软件控制服务对所有的软件区进行CRC_16效验。
3. 最简单直接的方法为控制器复位。 对于非动力方面的控制器, 在不需要进行写数据如VIN等信息的时候, 可以直接复位, 并建议钥匙断电并重新打到IGN ON , 恢复CAN 络上所有控制器模块的 络管理信息和数据通信功能, 及各控制器故障码设置功能。
如果你还有什么疑问,欢迎留言评论
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!