使用Jlink RTT工具打印日志
背景
-
平常调试代码中使用串口打印log,往往需要接出串口引脚,比较麻烦,并且串口打印速度较慢,串口的中断可能会影响代码的执行效率。
-
SEGGER RTT支持使用J-link调试器输出来自目标微控制器的信息,也可以接收输入,并且在高速度交互的同时不会影响目标处理器的实时性,可以省掉平常打印日志用的串口。
Jlink RTT简介
-
RTT( Real Time Terminal)是SEGGER公司新出的可以在嵌入式应用中与用户进行交互的实时终端。J-Link驱动4.90之后的版本都支持RTT。
RTT既可以从MCU上输出信息、也可以向应用程序发送信息,由于其高速的特性,所以不影响MCU的实时性。
实现原理: 固件代码将要输出的log数据按照RTT的格式写到确定地址的内存中去,然后RTT通过swd口读取对应内存地址的数据,并显示到PC终端上。RTT的工作框图如下图所示:
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hiZXlJHn-1634204906327)(https://gitee.com/hesuping/picgo/raw/master/img/J-Link_RTT.svg)]
Jlink RTT 代码获取
- RTT工具的源码实现提供了完整的功能,可以自由使用。RTT的源码是作为J-Link软件包的一部分,在Jlink安装目录中的
Sample/RTT
中。将RTT目录中的这四个文件移植到MCU工程中,并在添加相关路径和头文件。