JLink 自V4.92版本以后,添加了RTT功能,可以在没有串口的时候当作调试日志输出端口。
一、准备工作
只需要在你的项目中添加以下三个文件:
SEGGER_RTT.c
SEGGER_RTT.h
SEGGER_RTT_Conf.h
需要注意的是在SEGGER_RTT_Conf.h中定义
#define SEGGER_RTT_IN_RAM (0)
这样不占用额外内存,即可实现日志打印;
在源码中调用SEGGER_RTT_Write(0, buff, len));
或者SEGGER_RTT_WriteString(0,str);
二、输出日志的查看方式
1. 在Keil软件中使用JLink进入全速调试模式,然后打开JLinkRTTClient.exe就可以在控制台看到程序输出的内容;
2. 直接使用JLinkRTTViewer.exe,可以在不进行全速调试模式的情况下查看输出的内容;
三、补充说明
1.如果Keil自带的Jlink驱动太旧,不支持RTT,则需要替换Keil自带的驱动文件:
在Keil\ARM\Segger\目录下面的JLink.exe, JLinkARM.dll, JLinkRDI.dll
2.实现RTT功能的关键在于JLinkARM.dll,在Keil进入调试模式时会加载JLinkARM.dll,而JLinkARM.dll会创建一个telnel服务器,监听端口是19021,所以可以用第三方telnel软件,如Secure-CRT软件来查看打印的日志更方便。