你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32 UDS Bootloader开发的需求经验分享

[复制链接]
攻城狮Melo 发布时间:2023-6-14 13:46
前言
最近断断续续的在做基于STM32F103的UDS Bootloader,没有项目驱动,只是自己感兴趣。目前基本已经可以实现功能了,在此对做的东西进行一下总结,希望可以帮助到有需要的人。

& I' A/ [  R4 f+ G
内存分配
0 B4 C! o$ c' y* B
微信图片_20230614134224.png

2 f* N. b) \$ e
本次使用的单片机为STM32F103RCT6,flash大小256k,一个扇区2k,SRAM:48KB& g/ S$ q1 c# R3 @" P* z
flash起始地址为0x8000000,大小为0x40000(16进制)—>262144字节(10进制)—>256KB+ {5 s; o9 [; J  Q7 d' `( N# L
RAM起始地址为0x2000000,大小为0xC000(16进制)—>49125字节(10进制)—>48KB9 `) q. S: O8 m% z( Y, F" H& p
将flash划分为Bootloader和App两块1 x4 h  [/ r/ `8 a, ~0 o
APP跳转到boot,这个标志放在ram中,但要保证软复位时不清除.* b& C+ l. P1 S- B2 Z* I
FlashDrive需要放到ram中,每次下载APP时先下载Flash
Driver
: d! v2 h( e" D3 w$ F) ^- DAPP有效标志放入Flash中,每次刷写前清除标志,刷写成功后写入标志。
9 K) t! [/ M7 y, ]& M" c& Rflash分配如下:
1 i3 M  @& }/ x/ A/ _
微信图片_20230614134228.png

; R# [. _" k( A* L+ y; m# O
ram分配如下:

, K! j$ b% H, @
1 C7 f$ p# l% d8 N* F' h$ n
微信图片_20230614134231.png
; T8 T; b8 @) d# L" e# |  ~) z, _5 [4 h; d; m
9 S9 h( I. }% w! H0 E
UDS诊断协议需求
CAN ID及时间参数
波特率:500k
3 v6 ]5 n( Q6 J4 ^物理寻址ID:0x711% V$ ~9 [' w$ x: T
功能寻址ID:0x7DF8 Y# t, L2 L1 W) N
ECU 响应ID: 0x766$ h# S7 j+ n2 X: V$ z
P2 Server:50ms  P2 *Server:5000ms9 C! v* Q4 l! `+ q
P2 Client:50ms  P2 *Client:5000ms2 Q) A! I; r5 K6 O, q% k. L+ \
S3server:5000ms( g) g! x! K: e1 L0 w" z
S3client:2000ms
! [, F' V% r; z8 zSTmin:20ms 连续帧协议数据单元发送的最小时间间隔( A" s4 L# T: ]- _
BlockSize:0 每一块中包含连续帧的个数0 u6 }8 `9 i3 u. ]0 E( u
) i. ]; k& a. c; o3 a
微信图片_20230614134238.png - ]. e% \" r7 V: y1 X' ]4 @

5 U/ [8 B) {) U. A  u, @5 E
CANFrameFillerByte:0x55 数据帧不满8byte时的填充值

