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

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

[复制链接]
qazwsx-19104 发布时间:2008-9-3 20:34
STM32有两个调试端口,即JTAG和SW。Keil 的ULINK2 USB-JATG接口适配器支持这两种调试接口。
! c+ ^8 [0 T& @2 G( F9 i( l8 f; }! P# F! X
本文描述了如何配置和使用SW接口来获取各种调试信息。, e9 Q5 `: X  W* E, h7 a& ~

  o0 Q7 Y0 c2 X1 p8 X一、目标调试阶段的配置
2 `, `( f9 ^3 a
" b$ y" q. i8 O0 {1.调试器的选择
# ]) m! n1 S: L) {% A* E" A) y1 t+ M9 E, s
选择μVision->Debug ->Options for Target –>Debug,并选择ULINK Cortex Debugger调试器。+ Z& C6 I( u+ P* [" U( m7 J
' D3 D' @! E- w6 A( [! e

4 q8 q6 K& L. Z% M2.调试目标初始化文件( y3 d' G4 {: t* d
6 C) x3 R  n( Q8 U
按照路径\Keil\ARM\Startup\ST,将文件STM32DBG.ini拷贝到工程文件夹中。选择μVision->Debug -> Options for Target –>Debug,同时在Initialization File选项中选择该文件。
2 |7 h& O+ `9 L  z; P. i
% H4 T1 j/ R0 T8 T- g& A: c7 O! A+ c# E" r1 S- k
3.Cortex-M 目标设备调试驱动配置
5 c: `) M2 \5 O0 g% k# j8 N+ B6 r  d" z
选择Options for Target – Debug – Settings,设置SWJ,端口选择SW。
* n3 b( J' o( i& Y
8 w8 u6 W, J  y+ w: Q
# C5 c4 R) B+ s# C( a; D5 j5 w  K4.Trace功能的配置- X: n/ D8 C3 X" m$ x  C( W

% E! B6 P& T5 _. k8 TTrace功能包括:Core Clock, Trace Port 以及定义TraceEvents 等。) s* k3 K0 Q$ W1 j
. W! x$ s# v7 I+ ^8 C1 L

- p0 X9 {$ k& Q, Z3 c1 L. d
9 A' p  M6 Z9 k4 V" f$ b" Q% P二、实时跟踪
! X, A( X4 _3 ?1 J/ x9 i- O6 M3 \+ Z' A& g6 Q2 T; H  z
1.μVision的状态栏信息
, w) L. X4 @5 k" q& p8 F  B" K% n) |2 H4 a5 w+ ~
在μVision的状态栏中显示了实时跟踪的状态信息。; g3 R# o, d- a% Y" E/ ~" ]3 a  `. s; x
7 G2 \2 [' I# ~7 d  s

, u: T  y/ ^5 n2.实时跟踪窗口
, J1 V, C* p$ i2 s9 z) @9 T2 A, E& I8 E$ b9 |- e' |
调试时选择Peripherals – Trace。" o6 a$ V2 q1 C% b3 N: k6 {5 q" x
  F( K2 g$ ^) n+ V

# T- o# s: ^. I% N* {" {8 W1)Trace Records窗口; X/ w5 W8 ]) h0 w" b

% @3 T! ]. o) X4 }7 S该窗口显示了所有被捕获的跟踪记录,每一个跟踪记录都包含了详细的信息。可以选择Peripherals - Trace – Records来查看。1 p  K3 v; C. [
* c6 [/ g" C, n# u

. `6 K& Z( }; I# b( v2)Exception Trace 窗口6 K1 ^1 U6 ]8 ]) \5 i# x

( c" ~* a( F  m0 L  \& D* K该窗口显示了异常和中断的统计信息,这些信息是基于Trace Records中所捕获的跟踪记录的。可以选择Peripherals - Trace - Exceptions来查看。
. O7 B4 F1 f9 g: }1 B! O' Q2 s
0 ~7 w0 }  U. n7 q" \/ ~+ M6 ?( A+ v; S' Z
3)Event Counters窗口
8 a; r% T3 p- L& A- B6 p. P' m/ b+ W; S  G* R1 a+ X- H& a2 H* _7 l
这个窗口显示了特殊事件计数器的值,计数值是基于Trace Records中所捕获的跟踪记录的。 # a5 `' L6 ]( b6 k  Z# K
4 r& K7 Z- Y1 U. [3 h1 ~
( W9 W% L" L% O
3.ITM Viewer窗口
: s- @" w" Z! R; O# b, X; E6 m* v. @" M2 r! P/ V  I7 u! G4 V
可以通过ITM的激励端口0在ITM Viewer窗口上输出ASCII 或 Hex格式的数据,目前只有ITM 端口0可以在ITM Viewer窗口显示。要使用ITM Viewer窗口来显示调试跟踪的输出信息,需要进行以下的操作。
; O3 \  s3 y: x1 n# E# b+ Y' l; W# j; [4 q
l   在源代码中添加ITM激励端口寄存器的定义。
8 P1 J5 U1 ]8 D& O+ c* a7 R7 p8 N: K' X7 _" w% Z6 H/ k
#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
( r% |+ O( e+ I2 p- ?#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))8 ^3 Q) O6 ~9 D! q
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))
" M8 C+ W" c$ _6 z5 e! O5 x#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
. P7 ~6 w2 T% r  |5 i) H#define TRCENA          0x01000000  H! G5 e0 ^7 \7 F2 p- c5 W
l   在源代码中添加fputc函数,它向ITM的激励端口0寄存器写数据。如果有了fputc函数,则可以用printf函数做为调试输出。ITM的激励端口0与ITM Viewer窗口固定连接。
7 ~, b$ w8 @! r: S  M3 i% f; t
8 |6 j; O" n8 H' Mstruct __FILE { int handle; /* Add whatever you need here */ };
3 [; F  g; @- H) g" Q. H7 WFILE __stdout;
' J* }0 v6 \& X1 P) u) wFILE __stdin;
2 F/ ^3 C. R7 Aint fputc(int ch, FILE *f) {
* F( I$ N. B) F. `' |if (DEMCR & TRCENA) {
1 {( v. H" _, T3 @- g$ kwhile (ITM_Port32(0) == 0);
  J3 `. f$ p$ y7 U. hITM_Port8(0) = ch;0 D! S- @) R: _" c6 Z1 Q/ d; F
  }- H) J" E7 c' F
