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

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

[复制链接]
qazwsx-19104 发布时间:2008-9-3 20:34
STM32有两个调试端口,即JTAG和SW。Keil 的ULINK2 USB-JATG接口适配器支持这两种调试接口。. R' n% \" m) ^8 j9 M+ U
2 G& T% y* Y5 M" J+ {/ V6 |5 `
本文描述了如何配置和使用SW接口来获取各种调试信息。* h  V& U: ^7 I
; `, t1 o6 J- y8 D0 Y, f' Z
一、目标调试阶段的配置
7 B6 F& z% ?: j$ p2 Y8 h
$ G+ x1 z% {& [9 {) d: F6 P1.调试器的选择
( M3 A- D( d5 R, h4 @1 @. [" E- J/ a- Q& z
选择μVision->Debug ->Options for Target –>Debug,并选择ULINK Cortex Debugger调试器。2 \  o) o5 k5 z# j/ I* ~* R
% M* k5 S. ?5 A; P* u

1 p" k- x" c/ e$ k( k5 d2.调试目标初始化文件
" {& h4 M4 f" W# T: L( @; X# k- g
- W6 K+ }# ?# g  X3 x+ M. e按照路径\Keil\ARM\Startup\ST,将文件STM32DBG.ini拷贝到工程文件夹中。选择μVision->Debug -> Options for Target –>Debug,同时在Initialization File选项中选择该文件。
4 M% K5 X, a2 s+ [0 s
4 }4 o, e$ a5 _" N# O! p& I: C8 C( m
3.Cortex-M 目标设备调试驱动配置, a9 k/ Z- L$ r
0 Q* J4 R$ N( A% a7 k7 [: c/ i5 d
选择Options for Target – Debug – Settings,设置SWJ,端口选择SW。
2 @* f  t  o! a* T7 P5 z' S" r* J  b- w- [3 z, b
) H  \. l" f9 }' `
4.Trace功能的配置- U2 @, s! g2 @' E5 ]% W

& ?/ T8 i$ ^$ F$ uTrace功能包括:Core Clock, Trace Port 以及定义TraceEvents 等。
5 {# [3 D3 S, |! C+ M% p# X% E
- C9 N' R+ ]; T4 B5 a, m
4 P. h3 Z5 F  M% T3 p6 I- m. M+ N5 W; c: C+ G' S
二、实时跟踪
  D: z1 Z" C8 @" F, s, I
  }, l0 i! H7 Q  x# w1 K* C/ L1.μVision的状态栏信息
9 p( J* c" f9 ^- k8 [3 t4 u; c3 O1 \- m: R; [: r
在μVision的状态栏中显示了实时跟踪的状态信息。; r/ C9 W# X7 m. p' Y( m

# l5 d/ a5 n7 \
$ ^) K- J* b; _6 F; w2.实时跟踪窗口
- P) C- h$ s2 {: `& I7 i0 C( O. c8 f5 C$ Y1 N
调试时选择Peripherals – Trace。3 k3 X/ w) {1 p5 ], d# z' J! |
& Z' _  E0 [9 k( J8 v% l6 P

  V  F7 p" P7 {6 m1)Trace Records窗口
# j0 ^' [1 l' n; [+ Z. S  r' x* X! g" ~  p. v- G( E0 ^; C/ W3 G
该窗口显示了所有被捕获的跟踪记录,每一个跟踪记录都包含了详细的信息。可以选择Peripherals - Trace – Records来查看。
# Q, r6 p7 |+ w/ m. N. I# v) l
- C6 K( n; ]: x7 T  |0 @, Z
8 c. L! @6 _) O# r6 s2)Exception Trace 窗口& n, @5 Q/ X, ^/ k+ j* d
3 t/ A9 T" M0 p( z. C% I/ |
该窗口显示了异常和中断的统计信息,这些信息是基于Trace Records中所捕获的跟踪记录的。可以选择Peripherals - Trace - Exceptions来查看。: a; g. h+ ?+ ]- |
. v0 p# Y8 }% F2 i) h1 J* S$ ]

% @  z, q0 q( d+ F& }. Z+ _3)Event Counters窗口0 r* X8 p3 ]8 }/ k6 z$ X/ b
( b3 V& W/ h2 c% T4 X
这个窗口显示了特殊事件计数器的值,计数值是基于Trace Records中所捕获的跟踪记录的。 $ \" h5 u- V, t. u: `
  I1 T* A" b. V* [; q
6 i' L" F7 J8 _: J0 x3 W
3.ITM Viewer窗口
% d' R  o2 Z5 e2 W  d) c1 L
# ~; i! V3 e% W% h* U可以通过ITM的激励端口0在ITM Viewer窗口上输出ASCII 或 Hex格式的数据,目前只有ITM 端口0可以在ITM Viewer窗口显示。要使用ITM Viewer窗口来显示调试跟踪的输出信息,需要进行以下的操作。
# `9 S( @6 s! L  x. H1 t9 g' ~3 w' k2 [2 P3 J
l   在源代码中添加ITM激励端口寄存器的定义。
; n8 G& l" R  a8 Z
  y: O, h  i5 @4 C# }- Z1 c#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))& i% I1 h# `) x
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
; t9 E& K+ p# v% O( a#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))
5 Q2 N" V! _$ b2 L#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
; _4 _/ L  P; h2 F$ O#define TRCENA          0x01000000
, [2 i$ s1 k; h2 u3 M  R+ j! m$ t% ul   在源代码中添加fputc函数,它向ITM的激励端口0寄存器写数据。如果有了fputc函数,则可以用printf函数做为调试输出。ITM的激励端口0与ITM Viewer窗口固定连接。
: x5 Y6 S0 }/ t. G- k
4 B$ `- J5 b$ |) i( Wstruct __FILE { int handle; /* Add whatever you need here */ };
9 Y* |3 t, [4 `. xFILE __stdout;3 p9 B. u) r& E8 Z4 K# p
FILE __stdin;  ?/ ]9 y, l% k
int fputc(int ch, FILE *f) {
5 l# f; x$ W: L4 {# U: dif (DEMCR & TRCENA) {
: }- X" d# c7 D$ J& H2 \# zwhile (ITM_Port32(0) == 0);
  |# m/ M) }2 u0 `' |ITM_Port8(0) = ch;
