一、目标调试阶段的配置
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个变量值的变化。执行以下步骤来使用逻辑分析器。
l 在Cortex-M Target Driver Setup窗口使能Timestamps并选择合适的Prescaler值。
要想在逻辑分析器的窗口中观测到精确的时间值,必须使能Timestamps。
l 添加准备观测的变量到逻辑分析器中
l 在调试过程中观测变量值的变化
当运行RTX系统时,RTX Kernel Event Viewer 窗口中显示了任务的切换过程,任务切换信息通过专门的ITM激励端口31来传输。
执行以下步骤来使能RTX Kernel Event Viewer。
l 在Cortex-M Target Driver Setup窗口使能ITM 激励端口31
l 选择Trace Enable,设置正确的Core Clock。
l 核查Timestamps为enabled.
l 在目标调试过程中打开RTX Kernel窗口
选择Peripherals -> RTX Kernel
l 在RTX内核窗口选择Event Viewer标签
在窗口中更新了每个任务转换过程。选择in或者out按钮放大或缩小窗口。点击all按钮可以显示所有事件记录。
上一篇:基于OV7620和ARM开发的图像采集系统
下一篇:ARM7 9 10的分类系列以及特别
推荐阅读最新更新时间:2024-03-16 12:45
设计资源 培训 开发板 精华推荐
- 分享、评论《Vishay光电子博文》尽享精彩好礼!
- 今日竞拍:TI SimpleLink Wifi CC3220S
- 有奖直播:ST 基于IO-Link的状态监控和可预测性维护方案
- 英飞凌开发板618大促:爆款清单揭秘,有好礼!
- 有奖直播:安世半导体先进 SiC MOSFET 助力提升 EV-Charger 和 OBC 应用能效
- 预约有礼:预约理想配电网络的电源完整性设计等直播,涨知识赢好礼
- 看是德科技汽车电子精彩专题,为你的出行安全打call, 下载赢好礼!
- TI有奖直播:伺服驱动器中电流和电压测量解决方案
- 创通联达高通 IOT 平台解决方案及成功案例|报名直播赢【蓝牙耳机、音箱、京东卡】等好礼
- 是德感恩月:有奖征文免费送示波器啦!