基于UDS协议的Bootloader

article/2025/10/28 13:33:48

参考上汽标准: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 程序以检查刷新相关性

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

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


http://chatgpt.dhexx.cn/article/4r72MSlK.shtml

相关文章

UDS - 诊断协议和协议栈介绍

目录 UDS介绍 UDS命令形式 UDS的26种服务 UDS on CAN (CAN上的UDS为例说明) 常用UDS命令 故障码(四个大类) NRZ码 CAN ID与CAN节点寻址关系 UDS源代码 (UDS协议栈) CAN诊断实战 UDS介绍 UDS(全称&#xff1…

UDS应用层协议解析(史上最全)

UDS应用层协议解析 UDS应用层协议解读(下) 诊断服务分类 基础服务类 0x10 诊断会话模式 任何会话模式切换至默认会话模式时,非默认会话模式下设置的状态需要reset(28服务、85服务设置的状态需要恢复至默认状态,27服务解…

UDS协议入门之10服务

前言 ISO-14229中按各服务的功能将uds协议划分为六大类: Diagnostic and Communication Management (诊断和通信管理)Data Transmission (数据传输)Stored Data Transmission (存储数据传输,用…

UDS协议发展历史(UDS是什么?)

诊断协议那些事儿 本文为诊断协议那些事儿专栏首篇文章,旨在介绍诊断的起源、发展历史,让读者对诊断有一个基本的认识,明确UDS到底是什么。 关联文章: UDS的应用场景 UDS的OSI模型 UDS服务列表 文章目录 诊断协议那些事儿一、诊…

(转发)详解汽车UDS诊断协议(二)

一.概述 UDS定义的服务从逻辑上分为6类,在上一篇文章中已经对诊断和通信管理类”“数据传输类”“存储数据传输“进行了解读。本文将介绍余下3类UDS服务,即“IO控制服务”“例行程序服务”“上传与下载服务”。 二.诊断服务内容 O控制服务 1. InputO…

(转发)详解汽车UDS诊断协议(一)

一.概述 UDS(UnifiedDiagnostic Services,统一诊断服务,有时也称增强诊断)是ISO-14229定义的基于OSI模型中应用层的协议。其中,ISO 14229-1定义了诊断服务,但不涉及网络层及实现手段,只有应用层的内容&…

UDS协议(史上最全)

UDS协议 UDS应用层协议解读(上) ISO 15765-3主要包含以下内容 应用层时间参数 P2CAN_ClientP2*CAN_ClientP2CAN_ServerP2*CAN_ServerP3CAN_Client_PhysP3CAN_Client_Func会话层时间参数 S3Client 当ECU处于非默认会话模式时,test端会周期性地…

八叉树地图

点云地图不能用于导航,八叉树地图可以用于导航八叉树:从一个节点展开成八个子检点,整个空间从最大空间细分到最小空间的过程 octomap 八叉树建立的地图由很多小方块组成,分辨率较高的时候,方块很小;分辨率…

八叉树(Octree)

转自:http://www.cnblogs.com/21207-iHome/p/7098000.html 八叉树(Octree)是一种用于描述三维空间的树状数据结构。想象一个立方体,我们最少可以切成多少个相同等分的小立方体?答案就是8个。再想象我们有一个房间&…

八叉树及应用

八叉树及应用 八叉树的定义如何搭建一颗八叉树八叉树的作用八叉树的实际应用 上一次介绍了KD树及应用,这次介绍一下八叉树,主要从定义、结构、作用及应用几个方面进行理解。 八叉树的定义 八叉树是在描述三维空间坐标场景中常用的一种数据结构。如下图所…

八叉树场景管理

目录 什么是八叉树(八叉树的数据结构)八叉树的图例八叉树的实现算法八叉树的场景管理器代码实现八叉树的应用场景 1.什么是八叉树——八叉树的数据结构 八叉树是一个树形结构,它的特点就是每个节点正好拥有八个子节点。它的这个结构特点正好能把空间立方体平均分成对…

基于八叉树的空间划分及搜索操作

基于八叉树的空间划分及搜索操作 原理CodeCmakeList.txtCPP体素 近邻 搜索K 近邻 搜索半径内 近邻 搜索 Result 原理 建立空间索引在点云数据处理中有着广泛的应用,常见的空间索引一般 是自顶而下逐级划分空间的各种空间索引结构。 比较有代表性的包括 BSP树KD树K…

基于C++的八叉树颜色删减实验

基于八叉树颜色删减实验 一、实验目的及要求 实现真彩色到256色的颜色转换算法 提供的代码: main.cpp :提供了主控函数main ,八叉树类octTree 和八叉树节点结构octNode 。 代码的编译: 由于需要使用bmp的信息头和文件头结构…

八叉树 java_图像八叉树量化讲解 Java版本

这篇文章主要讲解八叉树算法的原理,并用java进行实现 1.算法原理 八叉树最早是在1988年,由 M. Gervautz 和 W. Purgathofer 提出,该算法的最大优点是效率高,占用内存少。在图像量化中的思路是,图像rgb通道的值均为8比特…

详解八叉树地图

个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-102.html 八叉树地图 八叉树地图(OctoMap)就是一种灵活的、压缩的、又能随时更新的地图。八叉树示意图如下: 一个大立方体不断地均匀分成八块,直…

PCL可视化八叉树格网

1 原理 八叉树其实是一种特殊的由上至下的体素,其构造原理在这里不再进行赘述,详细的构造方式可参考博客:https://blog.csdn.net/qq_32867925/article/details/109094719 有时候为了将点云、构造的层次八叉树需要进行可视化,便于…

松散八叉树

1八叉树简述 1.1定义1.2数据1.3树的建立 1.3.1计算包围体的大小与中心点1.3.2判断物体所属的包围盒2松散八叉树 2.1松散八叉树的建立 八叉树简述 定义 八叉树是一种对三维世界进行场景管理的理想的空间数据结构。八叉树中根节点包含一个立方体包围盒。每个非叶子节点都拥有八…

八叉树学习

八叉树学习 八叉树结构八叉树的存储结构1. 规则八叉树:2.线性八叉树:3.一对八式八叉树 参考网站 八叉树结构 八叉树结构是由 Hunter 博士于1978年首次提出的一种数据模型。八叉树结构通过对三维空间的几何实体进行体元剖分,每个体元具有相同…

PCL中的八叉树

目录 (1)什么是八叉树 (2)PCL中八叉树的体素形成和PCL中基于八叉树的点云压缩 (3)基于八叉树的k邻域搜索、半径搜索和体素近邻搜索 (4)基于八叉树和基于 kd-tree 的k邻域搜索、半…

八叉树 java_java简单实现八叉树图像处理代码示例

一晃工作有段时间了,第一次写博客,有点不知道怎么写,大家将就着看吧,说的有什么不正确的也请大家指正。 最近工作中用到了一个图像压缩的功能。找了一些工具,没有太好的选择。最后选了一个叫jdeli的,奈何效…