10962|17

55

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

使用RealViewMDK进行SW调试和实时跟踪(ARM调试技术的新突破) [复制链接]

STM32有两个调试端口,即JTAG和SW。Keil 的ULINK2 USB-JATG接口适配器支持这两种调试接口。

本文描述了如何配置和使用SW接口来获取各种调试信息。

一、目标调试阶段的配置

1.调试器的选择

选择μVision->Debug ->Options for Target –>Debug,并选择ULINK Cortex Debugger调试器。



2.调试目标初始化文件

按照路径KeilARMStartupST,将文件STM32DBG.ini拷贝到工程文件夹中。选择μVision->Debug -> Options for Target –>Debug,同时在Initialization File选项中选择该文件。



3.Cortex-M 目标设备调试驱动配置

选择Options for Target – Debug – Settings,设置SWJ,端口选择SW。



4.Trace功能的配置

Trace功能包括:Core Clock, Trace Port 以及定义TraceEvents 等。



二、实时跟踪

1.μVision的状态栏信息

在μVision的状态栏中显示了实时跟踪的状态信息。



2.实时跟踪窗口

调试时选择Peripherals – Trace。



1)Trace Records窗口

该窗口显示了所有被捕获的跟踪记录,每一个跟踪记录都包含了详细的信息。可以选择Peripherals - Trace – Records来查看。



2)Exception Trace 窗口

该窗口显示了异常和中断的统计信息,这些信息是基于Trace Records中所捕获的跟踪记录的。可以选择Peripherals - Trace - Exceptions来查看。



3)Event Counters窗口

这个窗口显示了特殊事件计数器的值,计数值是基于Trace Records中所捕获的跟踪记录的。



3.ITM Viewer窗口

可以通过ITM的激励端口0在ITM Viewer窗口上输出ASCII 或 Hex格式的数据,目前只有ITM 端口0可以在ITM Viewer窗口显示。要使用ITM Viewer窗口来显示调试跟踪的输出信息,需要进行以下的操作。

l   在源代码中添加ITM激励端口寄存器的定义。

#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA          0x01000000
l   在源代码中添加fputc函数,它向ITM的激励端口0寄存器写数据。如果有了fputc函数,则可以用printf函数做为调试输出。ITM的激励端口0与ITM Viewer窗口固定连接。

struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;
int fputc(int ch, FILE *f) {
if (DEMCR & TRCENA) {
while (ITM_Port32(0) == 0);
ITM_Port8(0) = ch;
  }
return(ch);
}
l   在源代码中添加printf函数来显示调试跟踪信息。

printf("Serial Wire Output Debug Trace message");  
l   在Cortex-M Target Driver Setup窗口中使能ITM激励端口0



l   在目标调试期,打开ITM Viewer窗口

选择μVision-> View -> Serial Window -> ITM Viewer



完成这些步骤以后,可以在目标调试期通过ITM Viewer窗口查看到调试跟踪信息,例如显示AD转换的结果。



ITM Viewer的功能类似串口打印调试信息,使用ITM更简单,而且不需要串口以及相关驱动程序。

4.Logic Analyzer 窗口

在调试的时候,可以通过逻辑分析器观测至多4个变量值的变化。执行以下步骤来使用逻辑分析器。

· 在Cortex-M Target Driver Setup窗口使能Timestamps并选择合适的Prescaler值。



要想在逻辑分析器的窗口中观测到精确的时间值,必须使能Timestamps。

· 添加准备观测的变量到逻辑分析器中

· 在调试过程中观测变量值的变化



5.RTX  Kernel Event Viewer 窗口

当运行RTX系统时,RTX Kernel Event Viewer 窗口中显示了任务的切换过程,任务切换信息通过专门的ITM激励端口31来传输。

执行以下步骤来使能RTX Kernel Event Viewer。

· 在Cortex-M Target Driver Setup窗口使能ITM 激励端口31



· 选择Trace Enable,设置正确的Core Clock。



· 核查Timestamps为enabled.



· 在目标调试过程中打开RTX Kernel窗口

选择Peripherals -> RTX Kernel



· 在RTX内核窗口选择Event Viewer标签        



在窗口中更新了每个任务转换过程。选择in或者out按钮放大或缩小窗口。点击all按钮可以显示所有事件记录。
相关链接:http://www.realview.com.cn/wen-class-iq.asp?lx=big&anid=51
此帖出自stm32/stm8论坛

最新回复

wcg
                                 多謝樓主!   详情 回复 发表于 2008-10-27 09:36
点赞 关注
 

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

SWD调试告别5线的JTAG调试 只用两根线哦

                                 可以进行实时调试和数据跟踪
此帖出自stm32/stm8论坛
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

MS大家都不是很关心TRACE

Trace确实很好用。。。
不过MS现在大家做MCU开发还没有习惯用,或者没有发现他的好处。。。
新方式,新理念,新技术的普及还是需要时间滴。。。
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 

Trace好像很好用!

                                 Trace好像很好用!
此帖出自stm32/stm8论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

5
 

SW还需硬件吗

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 

SWD调试

                                 SW需要MDK的ULINK2仿真器,SWD调试是ULINK2特有的
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 

口水..调试越来越丰富了..

                                 Trace调试 还是比较牛。
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

8
 

Ulinkme 不能用于跟踪调试是吗?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 

一会试试

                                 一会去试试
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

10
 

很强大~~~

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

11
 

学习

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

46

帖子

0

TA的资源

一粒金砂(初级)

12
 

不是两线吗,为什么还要ULINK2,我自己用两条线不行吗

                                 为什么又要ULINK2,当初我看到这个挺兴奋,以为摆脱了ULINK2,难道就两根线不行吗?
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

13
 

SWD调试是ULINK2特有的

SWD调试是ULINK2特有的,可以进行实时调试和数据跟踪
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

14
 

大同小异。

可以省空间是的, STLINK2何时可以搞搞两线。

就如 CAN,RS485 USB,  等传输方式。
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

15
 

等待ULINK Pro吧

                                 Trace非常有用的,但是不足够强大的。要强大,等待ULINK Pro吧。
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

16
 

已经非常强大了!

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

17
 

echo

纯粹为做个记号好找,

坛子的收藏功能咋用的呢? 哎,这智商看来是有问题了。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

18
 

mark下,待用

                                 多謝樓主!
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表