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

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

[复制链接]
qazwsx-19104 发布时间:2008-9-3 20:34
STM32有两个调试端口,即JTAG和SW。Keil 的ULINK2 USB-JATG接口适配器支持这两种调试接口。2 i! D' v$ e6 a

) s1 d' f) Y9 |. k7 c, X& I" K$ `" w, [本文描述了如何配置和使用SW接口来获取各种调试信息。
4 L+ z# r5 o8 C$ h3 p
. D  f6 s4 U! K2 o4 @. n! D" A" y一、目标调试阶段的配置: A4 ?) F! Z1 J3 N2 ?
! T8 K' [2 S/ m4 f1 X+ i# X0 Z% E
1.调试器的选择
3 t' y3 I1 [1 h, j! A# M' a$ `9 `' W( c
选择μVision->Debug ->Options for Target –>Debug,并选择ULINK Cortex Debugger调试器。
6 r' [4 u, M* |( ?  n$ H( p8 [9 {- |0 ?; i+ p6 Y# _2 \
9 h6 A$ S, w- Z4 K! ]  d- d8 X
2.调试目标初始化文件
* F" }! ~$ _- Q# h( f- x7 W+ M9 w4 V' _3 k, b
按照路径\Keil\ARM\Startup\ST,将文件STM32DBG.ini拷贝到工程文件夹中。选择μVision->Debug -> Options for Target –>Debug,同时在Initialization File选项中选择该文件。7 b3 d) D5 _% v6 R. g3 k

6 P( ~' m- {4 K# a2 \4 ~5 E
9 M4 M7 X" Z; V, }3.Cortex-M 目标设备调试驱动配置
) b+ U8 t" ?5 |8 L3 [) A( U+ y' J/ W8 b5 I7 ~# q7 K& m" w
选择Options for Target – Debug – Settings,设置SWJ,端口选择SW。
. l( s0 |- x# o( v) _3 L) J6 b
* y9 x7 l  Z9 ]- K% a1 f, I& U: W) ]: k& m1 P* t, }- s+ v" b
4.Trace功能的配置1 M" U7 S" K5 G$ p0 O
- i: D& K, s& T) |0 v" j- h& u
Trace功能包括:Core Clock, Trace Port 以及定义TraceEvents 等。8 g( Q& m. L1 I: q8 P) Y
; g  \5 ?, Q- ^+ x

7 h2 Y2 Y. S; }& k3 k' b' U2 _, F2 k! `& L; A) v: |* z
二、实时跟踪) ~; h) ~$ D& {+ ?4 g8 o" v- ]8 B
8 d+ @9 Q; [3 h' O7 x& Z% i
1.μVision的状态栏信息
% p" Z+ M6 r" W& i- V1 s0 |
/ `2 H) v, W( \" j4 |) o在μVision的状态栏中显示了实时跟踪的状态信息。" l' h0 P( V4 b: s

- _8 l1 i3 t" p; H: s
8 h/ @  O. W% @: I1 _$ a, |2.实时跟踪窗口
/ `2 u& \. {) j# k& i6 X/ F- r& q( l# \. k/ l1 B* o+ L
调试时选择Peripherals – Trace。  W0 l3 L  S0 q" N! P

  J* {, q6 F) _9 }9 K! ?( i
4 |: Y; F. n- {: w; {- u; g' h* m, M2 \5 `1)Trace Records窗口0 ?" ~  a, B9 J# ]# g) ~  @: f

; E" c- p' L% ^9 G$ r该窗口显示了所有被捕获的跟踪记录,每一个跟踪记录都包含了详细的信息。可以选择Peripherals - Trace – Records来查看。( ]5 p9 s9 w2 U, [. }6 _3 M
& a- i' ]) v$ L; p. x/ d  f- }- f

- V/ L! K+ j$ K+ P: a9 n; ?% d' M2)Exception Trace 窗口
4 ~4 a9 Y2 P6 S) d4 o8 j0 p- |; G* a# {& O7 ]/ Q
该窗口显示了异常和中断的统计信息,这些信息是基于Trace Records中所捕获的跟踪记录的。可以选择Peripherals - Trace - Exceptions来查看。
3 F# T3 B' ]# m: U4 |" O! y! t+ h5 f" Z4 n
. u% x" d9 u2 Q1 F* \
3)Event Counters窗口
. f% i" V. f; Z9 U2 |- R! w" A
  P' N) H' }6 k) o  B这个窗口显示了特殊事件计数器的值,计数值是基于Trace Records中所捕获的跟踪记录的。 0 ~  C( ^0 b2 r& @+ }

