打印

J-link RTT应用以及设置方法

[复制链接]
653|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大碴子味|  楼主 | 2018-7-9 13:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原本想发在大杂烩里边,但是权限不够,所以就在这里发一下。
用来跟大家分享,也用来记录自己的学习过程,以便以后再次用到的时候,能够更轻松的解决问题。

我们在做STM32开发的过程中,经常需要使用串口把一些数据打印出来,方便调试。

但是有时候硬件没有预留UART端口,硬件也没有设计CH340这样的串口转换器。

但是仍然需要把内部数据打印出来。

很多小伙伴知道Keil在Debug状态下有printf函数可以用,但是这种方法需要对keil做很多设置,还需要用到SWO脚,比较麻烦(但是这种方法不限于调试器~)。


使用J-link或者J-link OB(JTAG或SWD接口)的小伙伴,其实除了使用Debug printf功能外,J-link还有一个RTT的功能。

RTT只需要在keil工程中添加几个 .c 和 .h 文件,然后使用SEGGER官网的J-link工具就能打印出内部数据。

具体操作方法如下:

1.在SEGGER官网下载J-link工具,下载链接:https://www.segger.com/downloads/jlink/JLink_Windows.exe

2.把下载下来的exe文件安装好,然后把安装路径下 SEGGERJLinkSamplesRTT文件夹中的SEGGER_RTT_V648b.zip文件解压。

3.把解压出来的文件中,SEGGER_RTT_V648bRTT路径下的.c和.h文件都添加到keil工程中;
   把SEGGER_RTT_V648bSyscalls路径下的SEGGER_RTT_Syscalls_KEIL.c添加到keil工程中。(如果是其他编译器,则使用对应的文件,方法类似)


4.在main.c文件中添加头文件#include <SEGGER_RTT.h>和#include <SEGGER_RTT_Conf.h>。
   在main函数中添加初始化函数SEGGER_RTT_Init();
   在需要打印数据的地方,添加SEGGER_RTT_printf(0,"Test%d
",123456);(参数0为必须项,之后的参数与printf相仿,具体可查看SEGGER_RTT_printf.c文件中的内容)。

5.打开J-Link RTT Viewer 工具,选择File -> Connect,设置参数如图。

6.参数设置中的Address的设置,如果使用“Aoto Detection”选项,RTT能够正常打印的话,本教程就结束。

7.参数设置中的Address的设置,如果使用“Aoto Detection”选项,RTT不能正常打印的话,就选择Address项,如图中绿色框所示。

8.Address的值(红色框中的值),可以在keil工程的.map文件中找到。
   打开.map文件,搜索关键词_SEGGER_RTT,其中有一行内容为:    _SEGGER_RTT     0x2000010c   Data     168  segger_rtt.o(.bss)
   中间的0x2000010c,即为需要填入的Address值。

9.参数设置好后,点击OK,会在LOG窗口看到相应的LOG日志,最后一行显示“LOG: RTT Viewer connected.”则为连接成功。
  (如果还有其他问题,请自行解决~)


至此,在MCU每次执行SEGGER_RTT_printf()函数的时候,都会在ALL Terminals窗口打印出相应的内容。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

372

主题

372

帖子

0

粉丝