您的位置:首页 > 其它

通过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就可以像在串口调试工具里面一样显示了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