基于UDS协议的Bootloader

参考上汽标准:SMTC 2 800 004 电控单元诊断开发的技术要求

一、概述

二、Bootloader要求

三、刷新流程

四、刷新示例

一、概述

Bootloader概述:使用UDS协议服务实现应用软件,应用数据(包括网络配置数据和标定数据)的更新。Bootloader主要用于:研发、生产、售后。

 

二、Bootloader要求

 总体要求:

1.bootloader应支持刷新电控单元的应用软件、应用数据(包括网络配置数据和标定据)。

2.bootloader负责验证应用软件和应用数据是否正确。

3.当应用软件或应用数据丢失或需要更新时,电控单元须进行刷新以恢复功能

4.数据传输基于CAN 总线并满足 ISO 15765-2 和 ISO 14229-1 的要求

5.任何情况下电控单元都不应支持数据上传功能

6.应用软件、网络配置数据和标定数据应可单独进行刷新。引导加载程序禁止自更新

7.对于同一物流数据标识符,分别从应用软件和引导加载程序获取到的信息应相同 

通信要求

1.引导加载程序应使用固定的 CAN ID,与增强型诊断的 CAN ID相同

2.诊断请求和应答报文的数据长度固定 8字节,不足填充0x00

3.网络层时序参数要求遵照ISO 15765-2定义

4.流控要求

5.应用层时序要求

安全要求

1.电控单元应保证从应用软件跳转至bootloader时的状态是安全的

2.测试设备应使用种子和密钥进行安全访问,以防止未授权刷新。

3.bootloader应使电控单元输入输出端口设置为安全状态

4.bootloader程序应被保护,不可刷新,在刷新失败时应能再次刷新

5.电控单元应将刷新计数存储于非易失性存储器,每次加1

6.电控单元应计算每个数据块CRC并在退出传输服务请求的肯定应答中返回CRC(CRC遵守CTII-16)

7.电控单元应对下载到存储器的数据进行完整性检查

8.电控单元应验证应用软件与引导加载程序是否兼容、应用数据与应用软件是否兼容

9.电控单元退出刷新会话时应根据软件完整性状态和软件兼容性状态的参数值更新软件有效标志位,都有效时置1,bootloader才能运行

会话管理要求

1.电控单元应在收到请求报文 DSC:02 后500 ms 内进入引导加载程序的刷新会话

2.流程

 a) 电控单元运行在应用软件时接收到子功能为 0x02 的服务$10 请求报文,应置刷新入口标志位为真(1)并存储于非易失性存储器。

 b) 电控单元复位。

 c) 电控单元启动,进入引导加载程序的默认会话,并检查刷新入口标志位的值判断之前应用软件是否请求进入刷新会话。(刷新入口标志位判断需在启动时间20 ms 内完成。)

 d) 若为真,电控单元进入刷新会话并将刷新入口标志清零。

 e) 若为否,电控单元保持运行在引导加载程序中的默认会话。仅当启动时间超过20 ms 且软件有效标志位为真时,电控单元从引导加载程序跳转到应用软件

存储器分配要求

电控单元存储器分为 4 个分区

1)应用软件

2)网络配置数据

3)标定数据

4)Bootloader程序

诊断服务要求

 

     bootloader应支持的服务

诊断服务要求

    请求下载服务($34)

n 诊断服务要求

    传输数据服务($36)

注: 发生序号错误,序号超过长度都应终止数据传输

注:将下载循环中传输的数据块的循环冗余校验值发送给测试工具。校验算法为多项式 CRC16(CITT)。

多项式:0x1021

初始值:0xFFFF

三、刷新流程

刷新步骤

 

 步骤 a(标准步骤):

       刷新事件由一个会话类型为刷新会话,物理寻址/功能寻址的诊断会话控制($10)服务开始。电控单元接收到请求报文后应为程序刷新分配一切必须的资源。

步骤 b(标准步骤):

       测试工具获取电控单元的物流数据,如车辆识别代码、电控单元硬件号等。

