STM32 UDS Bootloader开发需求

前言最近断断续续的在做基于stm32f103的uds bootloader,没有项目驱动,只是自己感兴趣。目前基本已经可以实现功能了,在此对做的东西进行一下总结,希望可以帮助到有需要的人。
内存分配本次使用的单片机为stm32f103rct6,flash大小256k,一个扇区2k,sram:48kb
flash起始地址为 0x8000000 ,大小为0x40000(16进制)—>262144字节(10进制)—>256kb
ram起始地址为 0x2000000 ,大小为0xc000(16进制)—>49125字节(10进制)—>48kb
将flash划分为bootloader和app两块
app跳转到boot,这个标志放在ram中,但要保证软复位时不清除.
flashdrive需要放到ram中,每次下载app时先下载flashdriver
app有效标志放入flash中,每次刷写前清除标志,刷写成功后写入标志。
flash分配如下:ram分配如下:
uds诊断协议需求can id及时间参数波特率:500k
物理寻址id:0x711
功能寻址id:0x7df
ecu 响应id: 0x766
p2 server:50ms p2 *server:5000ms
p2 client:50ms p2 *client:5000ms
s3server:5000ms
s3client:2000ms
stmin:20ms 连续帧协议数据单元发送的最小时间间隔
blocksize:0 每一块中包含连续帧的个数
canframefillerbyte:0x55 数据帧不满8byte时的填充值
诊断服务bootloader诊断服务
app诊断服务
did22服务的did:
f1aa:读取版本号
routine control did:
ff00:擦除内存
0201:检查预编程条件
ff01:检查编程完整性和兼容性
2e服务的did:
f15a -写指纹
刷写流程预编程1.进入扩展模式(功能寻址)10 83 (83表示不需要服务器应答)
2.检查预编程条件(物理寻址)31 01 xx xx,针对要刷写的ecu。一般就是检查供电电压,车速这些,如果厂家没指定,那么由ecu自己定义。如果ecu不满足预编程条件,则收到10 02进入编程模式时,返回0x22不满足条件否定响应。
3.停止dtc设置(功能寻址),85 82(82表示不需要服务器应答)
4.禁止无关通讯(功能寻址),28 83 03(83表示发送和接收报文都禁止,且不需要服务器应答,第三位01表示是应用软件报文,第三位03则表示应用软件和网络管理报文都禁止)
5.读取版本号(物理寻址)22 xx xx ,诊断仪读取当前ecu版本信息。
主编程1.进入编程会话10 02 ,此时在app中应该执行复位,然后进入boot中的编程模式
2.请求种子 27 01(x根据主机厂给的等级来定)
3.发送密匙 27 02 key
4.解锁成功后,2e服务写入指纹信息。一般就是时间和设备号这些
5.下载flash驱动程序,34 36 37服务。因为bootloader里是不带驱动程序的,防止意外操作导致flash改变,程序出现异常,所以只在刷写的时候才允许操作flash。下载完成后一般还需要例程控制31服务进行完整性检查(crc32校验)和依赖性检查(ecu指定,did为ff01-14229-1规定)(该步骤暂时不做)
6.擦除内存,由31服务执行,具体的did按14229-1应该为ff00,需要给定擦除的起始地址和大小。
7.下载app程序,34,36,37服务。下载完成后也需要例程控制31服务中的完整性检查(crc32校验)和依赖性检查(ecu指定,did为ff01-14229-1规定)
8.ecu复位,一般发送11 01进行复位,复位完成后flash驱动程序将被清除。避免意外激活这些可能会进行非预期的内存擦除或程序操作的代码。
后编程1.主编程完成后,ecu复位,诊断仪发送进入扩展模式10 83(功能寻址,不需要ecu回复)
2.恢复通讯28 80 03(功能寻址,不需要ecu回复,03表示网络管理报文和应用报文都恢复)
3.开启dtc诊断85 81(功能寻址,不需要ecu回复)
4.清除刷写ecu的故障信息(物理寻址14 ff ff ff)
5.进入默认会话模式10 81(功能寻址)
总结理清需求后,再进行后面的软件开发就比较方便了。不论是开发下位机还是上位机,都需要参考这部分需求。

对于2017年互联网医疗5大关键词详解
开关电源中的钳位电路图介绍
美颜软件:人脸识别检测,逐渐升级到深度神经网络
健康码人脸识别系统搭配智能防疫一体机正成为趋势?
这款自动集尘扫地机器人让我一个月不用动手打扫卫生
STM32 UDS Bootloader开发需求
iOS 14.5 系统测试版已经发布 正式版不会远了吧
触控技术在智能手机上的发展将不断进步
区块链为我们提供了额外安全层平台的可能性
2018年全球半导体资本支出从8%上调到14%
2018年四季度iPhone出货量跌破7000万,iPhone持续降价试图拉动销量
白光LED究竟是如何发白光的呢?
电熨斗的控制电路
PLC编程专用小知识及便捷操作解读
Facebook最新AI变革研发成果“无监督学习”
中国有意成为全球半导体领导者 打造世界级芯片行业
控制系统的结构图等效变换和简化
智慧城市是怎样建成的
Pasternack推出了同轴射频浪涌保护器新产品线
浅谈3D打印技术在医疗口腔领域中的应用