通过JLINK实现串口显示调试
2014-11-27 14:35
120 查看
首先声明,这个技巧是从网上找到的,并非本人原创。
我们在调试的时候,经常会需要使用到printf指令,通过串口调试工具来查看变量的值,如果是单步或在线调试时,就需要连接JLINK和串口线,对于笔记本,现在都是需要USB转串口,使用起来比较麻烦。
经过在网上搜索,发现一个好的方法,就是只用JLINK一根线,就可以既在线调试程序,同时也可以查看printf显示的数据,方法如下:
首先,建立一个.c 的文件,内容如下:
#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
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;
}
然后在配置里面(Options for Target)选择调试工具为J-LINK/J-TRACE Cortex,点击Settings,选择Trace选项,使能Trace,时钟选择实际时钟,比如我是72MHz,在ITM Stimulus Ports只勾选Port0,。
最后,点击仿真,选择View---serial windows----debug viewer就可以像在串口调试工具里面一样显示了。
我们在调试的时候,经常会需要使用到printf指令,通过串口调试工具来查看变量的值,如果是单步或在线调试时,就需要连接JLINK和串口线,对于笔记本,现在都是需要USB转串口,使用起来比较麻烦。
经过在网上搜索,发现一个好的方法,就是只用JLINK一根线,就可以既在线调试程序,同时也可以查看printf显示的数据,方法如下:
首先,建立一个.c 的文件,内容如下:
#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
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;
}
然后在配置里面(Options for Target)选择调试工具为J-LINK/J-TRACE Cortex,点击Settings,选择Trace选项,使能Trace,时钟选择实际时钟,比如我是72MHz,在ITM Stimulus Ports只勾选Port0,。
最后,点击仿真,选择View---serial windows----debug viewer就可以像在串口调试工具里面一样显示了。
相关文章推荐
- C8051F020实现ADC采样芯片外的模拟电压,通过LCD显示,并通过串口发送到PC机
- 利用jlink实现串口调试
- avr mega644将ADC转换的结果通过串口调试显示
- ajax实现分页无刷新 (已调试通过)
- ASP.NET2.0中GRIDVIEW控件完全代码实现模版列排序!(代码调试已通过)
- 树形数据显示SQL示例代码(在ms sql 2000 DBMS中调试通过)
- 树形数据显示SQL示例代码(在ms sql 2000 DBMS中调试通过)
- 实现自定义分页(如:改变传统datagrid的分页显示、通过A-Z的字母来分页等)、选择的check
- 实现通过结果集显示数据库记录的TableModel
- xml应用(2): 通过向xsl传递参数+数据岛方式,实现在客户端单个xml的分框架显示
- 如何通过动态生成Html灵活实现DataGrid分类统计的界面显示功能
- ajax+jquery+flea+smarty实现了通过选择下拉列表动态显示相应的数据
- 如何通过动态生成Html灵活实现DataGrid分类统计的界面显示功能
- 通过调试寄存器不修改代码实现bt功能
- 通过JavaScript实现实时的JS语法高亮显示字
- (源码实例)通过层DIV实现,当鼠标放在链接上面,显示图片及文字
- 实现自定义分页(如:改变传统datagrid的分页显示、通过A-Z的字母来分页等)、选择的check
- 单源最短路径 C++实现 调试通过
- 通过CPU串口输出调试DSP系统
- (源码实例)通过层DIV实现,当鼠标放在链接上面,显示图片及文字 - 流星絮语 JAVA学习笔记 - CSDNBlog