mdk5实时调参_使用RealView MDK进行SW调试和实时跟踪STM32
STM32有两个调试端口,即JTAG和SW。Keil 的ULINK2 USB-JATG接口适配器支持这两种调试接口。
本文描述了如何配置和使用SW接口来获取各种调试信息。
一、目标调试阶段的配置
1.调试器的选择
选择μVision->Debug ->Options for Target –>Debug,并选择ULINK Cortex Debugger调试器。
2.调试目标初始化文件
按照路径\Keil\ARM\Startup\ST,将文件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按钮可以显示所有事件记录。
mdk5实时调参_使用RealView MDK进行SW调试和实时跟踪STM32相关推荐
- jtag keil v11驱动_Keil for ARM/ Realview MDK 中用JTAG调试的方法
首先说明,在ARM中运行程序的方法其实和我们PC机差不多,程序开始是放在Flash中的,在芯片加电启动后,Flash中的程序会通过内存映射的方式加载到RAM中运行,这一步是由启动代码来完成的(我还没看 ...
- RealView MDK 使用
1.分散加载文件(链接脚本文件)的格式 问题描述: 在链接的时候,要在不同的地址处添加链接文件,暨分散加载文件,这个分散加载文件有什么样的格式呢? 问题解答: 程序正确编译生成目标文件 ...
- RealView MDK使用
作者:蓝色星宇 转自:http://www.cnblogs.com/glguan/archive/2011/05/04/2036138.html 来源:http://hi.baidu.com/hqy5 ...
- RealView MDK集成开发环境的使用
熟悉RealView MDK集成开发环境的使用 一.实验目的 1. 掌握RealView MDK集成开发环境的安装过程: 2. 掌握RealView MDK集成开发环境的使用方法: 3. 掌握创建工程 ...
- ADS与RealView MDK
在 ARM + Linux 培训班学习,讲师一般首先讲解用 ADS 或 RealView MDK 去调试 ARM 开发板.原因在于: 1.掌握 ARM 体系结构.ARM 是一种计算机,掌握其体系结构也 ...
- RealView MDK在链接时提示空间不够的解决方案总结
RealView MDK具有强大的编译.链接功能.嵌入式设备拥有的资源往往有限,如果一个程序编译.链接之后的可执行文件大小略大于存储大小时,则不能生成可执行文件进行调试或固化到Flash中.在这种情况 ...
- S3C2440 由ADS移植到 RealView MDK kile4
RealView MDK在中国推出已经有一段时间了,而且作为未来发展的趋势必将取代ADS1.2,成为工程师广泛应用的开发平台. 但是,以前的S3C2440的项目都是由ADS开发,而且我在网上搜索并没有 ...
- ARM指令寻址方式及RealView MDK开发环境ARM汇编程序实践
内容简介 本文根据作者在CSDN发表的树莓派ARM汇编语言编程十讲(第3讲) (CSDN链接https://blog.csdn.net/yuanzywhu/article/details/104975 ...
- 【ARM嵌入式】实验报告一 熟悉RealView MDK集成开发环境的使用
实验一 熟悉RealView MDK集成开发环境的使用 一.实验目的 1. 掌握RealView MDK集成开发环境的安装过程: 2. 掌握RealView MDK集成开发环境的使用方法: 3. 掌握 ...
最新文章
- vscode 搜索结果 整行_如何用VSCode愉快的写Python
- Leetcode刷题 155题: 最小栈(基于python3和c++两种语言)
- mybaits三:全局配置文件
- ubuntu 16.04 apt源使用阿里云镜像
- 硬件平台(1)---骁龙710移动平台强势来袭
- linux关机方法有哪些?有何区别_茅台酒都有哪些容量?一升装的与一斤装的到底有何区别?...
- java获取数据库列的别名_java – JDBC ResultSet获取具有表别名的列
- Atiitt 软件设计之道 attilax著 1. 总概念 隶属于软件工程。。	2 2. 需求分析	3 3. 设计分类	3 3.1. 按照力度 总体设计架构设计 概要设计 详细设计	3 3.2.
- 使用Java生成PDF文件
- MVC架构下,使用NPOI读取.DOCX文档中表格的内容
- mousewheel事件
- springcloud之gateway的使用
- 商务智能大总结4 聚类分析
- 分享一个网页截图html代码
- 华为HCNA网络工程师【从入门到精通】自学视频[肖哥]-肖宗鹏-专题视频课程
- 太阳能电池系统行业调研报告 - 市场现状分析与发展前景预测
- Vue 记账凭证模块组件
- oralce 经典习题系列-查询
- 2011~至今 百度指数采集方法与工具、支持百度指数、资讯指数、媒体指数
- 2018美团CodeM 题解