return(ch);, P. d0 j7 ]& s6 p* A
}$ j: A3 h" e% e) [2 j
l   在源代码中添加printf函数来显示调试跟踪信息。
( D. [0 G4 f) J7 k
, s6 k# k/ X0 k* X, p6 `3 s7 H' eprintf("Serial Wire Output Debug Trace message");  
1 s* h( b6 {% Y3 Hl   在Cortex-M Target Driver Setup窗口中使能ITM激励端口0
1 ]' F0 x; X1 k) J+ A. i- O/ I
. V3 Y% R) i) ^+ F- @6 c; t2 z/ R# |$ e. a9 x3 |  i7 Z0 [/ G
l   在目标调试期,打开ITM Viewer窗口
. a6 ]! i$ R* l- k# s% Y( P. ^+ R* B
选择μVision-> View -> Serial Window -> ITM Viewer8 k3 m* s  ^8 \2 d

! E  y9 ^* S9 Y4 f& c2 {) c9 P0 E! l4 k. y. t# ?, i
完成这些步骤以后,可以在目标调试期通过ITM Viewer窗口查看到调试跟踪信息,例如显示AD转换的结果。" U+ I5 x. W, ~8 f( W  T6 v

0 L% d+ S8 g3 T, U" M# x4 _5 G6 r) i3 j$ J' ?
ITM Viewer的功能类似串口打印调试信息,使用ITM更简单,而且不需要串口以及相关驱动程序。* x1 E" K; `' c+ b. w2 n

6 }! E+ w" A. V. J( J7 B- F& \4.Logic Analyzer 窗口6 j; L5 _1 h; `! f$ ^
1 R2 S' c) ?& Y4 Z- f2 Z7 T: \3 T4 h
在调试的时候,可以通过逻辑分析器观测至多4个变量值的变化。执行以下步骤来使用逻辑分析器。
4 L& l1 R# t: }1 \: ^! _6 [3 |% s
· 在Cortex-M Target Driver Setup窗口使能Timestamps并选择合适的Prescaler值。
8 p% R+ y, g" u. Y( O) m# e' g
2 v" u" l( W+ m  m; ]
  I' c& U8 ?+ J- O6 L要想在逻辑分析器的窗口中观测到精确的时间值,必须使能Timestamps。2 F1 F4 ^! [$ x/ C/ ?4 P

' I, }8 h' m* \- j  o0 N· 添加准备观测的变量到逻辑分析器中
& }9 U! j; l5 s6 q5 Q+ B. n: ^& Q· 在调试过程中观测变量值的变化" z2 k& e5 V7 b5 f( D

$ K" x! m" u) P) U& ?: Q) d  G/ H% B' }# ^7 N! A) o
5.RTX  Kernel Event Viewer 窗口" P  M+ ^' R5 u# ]5 A4 W

' e: }, ~0 c8 D; r) d( P# @) p4 F当运行RTX系统时,RTX Kernel Event Viewer 窗口中显示了任务的切换过程,任务切换信息通过专门的ITM激励端口31来传输。. A" U# R3 C$ ?( l( I$ m8 I) d& }4 ?

4 U  X" g$ @' ~/ y: r执行以下步骤来使能RTX Kernel Event Viewer。. y9 _9 ?2 M. {9 s' }3 k7 m. [2 u
· 在Cortex-M Target Driver Setup窗口使能ITM 激励端口31/ v( L; s8 U: |9 x, H: x7 {( J
1 @# O8 ]0 d  p; ~9 p, ^( Y
0 f; p. ^6 b, m/ l& P" m: b0 {
· 选择Trace Enable,设置正确的Core Clock。) |+ ~9 P0 U" w0 C2 I0 o# T

2 n, ^$ ]4 e2 R1 t; T  ?; z/ [
5 {. T7 M$ M$ D2 p2 N· 核查Timestamps为enabled.$ k: e. v+ W( W$ r: |* ~

2 C8 @* J' \# t; d, K
6 X, j& Z# Y* ?6 B7 a· 在目标调试过程中打开RTX Kernel窗口
! d. `- p& A- i7 R
% i3 ]& L% b, t选择Peripherals -> RTX Kernel
; q, `. Z- W0 N  Q! v
4 c0 Y6 _# U; \5 m8 Y. i! S% `& @, R
· 在RTX内核窗口选择Event Viewer标签  ' p: s+ S7 h# x4 z4 Y

) a& u4 v4 g* l% u& T6 ?: X: b7 [$ s( x
在窗口中更新了每个任务转换过程。选择in或者out按钮放大或缩小窗口。点击all按钮可以显示所有事件记录。
- E* P  B' O0 b4 s" j7 u9 s: g+ @5 S: U$ n: W
出处:小野狼
收藏 评论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 手机版