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

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

[复制链接]
qazwsx-19104 发布时间:2008-9-3 20:34
STM32有两个调试端口,即JTAG和SW。Keil 的ULINK2 USB-JATG接口适配器支持这两种调试接口。
1 J* m8 I% [% x6 ^  I* B& @
: \: g8 H  p3 a本文描述了如何配置和使用SW接口来获取各种调试信息。
  T) ?: n/ u. v6 T* C. B3 }# r$ x  U# ?: I2 a
一、目标调试阶段的配置
# {! A  L9 W( S; S2 z2 I0 X1 }. J) V; q
1.调试器的选择
. n# p4 h2 C0 w1 u9 p+ Z$ x( n# _+ P9 [
选择μVision->Debug ->Options for Target –>Debug,并选择ULINK Cortex Debugger调试器。6 |9 ^. k! y0 ?+ Y5 h
  J# t2 R! k- A, Z% I+ D
0 g; X1 l- W) D+ c" i2 d
2.调试目标初始化文件* r1 Y! \$ e5 s+ ?/ L$ [

; h, U6 u& o" c; K0 M' _8 u8 T按照路径\Keil\ARM\Startup\ST,将文件STM32DBG.ini拷贝到工程文件夹中。选择μVision->Debug -> Options for Target –>Debug,同时在Initialization File选项中选择该文件。
$ O3 j3 `# G& G3 b! v1 e" m( \% \+ \7 c. a6 O

9 ^) R( s* R1 u* P( R3.Cortex-M 目标设备调试驱动配置
# O- A6 w& S; R2 d: U( T% p& `. F% k6 t, o* H7 m. G
选择Options for Target – Debug – Settings,设置SWJ,端口选择SW。; {. `0 |: r/ z
! h3 ~, p/ y) M* Y. |' ]
$ a+ d# r% q; F+ H
4.Trace功能的配置5 O8 N; i1 L6 |6 h- `" W

# z1 B8 F1 \, yTrace功能包括:Core Clock, Trace Port 以及定义TraceEvents 等。
2 M0 H. q5 o/ e) b: K+ o
5 Y5 Z; ~. z5 J* G, K! u9 V5 _& m1 L& n

- T$ `, r! q: [6 _$ I1 c二、实时跟踪2 u$ \" S! s. ]  ^& E4 X

, k$ j1 |6 C9 w. e$ B/ G1.μVision的状态栏信息# B# C, r* o( V2 D, \( h; e

4 D  F) b! U2 _  ~3 X在μVision的状态栏中显示了实时跟踪的状态信息。
" o4 Y1 W$ m+ Z" N8 l
7 `; i" b0 r9 O) F+ v8 B- |* b5 n0 F3 X: j' }/ {# j1 _  |
2.实时跟踪窗口7 k7 x4 c% K( S
$ P  K" H. A0 Z1 g1 q9 V( m
调试时选择Peripherals – Trace。0 y  S. H1 `. p9 g/ _* m4 g* S! V

  o/ Y8 s. q% E' w, B6 V/ f. i* ?" \
9 E  m) z+ F- M* b1)Trace Records窗口" ?, m% S; p( E% w
4 p* Z  m1 H$ k! A  Y$ T$ m( U
该窗口显示了所有被捕获的跟踪记录,每一个跟踪记录都包含了详细的信息。可以选择Peripherals - Trace – Records来查看。3 X% R& ~; F. w, d* H! I2 i
& I2 D% D: @- ?# l9 K& n# G

  f4 G; s  Y$ R, g# _2)Exception Trace 窗口( h9 S4 U; v2 f) ~6 o( t$ I+ ]
7 S" l& U" N8 n8 h
该窗口显示了异常和中断的统计信息,这些信息是基于Trace Records中所捕获的跟踪记录的。可以选择Peripherals - Trace - Exceptions来查看。% R6 Y9 W% b% r8 T7 t9 |
! ~& e9 M- j: h8 |% o
6 w+ _. u* B* x
3)Event Counters窗口6 N( n7 M# g% P- |
! `9 ^% N; j" j, A' K! ]
这个窗口显示了特殊事件计数器的值,计数值是基于Trace Records中所捕获的跟踪记录的。
; i6 n* k& o: n; O
6 Q  V. T$ A0 `+ X+ S# R" X6 {) x- s
3.ITM Viewer窗口6 s! N) J  ]( E1 x+ d

; B/ u, C$ c: J2 z0 f可以通过ITM的激励端口0在ITM Viewer窗口上输出ASCII 或 Hex格式的数据,目前只有ITM 端口0可以在ITM Viewer窗口显示。要使用ITM Viewer窗口来显示调试跟踪的输出信息,需要进行以下的操作。
2 [4 U# g0 M5 h( N! D! }3 i, ]* x3 _4 q' j0 S4 Y" y/ K! `( w$ \' f$ N
l   在源代码中添加ITM激励端口寄存器的定义。
" w' X& z! A" w. k
, \6 ^" a% y# T4 j; ]8 Y#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
4 R0 c4 @/ C& A#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
5 ^6 Y" C- f4 m4 ~1 C) M. R#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))( K9 y  \8 s* d( H. ]
#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
* n+ c0 ~" L, d0 n8 @#define TRCENA          0x01000000
% [1 B0 v4 w( q/ x" t  f0 ol   在源代码中添加fputc函数,它向ITM的激励端口0寄存器写数据。如果有了fputc函数,则可以用printf函数做为调试输出。ITM的激励端口0与ITM Viewer窗口固定连接。0 I- R- g, L; j/ u8 c6 b
2 w. P1 P& ~" b1 X( ?! K; Q
struct __FILE { int handle; /* Add whatever you need here */ };9 W5 N, ~- j2 G
FILE __stdout;
! A- @  P; p" [9 Z  G0 rFILE __stdin;7 _8 |- v: B( M6 ^, ?' r7 M0 y2 S$ |
int fputc(int ch, FILE *f) {
8 ?/ M& m6 v) O6 \6 vif (DEMCR & TRCENA) {
. d" d- _$ T7 v- O) a/ Vwhile (ITM_Port32(0) == 0);
& H" |$ `$ `4 h7 S8 d) B, ^, TITM_Port8(0) = ch;" f2 D' i1 G# p8 t! T% y3 B
  }& j* `3 D" g* u8 Q4 x1 q5 [
return(ch);
5 i* Y/ f8 X$ b# F}# N& |$ M0 \) \
l   在源代码中添加printf函数来显示调试跟踪信息。
: _( j: Q- m- V) f
- k# C# \: _* [6 @6 r0 ^# s- }printf("Serial Wire Output Debug Trace message");  
) u0 E2 I- P% f  kl   在Cortex-M Target Driver Setup窗口中使能ITM激励端口0, q. B$ U2 S) e$ M/ K
9 O; W0 b# m  r6 D
5 q2 d2 S8 b& K6 ~. {7 W8 {! k3 m
l   在目标调试期,打开ITM Viewer窗口, X* z+ O% k1 |4 T
, L% p7 V' G- \% p
选择μVision-> View -> Serial Window -> ITM Viewer- u7 S, U- f* _4 i

8 q% f: ^, `5 p  _
$ _# A2 o7 U6 f& i& |6 D' f+ L" v完成这些步骤以后,可以在目标调试期通过ITM Viewer窗口查看到调试跟踪信息,例如显示AD转换的结果。
& `$ ^6 }9 h: p' P! ]1 U$ Z' p/ D0 ?( @

* k- I1 A0 q! m  s  g, \ITM Viewer的功能类似串口打印调试信息,使用ITM更简单,而且不需要串口以及相关驱动程序。
, E" X# Q. w+ T  B- r8 {1 e! V6 G$ U; ]$ M( u; `- d; T8 L
4.Logic Analyzer 窗口
! X' C4 U0 D5 k# d- M4 @1 ]9 o$ g+ \6 Q. y! C; @
在调试的时候,可以通过逻辑分析器观测至多4个变量值的变化。执行以下步骤来使用逻辑分析器。0 L& z* p5 N& ]( f
" j/ u; [  G7 c; r8 t  W9 L
· 在Cortex-M Target Driver Setup窗口使能Timestamps并选择合适的Prescaler值。- H, ?+ U0 t8 Q9 Z* ?! U

' F' d& b) Q7 \' i
( T3 U, {" Q" H2 h( d要想在逻辑分析器的窗口中观测到精确的时间值,必须使能Timestamps。  a; O! E1 L1 y5 g7 k( v/ H
: h6 h! O, S. e: y5 h& \
· 添加准备观测的变量到逻辑分析器中3 l/ T% m' Y0 C: A, Z) `+ i5 ~6 e
· 在调试过程中观测变量值的变化
7 |+ b; r& d7 `, g
* y8 J, V) X' C. @& C: S
% H0 h) R/ Z2 h) M2 A5.RTX  Kernel Event Viewer 窗口
; e2 Q% b9 P3 S
6 Q, Z- j, C% j当运行RTX系统时,RTX Kernel Event Viewer 窗口中显示了任务的切换过程,任务切换信息通过专门的ITM激励端口31来传输。
! R9 Q9 A3 S& S/ j, ^2 L7 I/ {! F5 O- i8 H% v! u" H
执行以下步骤来使能RTX Kernel Event Viewer。& M% ], q- @2 D
· 在Cortex-M Target Driver Setup窗口使能ITM 激励端口31/ l$ W& D3 E5 R$ }7 C. Y$ X
- H: k1 c# y1 o) u" g% |# |7 W

" X! ?- m3 S# s) w· 选择Trace Enable,设置正确的Core Clock。
) {) _6 B$ ]! r# E$ E
+ Y' q( e4 g" S" F$ X; L" _
  O9 o* p) z# @! _( u& B· 核查Timestamps为enabled./ \, z; L) w. l' M9 x

( Q; z$ @6 r* d
6 t0 q0 U! X! }6 a7 K6 a6 a· 在目标调试过程中打开RTX Kernel窗口
2 e$ |( i! \- g$ n# E8 O4 Z6 H9 M9 Y& Z# \2 Y3 {( O
选择Peripherals -> RTX Kernel- o- L- z1 j$ f7 @* u

* `) h1 q. R: q( }
4 T! H6 q" O0 Z# M· 在RTX内核窗口选择Event Viewer标签  - h" H' x8 s+ c8 ]
" x& ~; t+ r+ i+ }6 v1 [. e  X

" }) @) E# p' Q: _在窗口中更新了每个任务转换过程。选择in或者out按钮放大或缩小窗口。点击all按钮可以显示所有事件记录。% G3 s5 }3 e* p- u# }

7 g1 L( Z4 _7 {+ P: ^! P/ K出处:小野狼
收藏 评论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 手机版