+ i3 E( ?6 C' L  C6 z! y
诊断服务
9 x3 M/ G0 R6 y, i9 I! a4 w3 l. IBootloader诊断服务
10
01
Diagnostic Session Control
Default Session
Phy Req
Fun Req
10
02
Diagnostic Session Control
ECU Programming Session
Phy Req
8 L( Z" r8 Z3 V7 A( R% j; U
10
03
Diagnostic Session Control
ECU Extended Session
Phy Req
Fun Req
11
01
ECU Reset
Hard Reset
Phy Req
Fun Req
22

4 A: Y6 k1 [6 t) t4 r9 S
Read Data By Identifier
% k  i& g. k2 e: |* G* X0 ^
Phy Req

; q0 v' I, p) q; P- O8 Q2 x$ E) H
27
01
Security Access
Request Seed
Phy Req

; ~" P; S) u7 ~6 }1 p+ F
27
02
Security Access
Send key
Phy Req

4 x% E6 o9 [$ {# ~3 `# t
31
01
Routine Control
Start Routine
Phy Req

- d7 ~! ~3 L/ N6 {$ l
34
# F4 Q' \5 C  `4 I* F( I- H# A
Request Download

2 @0 \  h4 c% j
Phy Req
4 E+ Q6 N0 O: l& J: M. |
36

$ T! u% g0 n( P) e
Transfer Data

. C& t- `4 j- H5 K) e/ F3 f6 d& k
Phy Req
) J) e" b& m6 f# W% H9 }- }
37

! @: T) J- s" z
Request Transfer Exit
% Q; S& a9 C4 Y7 P* g7 v
Phy Req

9 W. f( C9 k8 J0 Y! n* n
85
01
ControlDTCSetting
On
Phy Req
Fun Req
85
02
ControlDTCSetting
Off
2 I0 c5 X: e. N5 {  `/ N3 V
3 R+ F5 v* a- R9 G

! s3 c& k2 @/ v" V

' e" I9 h- x: ?0 F0 y- n  z+ pAPP诊断服务
10
01
Diagnostic Session Control
Default Session
Phy Req
Fun Req
10
02
Diagnostic Session Control
ECU Programming Session
Phy Req

" [7 Q% t( V1 x' B+ \( N3 h
10
03
Diagnostic Session Control
ECU Extended Session
Phy Req
Fun Req
11
01
ECU Reset
Hard Reset
Phy Req
Fun Req
14

$ L7 K! A* p+ T; i0 P
ClearDiagnosticInformation
FF FF FF Clear all
Phy Req

+ p+ w+ J5 W1 a" C5 h" D- H
22
7 y& _' y2 f0 w; Q
Read Data By Identifier
# i9 Y9 d' y6 p8 z
Phy Req
# n7 `$ Q* e5 y0 w7 s
27
01
Security Access
Request Seed
Phy Req
4 m# ^  }2 I$ N# Z! d7 ~' q9 u
27
02
Security Access
Send key
Phy Req

' R" E, N/ T8 e- ]. I) }9 F9 a
28
00
CommunicationControl
Enable Rx and Tx
Phy Req
Fun Req
28
01
CommunicationControl
Enable Rx and DisableTx
Phy Req
Fun Req
28
02
CommunicationControl
Disable Rx and EnableTx
Phy Req
Fun Req
28
02
CommunicationControl
Disable Rx and Tx
Phy Req
Fun Req
31
01
Routine Control
Start Routine
Phy Req
$ ~- j( P9 E7 I  u4 U  Q
85
01
ControlDTCSetting
On
Phy Req
Fun Req
85
02
ControlDTCSetting
Off
0 c5 @3 e- G' j9 F3 M% m

. a' J" W" b3 ?) O

" p; ^/ q1 u8 @( V- m

, z; v% @" f9 ?: F' W/ cDID
22服务的DID:
6 s* d# i- f( G+ f+ T* ^F1AA:读取版本号( V5 g7 {  O- y6 G5 h
Routine Control DID:% j- M3 g6 R& Y# Y
FF00:擦除内存
# ?2 H% K6 K' o- J+ y0 k0201:检查预编程条件
& H4 M" b+ Q0 }  S9 p7 S6 _7 J" sFF01:检查编程完整性和兼容性) c. y8 ?- `" m9 ~
2E服务的DID:
  I: |+ r9 J& c* a9 {$ AF15A -写指纹: s3 N2 _$ U* r5 P; U

! q  @* ]7 r/ O# o0 ^! l+ R) M
刷写流程
# P8 I* @5 W. G2 Y! D6 p预编程
1.进入扩展模式(功能寻址)10 83 (83表示不需要服务器应答)* C& J0 U) I. H1 Q+ c7 o7 [
2.检查预编程条件(物理寻址)31 01 XX XX,针对要刷写的ECU。一般就是检查供电电压,车速这些,如果厂家没指定,那么由ECU自己定义。如果ECU不满足预编程条件,则收到10 02进入编程模式时,返回0x22不满足条件否定响应。
& ?; Y8 a0 H! ]4 [7 T: ?3.停止DTC设置(功能寻址),85 82(82表示不需要服务器应答), f- j: ]0 x. _0 |1 S
4.禁止无关通讯(功能寻址),28 83 03(83表示发送和接收报文都禁止,且不需要服务器应答,第三位01表示是应用软件报文,第三位03则表示应用软件和网络管理报文都禁止)
. c( m2 o1 s5 {/ F+ b& t5.读取版本号(物理寻址)22 XX XX ,诊断仪读取当前ECU版本信息。
7 Z* J) O! \2 \* L  J7 t

# O! s, G7 N* S: p" ]

" z9 V" E& R% B, _
微信图片_20230614134242.png / i' U* N: v: G* O! b
( g* x8 L1 {  h, n8 Q7 ?

# C' P: m0 C3 D8 i" u2 v主编程
1.进入编程会话10 02 ,此时在APP中应该执行复位,然后进入boot中的编程模式% V+ a1 W! ~) e, ]" a- C
2.请求种子 27 01(x根据主机厂给的等级来定)& @' Y$ ]) O; W' W) H6 g
3.发送密匙 27 02 key. A! d7 e: j+ @$ r7 d* n+ C- Y
4.解锁成功后,2E服务写入指纹信息。一般就是时间和设备号这些7 F) ?3 k: D  C# {4 A7 H
5.下载flash驱动程序,34 36 37服务。因为bootloader里是不带驱动程序的,防止意外操作导致flash改变,程序出现异常,所以只在刷写的时候才允许操作flash。下载完成后一般还需要例程控制31服务进行完整性检查(CRC32校验)和依赖性检查(ecu指定,DID为FF01-14229-1规定)(该步骤暂时不做)8 q0 z9 J; T% K
6.擦除内存,由31服务执行,具体的DID按14229-1应该为FF00,需要给定擦除的起始地址和大小。3 v7 u, l' D" V. N+ ^
7.下载APP程序,34,36,37服务。下载完成后也需要例程控制31服务中的完整性检查(CRC32校验)和依赖性检查(ecu指定,DID为FF01-14229-1规定)- H* D3 K) U$ d- r0 T9 h% E
8.ECU复位,一般发送11 01进行复位,复位完成后Flash驱动程序将被清除。避免意外激活这些可能会进行非预期的内存擦除或程序操作的代码。3 h( {5 d" N5 F0 E1 @- A
8 V0 C9 c+ j1 Z( D) T

' e  R) Q2 x! w+ e+ x0 ~$ R* y 微信图片_20230614134244.png
3 ^1 Q% A8 n; D2 J- x1 {5 o9 R/ g# b+ O8 U

. G1 y$ T0 j& O- g; H4 m8 M+ R后编程
1.主编程完成后,ECU复位,诊断仪发送进入扩展模式10 83(功能寻址,不需要ECU回复)
' e( f# R3 R3 c" R+ f2.恢复通讯28 80 03(功能寻址,不需要ECU回复,03表示网络管理报文和应用报文都恢复). d- q" C6 `- W' _/ v
3.开启DTC诊断85 81(功能寻址,不需要ECU回复)
7 C7 h1 O3 x4 ~* |2 B4.清除刷写ECU的故障信息(物理寻址14 FF FF FF)
- Y$ }9 d" Z* Q# F# M5.进入默认会话模式10 81(功能寻址)
( z* B  b" Z# ^7 N3 B

* v% v3 O5 {$ p: T) I
9 g/ N  T# S. v% `& S# n
微信图片_20230614134247.png
5 \' \0 p2 S6 }& y* h9 {4 W
: P9 j1 i8 s* x, h/ }

, W& q. w- N  _' @: `总结
理清需求后,再进行后面的软件开发就比较方便了。不论是开发下位机还是上位机,都需要参考这部分需求。在后面的文章中将会继续介绍软件的设计。

5 w- x2 f& ?3 ]& H# R2 D0 @4 ^
转载自: 汽车电子学习笔记
如有侵权请联系删除

/ k* S6 Y) a7 s/ Z4 \% ~
) D) [# d) r) N  O: e+ q& G+ @

, I- S. J/ r3 A, G# l5 m
收藏 评论0 发布时间:2023-6-14 13:46

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版