OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3898|回复: 5

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

[复制链接]

17

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2014-10-5
在线时间
40 小时
发表于 2019-8-15 00:24:23 | 显示全部楼层 |阅读模式
本帖最后由 stm32新人一枚 于 2019-8-15 00:31 编辑

原本想发在大杂烩里边,但是权限不够,所以就在这里发一下。
用来跟大家分享,也用来记录自己的学习过程,以便以后再次用到的时候,能够更轻松的解决问题。

我们在做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文件安装好,然后把安装路径下 SEGGER\JLink\Samples\RTT文件夹中的SEGGER_RTT_V648b.zip文件解压。

3.把解压出来的文件中,SEGGER_RTT_V648b\RTT路径下的.c和.h文件都添加到keil工程中;
   把SEGGER_RTT_V648b\Syscalls路径下的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\r\n",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窗口打印出相应的内容。





File->Connect设置

File->Connect设置

信息打印窗口

信息打印窗口

Log窗口

Log窗口
我已经是STM32熟练工了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2018-6-13
在线时间
15 小时
发表于 2020-5-21 18:32:30 | 显示全部楼层
有没有人把时间戳搞出来?
回复 支持 1 反对 0

使用道具 举报

0

主题

131

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2019-7-1
在线时间
6 小时
发表于 2019-8-15 13:46:36 | 显示全部楼层
感谢楼主分享
IIS7站长  http://www.iis7.com/
回复 支持 反对

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2015-11-12
在线时间
28 小时
发表于 2019-8-16 09:51:49 | 显示全部楼层
楼主你这样,是不是不能边调试,边看串口打印的数据了?因为keil/IAR占用了jlink,这个jlink工具也要占用jlink?
回复 支持 反对

使用道具 举报

17

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2014-10-5
在线时间
40 小时
 楼主| 发表于 2019-8-20 21:41:52 | 显示全部楼层
liweidxh 发表于 2019-8-16 09:51
楼主你这样,是不是不能边调试,边看串口打印的数据了?因为keil/IAR占用了jlink,这个jlink工具也要占用jl ...

我用的时候一直是Debug状态。Debug状态下,J-link才会工作呀
我已经是STM32熟练工了
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2015-3-9
在线时间
2 小时
发表于 2020-8-5 16:45:53 | 显示全部楼层
费量 发表于 2020-5-21 18:32
有没有人把时间戳搞出来?

有人弄出来了么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-30 17:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表