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

使用RealView MDK进行SW调试和实时跟踪

[复制链接]
qazwsx-19104 发布时间:2008-9-3 20:34
STM32有两个调试端口,即JTAG和SW。Keil 的ULINK2 USB-JATG接口适配器支持这两种调试接口。  D+ K: j& f7 ~' C7 L% e3 b/ v
1 K$ k, V' E' e1 B9 ^" r0 T9 J) c
本文描述了如何配置和使用SW接口来获取各种调试信息。
) L/ l9 O7 y1 @0 k: I5 A8 D" r( b* f# }% \
一、目标调试阶段的配置8 E0 @3 h5 X+ _' k9 S: @
+ t' j1 g: ]2 E  s
1.调试器的选择
- X4 _3 C' e  I& U8 J8 e9 q4 [" l% |7 E! h& g  S! Z5 p6 x
选择μVision->Debug ->Options for Target –>Debug,并选择ULINK Cortex Debugger调试器。
! G' w5 o5 K7 F( O, g) h$ Z; F& l3 N8 E# `

# k8 }6 e0 \+ X+ G$ q+ X" a; `: g2.调试目标初始化文件
# T( U% `6 C' d6 Y# m; i& v
: o2 Z0 [) |4 t, |# Z" v8 x* c% {按照路径\Keil\ARM\Startup\ST,将文件STM32DBG.ini拷贝到工程文件夹中。选择μVision->Debug -> Options for Target –>Debug,同时在Initialization File选项中选择该文件。
& H4 P$ S+ n0 x8 p5 U- q7 x5 @1 n" m  \
% o9 L4 s( @, O. q7 @
3.Cortex-M 目标设备调试驱动配置
! t- m7 N+ `/ G0 `% ^/ A+ G  y$ H7 ^* u
选择Options for Target – Debug – Settings,设置SWJ,端口选择SW。9 Y6 ^4 ^& p  v. r& |0 Q
" Q: E1 J: U  g/ S) n8 l