9 Z9 w& a$ L& g- S5 S
( B0 r% W) _* o: ~: y6 u1 [# p3.ITM Viewer窗口3 ^8 ?7 P9 Y. F8 t6 H

/ F( o9 w- O0 }4 S可以通过ITM的激励端口0在ITM Viewer窗口上输出ASCII 或 Hex格式的数据,目前只有ITM 端口0可以在ITM Viewer窗口显示。要使用ITM Viewer窗口来显示调试跟踪的输出信息,需要进行以下的操作。' W$ Z8 T3 I6 H( Z6 D& R- [% B
4 R3 D/ ~( I* O4 L
l   在源代码中添加ITM激励端口寄存器的定义。- J7 ]5 ~* C3 S# M( a2 e
& H; d# r0 K6 E% U+ w$ T
#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))" b5 L. R+ g6 f" Q
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))2 s0 r8 @+ k/ ~) D  E6 A( }* G
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))4 c0 Z! @- P( W$ {/ \: T+ K, V, H* f
#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
) \, p' T8 `' \3 T, D: \' V( ?; h#define TRCENA          0x01000000) K6 p2 W6 N! {7 q  {
l   在源代码中添加fputc函数,它向ITM的激励端口0寄存器写数据。如果有了fputc函数,则可以用printf函数做为调试输出。ITM的激励端口0与ITM Viewer窗口固定连接。5 S0 i  N1 W, ]8 g. Y- W  J0 u; e
9 I( o0 D9 h- q7 P+ w
struct __FILE { int handle; /* Add whatever you need here */ };0 v6 h, P; j3 x5 H. D3 H
FILE __stdout;
8 o" E& ]6 U8 R( |FILE __stdin;5 n+ P/ ?6 b" }) A# m
int fputc(int ch, FILE *f) {& {9 [! f" y% J# i, O# y) J* H* Q
if (DEMCR & TRCENA) {
5 `% Z8 N! o2 G: I9 Twhile (ITM_Port32(0) == 0);4 e1 ]5 R. a5 g- K5 s! K
ITM_Port8(0) = ch;
/ ^' N, n7 y9 w  }$ L( n1 ~8 m+ A0 U0 F8 o
return(ch);
. o3 r- q' p- {) t2 j* O" ^}' \% I# }5 z% |2 g: T
l   在源代码中添加printf函数来显示调试跟踪信息。* M3 X+ ?( Z% R8 p
6 i0 V1 ~% J0 s! D( e, ?  @
printf("Serial Wire Output Debug Trace message");  
5 E) x( I, e; E0 O1 p) x% }/ Tl   在Cortex-M Target Driver Setup窗口中使能ITM激励端口0
. i" B6 ^+ v: P* x3 q6 X7 l$ e  h* j5 f- D$ E6 r  q
* z$ C" W  Z2 N
l   在目标调试期,打开ITM Viewer窗口8 {8 o2 Y1 B/ T( L

5 \% x/ }6 n1 _" N4 N; s选择μVision-> View -> Serial Window -> ITM Viewer
2 t7 d' q1 N1 N' C0 v9 C/ W( [) |- ?# L

0 l2 X, ^3 O7 z; ?完成这些步骤以后,可以在目标调试期通过ITM Viewer窗口查看到调试跟踪信息,例如显示AD转换的结果。
6 ?% o$ K9 m2 I( L( S, x$ ^. s, ~2 J* ]4 a) e

2 c, P/ N# o3 \  S$ a% NITM Viewer的功能类似串口打印调试信息,使用ITM更简单,而且不需要串口以及相关驱动程序。
( O' s, H9 I4 G$ x: u
! b0 W, _  X, ]/ X- i+ h4.Logic Analyzer 窗口
, ~, K( H( h- L3 r
* x# o& b  p, q0 b7 o: F在调试的时候,可以通过逻辑分析器观测至多4个变量值的变化。执行以下步骤来使用逻辑分析器。! A2 g- j- _4 Q3 ^* l

5 ?9 X. j: t/ u; n, f5 v7 J8 W· 在Cortex-M Target Driver Setup窗口使能Timestamps并选择合适的Prescaler值。9 g9 w( q8 e7 ~  A: r8 ^
7 J: i; o& d) l1 R; F0 V3 l
7 I9 j( y# x8 F. U% ?
要想在逻辑分析器的窗口中观测到精确的时间值,必须使能Timestamps。* D2 e' ~  v* x( U" y5 m& c
2 r7 O- h$ X& K: h8 S  E
· 添加准备观测的变量到逻辑分析器中# B  Z* f0 M# x/ A3 M6 H9 e
· 在调试过程中观测变量值的变化+ z0 m4 v0 F  v- ~

) J% f# n& h1 T  @8 Q, ?" M! o* F, U0 Q. H7 [# @1 D# O
5.RTX  Kernel Event Viewer 窗口# E# E5 B* z/ ]$ t

+ a! r4 I5 j  c/ J/ Z( _当运行RTX系统时,RTX Kernel Event Viewer 窗口中显示了任务的切换过程,任务切换信息通过专门的ITM激励端口31来传输。
" s+ T0 ]9 _- s+ n' i; e# m. g( I4 p
执行以下步骤来使能RTX Kernel Event Viewer。. y, \- j5 ]2 S& B  ^& Y: E9 R
· 在Cortex-M Target Driver Setup窗口使能ITM 激励端口31
6 A- ~2 e; K" k) X8 X( |* @
* K% w5 g+ t; V0 ]
" a8 S, p3 J& i& v( Y1 {1 o8 J· 选择Trace Enable,设置正确的Core Clock。" p; a$ [- R0 y* s1 h0 L) }1 L

7 X8 i8 g1 }) B* C0 L: Z! w+ K+ d1 `6 [0 r- l) E
· 核查Timestamps为enabled.
/ r* b% Q# F; a# p3 V5 p* J  \  {, H
/ Y, W4 J; J0 v8 o9 _
2 X- Q7 O- L  s. D" e; n· 在目标调试过程中打开RTX Kernel窗口4 V) n1 u( P  q9 `
3 D! t) p+ L  S( S
选择Peripherals -> RTX Kernel8 T9 _9 U2 l) x( s8 d- s* @
9 @4 `! t. D% E9 R) u
" b; S1 p+ _! ~! |( j2 v
· 在RTX内核窗口选择Event Viewer标签  
! n) R& x9 T5 o& M& ~6 \& l2 |
' Q# I+ ]" F$ b
2 k# J, T& x6 T3 C在窗口中更新了每个任务转换过程。选择in或者out按钮放大或缩小窗口。点击all按钮可以显示所有事件记录。
7 {5 `1 _7 U/ P
4 C3 N/ d5 u$ @! o% r* ]出处:小野狼
收藏 评论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 手机版