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

【经验分享】菊花链 JTAG STM32

[复制链接]
STMCU小助手 发布时间:2022-2-28 19:15
前言5 |* @" G/ ~) V4 a9 p
菊花链 JTAG STM32) h: D) m9 ^/ J1 R1 |' A
一、简要说明/ U, x& ^( P9 V3 h/ t# w, s
硬件:STM32F401C-DISCO *2,MCU :STM32F401VCT6 ;
9 T; g* V8 V: H# M4 Z$ P! j软件:\STM32Cube_FW_F4_V1.8.0\Projects\STM32F401-Discovery\Demonstrations\EWARM
6 [. E( \( x* _6 a对于硬件的连接以及运行后的现象,readme.txt 中已经说明:) \4 m  |7 c! K; F/ g8 u% K

) W2 V% d) S! Y, o 201X$G})C2{81F3DSV5GRGQ.png
# D0 u* k: Y9 _0 L% M
7 {' R; _* \% Q% `程序运行的结果是 LD3~LD6 是跑马灯形式的闪烁。
/ d2 L# a3 Q$ J, q7 Q6 O1 T* e' S参看 STM32F401 的参考手册,RM0368 Rev3. 里面在 Debug support(DBG)里面有描述:$ k/ I7 R9 o# J

; U' q3 B( Q9 A9 X NULVLJM8}TAVHXZNSVZM3{5.png + n, u& Z6 s  M7 u5 [: `

$ t: m0 V$ t+ G5 R* W+ i, @6 i1 ^( b6 ]同样在 JTAG 本身的官网中,也有同样的描述:UM08001(User guide of JTAG emulators for ARM cores),
1 R: l# f8 U  ~+ y" q( ]
6 e* C" E" \8 e& E _BXEO4_8GBNX``3`A0$`L7Q.png
. ]0 a/ [! P: w
- g+ ^$ P9 I2 m& d这也也要注意一下,什么在菊花链中,哪一个是 Device0,即 TDO 接 JTAG 的那个设备,其他的 Device1,2,,,,依次往后排;( `. ~& y* G) p& f9 ^3 D

. w; H# {: e( Z) h5 l' u7 c2 y) u  g) C( }  i1 c& E- V
二、环境搭建% l, C( l9 I, M$ a
按照上图,进行 JTAG 的环境的搭建;
7 T$ y# n  `! C8 n参看 STM32F401VCT6,100pinTQFP 封装的数据手册,找出其引脚的分配;
- }+ T, q) Y4 p2 o! ^9 H7 @  b, a3 s; S4 u, t
3~1KF3PQDJIJ{1BH2CU~(YB.png / s4 S% W+ o$ N% O# ^( ~7 H9 q
JYWS_EU3YI02~%S)U0MOQBU.png
( H! D& ?' M* r% e$ `# h+ p0 H1 n: `) J  O# k3 \* Y7 I; r* t
在加上 JTAG 的接口的定义:% A* [- s- T: N7 m

% F0 Y5 i% T5 ^: t* V MCA0JJD%P2_WS(`KW0AABDV.png * l& }' o. t- R7 |5 m

$ g4 v0 w7 Y, Q& A5 k- G1 C) z  E2 k即需要 JTAG 的标准引脚的,第 9,7,3,5,13 这 5 个引脚;然后链接相应的引脚:& b! F) c6 f( c( y

7 Q1 b* q- o: i  a7 L) E (4}}{E(A10Z@L9_I{E5KAJP.png 2 t8 j1 @% P5 a0 F! @* [2 X
4 x3 ]8 ]/ y, T- w- P) {
此外,对于正常链接目标芯片,还需要检测芯片的电源/地,两个引脚 1,20;9 a: ^5 U1 [: e! U, P& |# A# \. |
当线链接好后,
5 A! x( ^) i' y' E. y' M$ g3 }5 a% G2 |0 c) V) i0 f
8KS6LRXN)NC3$SBO6WM~[M9.png
+ N5 G/ G2 r- u7 o! n  T
. t2 J/ f2 N) f8 r; A可以用 IAR 直接下载程序以判断接线是否正确,或者用 KEil 的上述功能,检查他是否检测到了相应的驱动。对于多个板子的话,就是主要改变 TDI,TDO 即可;因为参照上面的描述,TCK,TMS,TRST 这三个脚都是公用的;下图所示,KEIL 发现了两个驱动,即表明菊花链的硬件链接是对的了;- R: z+ D) L! }% J$ B5 l( W8 i
% [" M, y$ y; U
KSV(V[S@IF4C[7ZMQ%TK.png 2 m! Y$ \, L0 w9 M3 n0 l0 r
  u# v1 a2 C8 v  W
* b4 L$ W$ e9 Z; @" |
通过下拉条来看,这两个驱动的名字是一摸一样的,这也复合我们实际的电路,都是使用的同样的两块 STM32F401VCT6 ;那需要怎样的设定来判断是菊花链中的哪一个设备呢?  c! I- ~% K# s) ]/ W
这里简要的说明一个事情:, X/ V9 n" Q; k) U3 E0 y* Q9 R9 Y
对于每一个 STM32 包含 2 个 TAPs(如下图):# W1 c& L3 c2 t  Y& p1 R
TAP0: Cortex M4 TAP. (the nearest TAP)./ h9 E! {: d1 |" ]1 ?& C6 i
TAP1: Boundary Scan TAP.) T: W# D' }0 H# o, n+ o& G7 M$ J: g3 o
所以:
5 V8 S, \, S- W2 }3 L5 YWith 2 STM32 in a scan chain, we will have 4 TAPs:
* g" o$ L5 ~+ s0 S- i( xTAP0: Cortex M4 TAP IC1.
6 l, }# \. D4 V! e# XTAP1: Boundary Scan TAP IC1.5 Z3 x9 P/ Q/ E
TAP2: Cortex M4 TAP IC2.2 _3 f  \7 c. T! K
TAP3: Boundary Scan TAP IC2+ U- X% v: V: H% V7 X1 \* p

9 V# F; J' y/ m  t0 }0 s )RIAU[(1VSUQ~7]W}1Z32EK.png
- G3 Y- M: H$ H' c+ _7 }2 W- l7 k+ A- n4 P
于是,对于 IAR- a/ J2 y$ A/ }$ r, a+ \; F! R
. M( y0 A/ {4 i1 H5 v
(FM10`W~)LP6C$`@~YBN~Z8.png ! ~$ N) S- `0 C8 v2 k" m' i

  X: q5 y6 v5 B) e1 ]& o$ v配置如下:
; ~$ `) c4 i2 v" m% o: y5 f+ @5 @烧录 Device 0:( |, ~( D1 A& B& J+ l" V
*TAP number = 0 (Cortex TAP, the nearest ==> #0)
! K* J; w  _$ f& F9 l*Preceeding bits= 0 (the very first device/TAP in the chain)
2 X# d% v7 G: E1 S  A/ f! a7 \3 ^( F6 H2 B# I
" v' ?; g" E8 e' b  k7 ]3 s. H
烧录 Device 1:# E% y  a) V' S
*TAP number = 20 T, l4 N9 \' h4 ]3 I- z
*Preceeding bits= 9(5+4)
! |- _2 L$ K( V% N" |" I0 |双开 IAR,下载调试,ok;, ?* H% n% ?3 R$ ^

+ S- X$ w$ ~1 h9 @* O% W6 D( g/ B; Z  f
TMOAOJ5H}{)WLLS0C7OO0[T.png 0 N' Q2 F; K5 p+ B# U- ]! l% A
) o! g5 _# P* o, q3 m
如果三个的话,也是如此,则5 G" H  Z& k  P& {  U
Device2 的配置:0 L7 {7 K5 V5 n. R( ]$ {1 K$ s1 e
*TAP number = 4% f& t, Q$ ]3 h3 X: B- K) s% g
*Preceeding bits= 18;4 p2 \3 W' ~+ z& [) }
大家可以试试看。& o8 H9 f( A; N% I) G' Y

" R- U! `5 {' o' T# ^& [0 F* H. r" [) e1 K5 F1 H2 {4 P8 v
5FEXI)UKMQC$MO8HYGGTNKB.png
& e" m# ?2 ^  m" {" w% v
% F2 Q: J3 {! K% c) ?这是在 IAR 中的描述,那么在 KEIL 中呢?* v4 q: E- C8 n& S
- Q, i  c1 `: F9 |& G# A

1 B+ _5 l9 N* O3 z+ w SAE`~{ZW67_${ODWT(D0@L1.png
+ L/ @8 h: ]- ~6 h  z
+ a* u8 ^4 O* Q2 n( e: W4 k: B驱动是找到了,但是哪个选项是能区分不同的芯片在菊花连中的位置呢?' D2 ?' H6 Y, s9 C5 [# K9 J# i
一开始怀疑是否是自己的 JTAG 版本不够新? KEIL 版本不够新? KEIL 的正版权限不偶?
+ O3 S9 S+ u) k' }. |4 J- _最终咨询后,发现,都不是我想的原因,如果换成 ULINK,则可以发现:
0 G* _, N, ^' F' M8 u$ M
4 F# w) z9 Q6 A8 ^
& a2 _+ H6 b; T5 [& a 81J[@Y4S)[GKX]HBB2{J8.png
5 n# Q0 H9 y+ n7 k( h! n& N$ f3 Q8 Y* W, C
这时候发现能够手动的的修改了,Manual Configuration,不再是灰色的了。现在想想也正常,毕竟 ULINK 才是 Keil 自己的下载工具,如果 Keil 对其他的下载工具的功能做一些限制或优化,也是正常的;选中其中的一个,$ r( s9 i6 G( E8 D1 `
2 V7 ]: K  h- x. k9 Z! R

$ V6 t# {" L+ g- C- j% d. o9 S L_6[M8AF{8JROD44~0@`RS8.png
) W! w! t, A3 j( _: g, M
% ?/ {/ _  F3 b0 Q% K' V要怎么修改呢?
& s' y( b# R" O  q4 A8 E' ^
( `6 A, a# R' R+ i) T9 P' S 2}X{]MIFQIR0{5PQZLMQV2L.png # J. W" D2 Z/ Q5 s, {8 h# W
6 u; b- c+ v1 B( e
试验后只需要修改一个参数 IR len 即可,那么 IAR len 的长度究竟怎么算呢?大家可以动手算一算;
5 v. a( t8 w% c% V3 x& t- W8 R3 ^- i9 R
赞 收藏 评论0 发布时间:2022-2-28 19:15

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版