基于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)
传输数据服务($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 程序以检查刷新相关性
电控单元刷新成功后,更新电控单元零件号、刷新信息域和网络信息域-当前数据
复位电控单元使新下载的应用软件或标定数据生效
基于UDS协议的Bootloader相关推荐
- 基于UDS服务的BootLoader架构和刷写流程
基于UDS服务的BootLoader架构和刷写流程 1. BootLoader支持的UDS服务 bootloader 不需要支持19/14等故障类服务 在boot程序中, 10/27/11/3E 这样 ...
- AUTOSAR从入门到精通100讲(三)-基于UDS服务的BootLoader架构和刷写流程
基于UDS的BootLoader下载,可以支持ECU生命周期的无限次刷写,通过CAN网络进行无需拆壳和DEBUG口的应用程序刷写,本文介绍了刷写服务和是三个阶段的刷写流程.也可通过无线模块实现空中升级 ...
- 基于UDS的ECU bootloader
CAN总线学习-3 最近学习基于UDS的bootloader,做一些总结. 1. 基于UDS的bootloader重要性 为了在不拆卸ECU的外壳的情况下也可以更新ECU的APP,我们需要有bootl ...
- 【基于UDS服务的BootLoader架构和刷写流程】
基于UDS的BootLoader下载,可以支持ECU生命周期的无限次刷写,通过CAN网络进行无需拆壳和DEBUG口的应用程序刷写,本文介绍了刷写服务和是三个阶段的刷写流程.也可通过无线模块实现空中升级 ...
- PCAN-UDS API实现uds协议的BootLoader刷写流程
本文探讨使用PCAN官方的PCAN-UDS API来实现BootLoader刷写流程.不对流程进行详解,对流程不熟悉的同学可以参考https://blog.csdn.net/king110108/ar ...
- 基于scapy uds协议包实践
一.UDS协议说明: 源自百度:UDS协议(Unified Diagnostic Services,统一诊断服务)是诊断服务的规范化标准,比如读取故障码应该向ecu发什么指令,读数据流又发什么指令.O ...
- 浅谈基于UDS的ECU刷写方案(Bootloader刷新)
好长时间没有站在代码开发的第一线了,最近独立搞了一个工程,感觉技术工程师附体,恢复了往日对技术的热情. 在软件定义汽车的时代,ECU软件的更新非常重要.这样就要求ECU具备BootLoader功能. ...
- mfc上位机网络接收图片并显示_基于UDS on CAN的BootLoader上位机
该上位机目前已经进行过单件.台架和实车的多轮测试验证,稳定运行,有需要的同仁可以加微信:ys15528121925. BootLoader简介 在汽车行业,bootloader用来给汽车ECU升级程序 ...
- 基于canoe开发的Bootloader刷写上位机,符合uds流程
基于canoe开发的Bootloader刷写上位机,符合uds流程,可供项目应用和学习 另有支持周立功can卡的Bootloader上位机,符合uds规范的支持s32k144,英飞凌的Bootload ...
- 基于UDS的BootLoader上位机源代码,支持ISO15765通信,支持PeakCAN , ZJG CAN等CAN卡, 支持S-record格式的二进制文件解析; 可二次开发或扩展应用
基于UDS的BootLoader上位机源代码(C#) 基于UDS的BootLoader上位机源代码,支持ISO15765通信,支持PeakCAN , ZJG CAN等CAN卡, 支持S-record格 ...
最新文章
- 说说初用 Mock 工具测试碰到的坑
- 如何判断mysql某个数据库某张表是否存在
- poj 1250 解题(链表法)
- ctf up怎么写 write_软件测试工程师要不要写工具?
- 通过日志审计追踪外部***
- python人脸识别系统界面_人脸识别演示界面:python GUI--tkinter实战(1)
- 十大经典排序算法-堆排序算法详解
- Mysql分表,分区的区别和联系
- 有了这份IT职业发展路线图,大学生就业从此不迷茫
- 鸿蒙归蝶的反弹,副本攻略-鸿蒙试炼
- 推荐一款远程控制软件Toesk。支持文件传输、高清画质、隐私屏、键盘鼠标映射等功能。
- vsc 好用的插件
- SCI论文投稿前必须检查的29个细节
- iphone测试oled的软件,干货 |西努妙解 iPhoneX OLED全面屏的检测方法
- 多张图片转换成一个swf文件播放
- 黑马python2019_2019最新Python黑马头条推荐系统项目
- JSP运行原理 九大内置对象 四大作用域
- 最新聚合官方个人免签支付系统源码+服务器打包
- 2021年煤矿采煤机(掘进机)操作免费试题及煤矿采煤机(掘进机)操作考试技巧
- 2022年十大除甲醛净化器排名
热门文章
- 引擎提示Alias HeroDB跟游戏引擎启动异常怎么解决?
- Java NumberFormat,DecimalFormat保存小数位数
- 请问mac上下virtualBox之后无法安装VBoxGuestAdditions怎么办??
- java表格数据导出到Excel案例
- RTSP HTTP流媒体播放器demo
- node koa2 mysql_Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--蜂鸣器封装(十七)
- C语言--输入一个数判断是否为素数(多种方法)
- 【<咩咩启示录>中的距骨骰低配版】
- Bellman-ford算法图解