基于UDS服务的BootLoader架构和刷写流程

基于UDS服务的BootLoader架构和刷写流程


1. BootLoader支持的UDS服务

  • bootloader 不需要支持19/14等故障类服务

  • 在boot程序中, 10/27/11/3E 这样的基础服务需要支持;

  • 22/2E读写DID的服务需要支持

  • 31/34/36/37这bootloader主打服务需要支持

  • 在app段程序中,85和28服务需要支持,保证暂停CAN正常通信,暂停记录DTC,让被升级设备专心升级。

    SIDISO 14229功能描述
    0x10DiagnosticSessionControl外部设备切换会话模式
    0x85ControlDTCSetting打开或关闭DTC
    0x28CommunicationControl打开或关闭CAN报文
    0x27SecurityAccess解锁ECU
    0x34RequestDownload请求命令
    0x36TransferData传输数据
    0x37RequestTransferExit请求退出传输命令
    0x31RoutineControl触发指令
    0x2EWriteDataByIdentifier外部设备写入数据到ECU
    0x22ReadDataByIdentifier与ECU内部数据传输
    0x11EcuResetECU复位
    0x3ETesterPresent

2. Bootloader–三段式

2.1 预编程阶段

  • (1) 3E TP报文
  • (2) 10服务切换到03扩展模式
  • (3) 85服务和28服务, 关DTC和非诊断报文.使得整个CAN网络处于安静的状态
    这是对整车网络进行操作,一般以功能寻址的方式发送。 注意先用85服务关闭DTC,再使用28服务关报文
编号收发报文说明
440Rx02 3E 80 00 00 00 00 00
703Rx02 10 03 00 00 00 00 00切换到扩展诊断模式
4E0Tx06 50 03 00 14 03 E8 00P2=20ms; P2* = 1000ms
440Rx02 85 82 00 00 00 00 00关闭DTC
440Rx03 28 81 01 00 00 00 00关闭报文

2.2 主编程阶段

  • (1) 10服务切换到编程模式

    正确的方式是App段程序回复0x78 NRC, 接下来跳转到boot段程序,最后由Boot段程序来回复10 02的肯定响应。 错误的方式是由App段回复10 02的肯定响应,再进行跳转。

  • (2) 读取一个DID,tester要判断一下返回值,返回值里可能包含密钥的一部分信息

  • (3) 27服务,解锁,通过安全验证

编号收发报文说明
703Rx02 10 02 00 00 00 00 00切换到编程模式
4E0Tx06 50 02 00 14 03 E8 00
703Rx03 22 F1 00 00 00 00 00读DID = 0xF100
4E0Tx03 7F 22 78 00 00 00 000x78否定响应码
4E0Tx07 62 F1 00 01 00 00 02ECU返回0xF100的DID
703Rx02 27 05 00 00 00 00 00安全反问, 请求不同安全级别的种子
4E0Tx10 0A 67 05 08 27 11 F08字节的种子(多包第一帧数据)
  • 10 02服务不应直接进行肯定响应,存在风险

  • (1) 写DID(Data identifier)指纹, 标记写软件人的身份,ECU回复写指纹成功

  • (2) 31服务-擦除Flash。ECU肯定响应,擦除成功

  • (3) 34服务,请求数据下载,ECU回复确认最大块大小

  • (4) 36服务,开始传输数据,每个块传输完成后,ECU肯定响应,判断是否还有更多块需要下载,最多255块

  • (5) 37服务,请求退出传输。ECU肯定响应

  • (6) 31服务-检验APP段程序,检查编程一致性/完整性。ECU肯定响应。校验成功

  • (7) 若有更多块需要下载,重新执行31(擦除Flash区域)-34-36-37-31(校验)服务。若无,往下执行

  • (8) 11服务,ECU复位。之后直接跳转到新下载的APP段程序中