& e7 h$ m1 z' X% _  e  k4.Trace功能的配置7 X7 `) j0 e3 t0 _$ N
# H( ^: X% C4 H! m% P" T
Trace功能包括:Core Clock, Trace Port 以及定义TraceEvents 等。
  m, c% }  `' R; y$ [% g6 N/ |3 P4 w* r' l. @

& Z- n1 d; x7 X2 ~, B: c: K* f5 q1 I8 @7 P. p
二、实时跟踪7 B' `7 N$ R$ f, R4 j2 b% m# [! [
; h  Z; K* Z6 Q3 M% ]. `, W6 t0 C7 }
1.μVision的状态栏信息  h1 u2 d" O3 j+ r$ u

! n: d. p$ c9 h* o在μVision的状态栏中显示了实时跟踪的状态信息。/ m* z* X" w/ v+ L, k. S
! q! Y" E5 n/ r& j" j' ?1 h  o
! O0 s% E- y+ P9 x$ t" `8 M% Z
2.实时跟踪窗口
4 |/ a+ A2 Z) Q; j; _, s( |2 X; ^, y# _0 a0 R9 v4 J; b9 K' t
调试时选择Peripherals – Trace。
; p2 ^8 q( A9 U5 D# h- _5 c) b9 h" I" q# y

% f/ X8 @  _) F1)Trace Records窗口
& x4 y+ Q) D' T* v
& f4 J# g# ]' ]/ H该窗口显示了所有被捕获的跟踪记录,每一个跟踪记录都包含了详细的信息。可以选择Peripherals - Trace – Records来查看。1 y; O: ?' o. {  N0 @$ o8 K" ]
& \" l$ e7 k1 x6 H; T+ n' ?3 ^7 N
) H$ O. c, @+ x1 w/ v
2)Exception Trace 窗口- m9 L5 I: r& a( r

2 x- L! B9 ^) O( b0 `3 q2 @该窗口显示了异常和中断的统计信息,这些信息是基于Trace Records中所捕获的跟踪记录的。可以选择Peripherals - Trace - Exceptions来查看。' b2 i. B( P$ w6 C* m

0 o0 z: x% y  y. S( Q; m& d5 p2 V7 O4 n- H/ k. x; {2 w# ^+ o
3)Event Counters窗口2 @2 ?, s, W9 s( `) V' W$ P

) c4 G( P& R* v1 Q6 \" F  e% x这个窗口显示了特殊事件计数器的值,计数值是基于Trace Records中所捕获的跟踪记录的。 ) b( V3 j" c5 {
. p% C7 j) }; F: t, L% _( Z6 t
& y) W- w  H: s2 u! y
3.ITM Viewer窗口
; n* b4 z  v; t/ Y4 @) L0 n9 Z- ]+ |( H/ o- S# @* \5 j6 c- U: S
可以通过ITM的激励端口0在ITM Viewer窗口上输出ASCII 或 Hex格式的数据,目前只有ITM 端口0可以在ITM Viewer窗口显示。要使用ITM Viewer窗口来显示调试跟踪的输出信息,需要进行以下的操作。7 V% h! Y3 J2 ?# R0 h8 _7 u
8 Y" [3 F; G  {2 i* }5 k" b, g* H
l   在源代码中添加ITM激励端口寄存器的定义。4 K( H9 W: Y* [; G: i
; v6 D; r* J3 X- L6 Q# `. d( q0 [  B# w
#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
) l. K' C* |$ g0 @#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))/ h6 y& x- P% Z- [% w& h1 ~/ }; P3 W
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))
! I. R. J9 {9 L& v/ N- J2 {5 i#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
4 H, m8 a. D+ J& M#define TRCENA          0x01000000+ {+ E8 b0 h6 M, Q
l   在源代码中添加fputc函数,它向ITM的激励端口0寄存器写数据。如果有了fputc函数,则可以用printf函数做为调试输出。ITM的激励端口0与ITM Viewer窗口固定连接。  A- ?) z% g7 F' {6 I

5 I# Z* g. p5 T; N- gstruct __FILE { int handle; /* Add whatever you need here */ };
3 b4 f. u, j6 o9 Z( ~FILE __stdout;. [4 R1 u- A5 D
FILE __stdin;
' b5 ^' s4 T, `5 V" W  Zint fputc(int ch, FILE *f) {
! u6 j. n; D, |7 g4 yif (DEMCR & TRCENA) {* G, A" N( p8 Y6 H3 y  x
while (ITM_Port32(0) == 0);
$ ]" ?' L- E' J9 K% U0 PITM_Port8(0) = ch;0 A) ?! ?, u7 @6 k' i6 ?' O( c) n5 I
  }
+ w6 Z$ j7 ?+ e: O3 _$ [return(ch);. w: g# k. T9 q7 w) A
}; }/ X- P5 H# b) x8 k4 _
l   在源代码中添加printf函数来显示调试跟踪信息。7 i+ e9 N- v0 V1 |, Q

2 Y9 [$ T6 O  v. Xprintf("Serial Wire Output Debug Trace message");  
" J0 Q9 _. B! C; u+ \0 H8 ll   在Cortex-M Target Driver Setup窗口中使能ITM激励端口02 b- d! r. G5 `4 f2 Y
6 }5 s& h! Q+ j; r; h

4 Q! N7 K; g" f6 ul   在目标调试期,打开ITM Viewer窗口/ }2 }% u4 V6 Q0 r4 ~. ~
* M+ j1 s$ G' ]+ Z- B6 @
选择μVision-> View -> Serial Window -> ITM Viewer
" Z& W0 @) g" @# C
( G! Z7 ?, n- O2 y+ o- K. I
" I4 X" I& b# `  R3 W3 l& x5 v. t完成这些步骤以后,可以在目标调试期通过ITM Viewer窗口查看到调试跟踪信息,例如显示AD转换的结果。
5 A2 D$ C6 f. o. P: X; d( [  B4 y. N/ I% M$ X
9 N, g: N' ~7 Q6 e. S" }
ITM Viewer的功能类似串口打印调试信息,使用ITM更简单,而且不需要串口以及相关驱动程序。& h  d$ y: a# @2 W! h. t  B1 Z. C

+ e9 j. X5 k. l- j0 ~4.Logic Analyzer 窗口2 r! i3 z8 X, J1 g2 W- O0 g) w6 I0 t
/ T& j: W3 d; u
在调试的时候,可以通过逻辑分析器观测至多4个变量值的变化。执行以下步骤来使用逻辑分析器。
. Q4 U( T# e9 T$ z
6 h, ^" ~" }' P2 V3 \$ E; w+ h· 在Cortex-M Target Driver Setup窗口使能Timestamps并选择合适的Prescaler值。% u7 ^. x' o: y/ x/ A8 w

# s+ T3 ?$ l7 y0 y
( K! f  e% C9 Z/ l7 @; T要想在逻辑分析器的窗口中观测到精确的时间值,必须使能Timestamps。* E% X' {9 k+ o3 _
/ z* L; I  I4 @, b
· 添加准备观测的变量到逻辑分析器中% F3 a( m: O; U1 p& R* u3 w
· 在调试过程中观测变量值的变化
# c) l) n; q6 ]3 r9 |5 f9 z
) k& G5 Q; k7 I4 |  h7 O
3 {1 w! E, X& h" ^5.RTX  Kernel Event Viewer 窗口& U! ]0 A6 P* P
+ z. p: K9 U2 d4 g( d6 V. R
当运行RTX系统时,RTX Kernel Event Viewer 窗口中显示了任务的切换过程,任务切换信息通过专门的ITM激励端口31来传输。
! i; B2 R8 s( ?& K9 W+ U/ H6 A1 v; P7 b2 K. R
执行以下步骤来使能RTX Kernel Event Viewer。
# T  ^) Q3 D1 g! g· 在Cortex-M Target Driver Setup窗口使能ITM 激励端口31$ i9 M. G/ E' g6 Y# {9 d

1 [5 u. n! ]& U% r, {* B+ Y+ v3 k: j
· 选择Trace Enable,设置正确的Core Clock。) B- Z: A9 `/ b% s9 u/ [
/ d- ~* ?+ Z' B% n

) ^% O+ |+ ~/ M: ^0 n7 L· 核查Timestamps为enabled.2 E- X7 K8 v8 [# v" G, N

1 J: ?; G* c) s0 v6 d' [% W& O( G' L
· 在目标调试过程中打开RTX Kernel窗口) U3 {" m% }7 u2 s8 ^: I2 u
, I$ V. r( d; O
选择Peripherals -> RTX Kernel
9 x6 w! W; G4 i
# l; q6 H& Q7 O0 n8 q, H2 g4 Z/ [* Z% \
· 在RTX内核窗口选择Event Viewer标签  
  p* R% @2 S6 E0 \! ?, k
2 I- j, K! h, {9 C0 W* J8 I9 Z; Z9 H1 U
在窗口中更新了每个任务转换过程。选择in或者out按钮放大或缩小窗口。点击all按钮可以显示所有事件记录。' T' ]( w2 a  e4 h( _  Z9 {* [  k
+ K5 l1 b; K" l7 [2 ~# ~0 f
出处:小野狼
收藏 评论3 发布时间:2008-9-3 20:34

举报

3个回答
yuying-66519 回答时间:2008-10-6 12:40:59

回复:使用RealView MDK进行SW调试和实时跟踪

顶一下
simage 回答时间:2008-12-8 20:31:53

RE:使用RealView MDK进行SW调试和实时跟踪

ST的工具做的很强大嘛,呵呵
ddllxxrr 回答时间:2009-3-15 09:35:17

RE:使用RealView MDK进行SW调试和实时跟踪

小锒,这个我浏览过,我的问题是,只用两条线,能不能象HJTAG那样简便点,

所属标签

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