步骤 c(标准步骤):

       测试工具解锁电控单元使能刷新相关的服务。 所有可刷新的电控单元应支持安全访问 ($27)服务。

步骤 d(备选步骤):

       为了允许应用软件/应用数据下载,电控单元应擦除存储器相应的区域。该功能使用程序控制($31)服务执行存储器擦除程序。

注:该步骤可选且不推荐使用。电控单元应在接收到一个有效的请求下载($34)服务请求报文时执行存储器擦除操作。

步骤 e(标准步骤):

     每次将连续的数据块下载到非易失性存储器时应遵循下面的服务序列:

a) 请求下载($34) ;

b) 传输数据($36) ;

c) 请求退出传输($37)。

      在请求下载、传输数据和请求退出传输序列正确执行时,电控单元仅支持测试工具保持连接服务,忽略其它服务。如果块长度超出了网络层缓存大小,单个数据块须使用多个传输数据($36)请求报文才能传输完全。

      电控单元接收到请求退出传输服务的请求报文时,应计算下载到非易失性存储器的数据块的CRC16 校验值,并在肯定应答报文中将该值发送给测试工具。测试工具将电控单元计算的校验值与工具端的校验值相比较。若二者相等,则证明数据块下载成功。电控单元与测试工具均采用表 23 中规定的多项式 CRC16(CITT)算法。刷新文件中的数据块应能按地址递升序列向电控单元传输。

 步骤 f(标准步骤):

       当所有数据块下载完成后,测试工具应通过程序控制($31)服务启动完整性检查程序验证下载是否成功,并更新软件完整性状态参数。

步骤 g(标准步骤):

       若软件完整性检查的结果为真,则电控单元应执行刷新相关性检查,并根据检查结果更新软件兼容性状态参数。

步骤 h(标准步骤):

       在应用软件/应用数据下载之后, 测试工具应更新物流数据,如刷新信息域、电控单元零件号等。

步骤 i(标准步骤):

       电控单元须复位使下载的应用软件/应用数据生效。电控单元当退出刷新会话时应更新软件有效标志位。

刷新程序标识符规定

 

0xDFFF:检查刷新完整性

      该数值用于检查电控单元存储器刷新的完整性,包括应用软件、网络配置数据和标定数据等。

0xFF00:擦除存储器

    该数值用于启动电控单元存储器擦除程序

0xFF01:检查刷新相关性

     该数值用于检查电控单元存储器刷新的相关性

引导加载程序特定数据标识符

 

AFFC:刷新计数

AFFD:软件完整性状态

AFFE:软件兼容性状态

AFFF:软件有效性标志位

四、刷新示例

示例假电控单元物理请求CAN ID 为 0x7E0;电控单元物理应答 CAN ID 为0x7E8;功能请求 CAN ID 为 0x7DF

使用子功能为 0x02 的服务$10 让车辆 CAN总线上的所有电控单元进入刷新会话。 不可刷新的电控单元应进入安静模式,避免干扰刷新事件

使用服务$22 从电控单元获取车辆识别代码、车辆特征信息和电控单元硬件号

使用下载数据前使用服务$27 解锁电控单元。没有合法的访问授权,测试工具和电控单元均不能继续刷新流程

测试工具请求开始下载数据并将该数据块的起始地址和尺寸通知电控单元。多个数据库需重复请求下载、传输数据和请求退出传输的服务序列

使用服务$36 向电控单元下载所有数据。在服务$34 所描述的数据块下载完成前,测试工具一直重复该服务。

在一个完整的数据块下载后, 测试工具使用服务$37 退出数据传输。如果还有其它数据需要下 载 , 测 试 工 具 应 重 复 该 服 务 序 列($34,$36,$37)下载下一数据块

激活 0xDFFF 程序以检查刷新完整性

激活 0xFF01 程序以检查刷新相关性

电控单元刷新成功后,更新电控单元零件号、刷新信息域和网络信息域-当前数据

复位电控单元使新下载的应用软件或标定数据生效

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值