编号收发报文说明
703Rx21 00 02 20 02 40 02 80
703Rx22 02 F0 02 F0 02 F0 02
703Rx23 F0 02 F0 02 F0 02 F0
703Rx24 02 F0 02 F0 02 F0 02
703Rx25 F0 02 F0 02 F0 02 F0
703Rx26 02 F0 02 BF 03 03 00
703Rx27 00 00 00 00 00 00 00
703Rx03 7E 36 78 00 00 00 00
703Tx02 76 01 78 00 00 00 00完成数据传输
4E0Tx01 37 00 00 00 00 00 00请求退出传输
4E0Tx01 77 01 78 00 00 00 00
703Rx10 0A 31 01 FF 01 00 04启动例程: 校验应用程序
4E0Tx30 00 00 FF FF FF FF FF
703Rx21 6A DD AE F8 00 00 00
4E0Tx03 7E 31 78 00 00 00 00
4E0Tx05 71 01 FF 01 00 00 00校验完成
703Rx02 11 01 00 00 00 00 00ECU硬件复位

2.3 后编程阶段

  • (1) 10服务切换到03扩展会话
  • (2) 执行28服务和85服务,使能非诊断报文和DTC(Diagnostic Trouble Code)。
    • 这是对整车网络进行操作的,一般都是以功能寻址的方式来发送。注意先执行28,后执行85,避免DTC误报。
编号收发报文说明
4E0Tx02 51 01 FF 01 00 00 00复位肯定响应
440Rx03 28 00 01 00 00 00 00连接控制请求:
使能收发应用程序报文
4E0Tx02 68 00 FF 01 00 00 00
440Rx02 85 01 00 00 00 00 00使能DTC设置
4E0Tx02 C5 01 FF 01 00 00 00
  • (1) 27服务,安全校验,准备写入数据
  • (2) 2E服务,将编程信息写入到ECU中
  • (3) 10服务,退回01默认会话。结束

3. BootLoader的启动顺序和转换流程

  • (1) ECU上电或复位之后,先进入Boot段。从Flash/EEPROM中读取App有效标志 ,运行boot标志
  • (2) 判断 运行boot标志,若为1,则进入Boot段的编程会话(安全等级为上锁),之后写Flash/EEPROM(不安全操作),运行boot标志清零。若S3定时器超时则退回Boot段默认会话。
  • (3) 经过安全访问进入Level2解锁状态,开始执行App内存擦除,擦除后App有效标志清零(不安全操作)。
  • (4) 开始烧写。烧写成功后运行boot标志 写0,App有效标志 写1。
  • 6
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《基于CAN总线UDS服务Bootloader应用开发》是一本详细介绍CAN总线和UDS服务的开发的书籍。CAN总线是一种广泛应用于汽车电子系统中的通讯协议,它具有高可靠性和实时性的特点。而UDS(译为统一诊断服务服务则是一种用于诊断和编程车辆电子控制单元(ECU)的标准。本书主要介绍了如何利用CAN总线和UDS服务开发车辆的Bootloader应用。 在车辆的软件开发中,Bootloader应用是一个非常重要的组件,它负责在车辆上电启动时进行系统的初始化和软件的加载。本书首先介绍了CAN总线的基本原理和使用方法,包括CAN帧的构成、CAN总线的通信方式和CAN总线的数据传输速率等。然后详细介绍了UDS服务的原理和使用方法,包括诊断会话的建立、故障码的读取和除、ECU的编程和参数设置等。 本书的重点在于如何将CAN总线和UDS服务应用于Bootloader的开发。作者介绍了Bootloader的基本功能和设计要求,如如何进行软件的更新、如何进行固件的校验和加载等。然后详细介绍了如何利用CAN总线和UDS服务来实现这些功能。作者给出了一些示例代码和实际应用的案例,以帮助读者更好地理解和运用这些技术。 总之,《基于CAN总线UDS服务Bootloader应用开发》是一本非常实用的书籍,它详细介绍了CAN总线和UDS服务的开发,并将它们应用于车辆的Bootloader开发。无论是从事汽车电子开发的工程师,还是对汽车电子技术感兴趣的读者,都可以从这本书中获得实际的帮助和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值