4 ^& @- L. Z  z  q* ?  w! A' ~  }
# [* h! h! T" H% D' w* Dreturn(ch);
4 l! b. P4 T7 J7 W8 ]3 O% C}
% _  T, u- k$ ^- |7 Hl   在源代码中添加printf函数来显示调试跟踪信息。" n0 J1 C; a' s* t

& u9 q9 ^$ L& n2 o; V7 }printf("Serial Wire Output Debug Trace message");  ! f  A6 A$ G/ h. S
l   在Cortex-M Target Driver Setup窗口中使能ITM激励端口07 \# }- v# U& e

" G0 c( C8 e3 I. o% e1 |, K3 {& X1 l# H3 S% ?
l   在目标调试期,打开ITM Viewer窗口8 M/ h7 J  J' m, }# R9 _4 S
7 ~- D* K4 ]# ^6 q! D- H" {
选择μVision-> View -> Serial Window -> ITM Viewer
: T' I2 f( b3 M# G5 t
( g4 U: v" C& V& T0 x# B2 U" w5 M! |' R9 v$ Z! t
完成这些步骤以后,可以在目标调试期通过ITM Viewer窗口查看到调试跟踪信息,例如显示AD转换的结果。- V6 B' B9 I9 d

( r+ Z: _4 {& B" P0 c# O# A' C( y$ V' V% F' c
ITM Viewer的功能类似串口打印调试信息,使用ITM更简单,而且不需要串口以及相关驱动程序。
: C8 a$ p( d# R+ l! m/ D
6 C/ u. q/ h1 G) B! m4.Logic Analyzer 窗口' A/ {7 \, y+ a3 ?" j

. g3 N) N8 N/ Z$ B# I9 o' M在调试的时候,可以通过逻辑分析器观测至多4个变量值的变化。执行以下步骤来使用逻辑分析器。
; I* U2 `1 m* T; n9 t9 r9 Q+ l% ?5 {- ^" B/ l/ O$ b
· 在Cortex-M Target Driver Setup窗口使能Timestamps并选择合适的Prescaler值。
: D" @' S/ z) O. ?; h9 f. T, W  T
$ a: S: w7 f4 q* ?
0 Z+ O) c0 n3 m要想在逻辑分析器的窗口中观测到精确的时间值,必须使能Timestamps。' s6 ~0 ]7 D6 q8 P3 i0 N
1 }1 a) g- h% L0 s  B
· 添加准备观测的变量到逻辑分析器中, A8 E. a4 ]! G0 z; u  Y- a, h
· 在调试过程中观测变量值的变化8 t7 @6 e* V! a5 v0 o$ H* _

. ]: [+ X3 t- C$ a: D, r) a% a( D+ G9 w/ S8 k/ o% v
5.RTX  Kernel Event Viewer 窗口: v# {1 Z0 n5 N2 Y; `
+ K9 l; ~6 n1 e
当运行RTX系统时,RTX Kernel Event Viewer 窗口中显示了任务的切换过程,任务切换信息通过专门的ITM激励端口31来传输。
( ?  f  n1 w* c5 ?* b  i. q" w/ s6 d( c$ _1 U3 l- j8 Q' o, ^
执行以下步骤来使能RTX Kernel Event Viewer。
9 X# b3 k. W1 ?2 H) b· 在Cortex-M Target Driver Setup窗口使能ITM 激励端口31
' V* \/ H0 n" B
( I  N' a, V% P/ y5 H  J. a
9 e7 m+ \. K- _$ |! C( @· 选择Trace Enable,设置正确的Core Clock。& k6 q# K* H5 W0 x, ~; A  R

( x$ ?4 i5 |0 r+ e* l- S6 w( W9 o' d, U' I( z) F1 B
· 核查Timestamps为enabled.
6 l! Y/ C5 {* u8 [& A3 |! u- z1 `( L/ x1 X' U

6 K# w# C+ i3 b· 在目标调试过程中打开RTX Kernel窗口
, G, J& F3 R, t2 U+ M7 P7 R
0 H0 I( @/ l' x& |; E选择Peripherals -> RTX Kernel
+ b$ H* x% Q' @( Y6 u* E. \/ p; i# r/ W6 Z/ k7 L+ h5 X6 ]" v8 A, B9 l
; A8 H) q0 r( o( o( c  z
· 在RTX内核窗口选择Event Viewer标签  . `5 e( z7 h8 d  D- k& Z

" `' G5 T' t8 k+ Y, t4 C
! w: }1 ~$ [6 O4 B% p, Q在窗口中更新了每个任务转换过程。选择in或者out按钮放大或缩小窗口。点击all按钮可以显示所有事件记录。  Z( H' l3 p+ W9 P5 C
! Y1 d) H  l) E7 K) D6 h
出处:小野狼
赞 收藏 评论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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版