[APM32E1] 使用J-LINK RTT打印调试信息

[复制链接]
3305|29
 楼主| heyanmei 发表于 2024-10-24 18:10 | 显示全部楼层 |阅读模式
#申请原创#J-Link RTT打印输出-APM32E103ZE

在J-LINK安装路径下按照此路径找到该文件并解压

1

1



在自己的模版工程新建RTT文件夹,复制Config和RTT里面的文件到RTT文件夹

2

2

3

3



打开工程添加RTT文件和路径

4

4

5

5




添加头文件#include "SEGGER_RTT.h"

6

6



使用SEGGER_RTT_printf进行打印输出信息

7

7



打开JLinkRTTViewer进行配置,在J-Link安装路径下可以找到

8

8



下载程序,查看J-Link RTT是否成功打印调试信息

9

9





RTT相关函数说明
10.png


最后提供F003和E103使用JLINK-RTT打印输出信息的例程,见百度网盘链接

通过百度网盘分享的文件:JLINK RTT打印调试信息
链接:https://pan.baidu.com/s/1Z4Tf3kaDmXCRYAJQkm_S-w
提取码:6oxc
--来自百度网盘超级会员V6的分享



abotomson 发表于 2024-11-7 20:08 | 显示全部楼层
代码中配置适当的 RTT 缓冲区大小。缓冲区太小可能会导致数据丢失,而缓冲区太大可能会占用过多内存资源。
yeates333 发表于 2024-11-7 20:53 | 显示全部楼层
在程序的开始阶段,调用SEGGER_RTT_Init()函数来初始化RTT。这个函数会设置RTT所需的内部结构和缓冲区。
1988020566 发表于 2024-11-7 21:31 | 显示全部楼层
根据需要配置RTT缓冲区大小,以确保能够存储足够的调试信息。
earlmax 发表于 2024-11-7 22:40 | 显示全部楼层
可以通过查看编译生成的MAP文件来确认RTT缓冲区的配置情况。
sdCAD 发表于 2024-11-8 08:22 | 显示全部楼层
J-LINK RTT Viewer支持在日志中添加时间戳和打印颜色。这需要在MCU程序中实现相应的接口,例如通过添加特定的控制字符来设置颜色。
ulystronglll 发表于 2024-11-8 10:01 | 显示全部楼层
在目标设备的代码中处理RTT事件,如接收调试命令或响应调试请求。
minzisc 发表于 2024-11-8 11:46 | 显示全部楼层
在调试器设置中启用RTT功能,并配置RTT缓冲区大小。
beacherblack 发表于 2024-11-8 13:34 | 显示全部楼层
如果系统对实时性有较高要求,需要注意RTT打印调试信息对系统实时性的影响。在实时性要求较高的场合,可以考虑使用更高效的调试方法或减少调试信息的输出。
sesefadou 发表于 2024-11-8 15:20 | 显示全部楼层
默认情况下,RTT使用固定大小的缓冲区,但有时可能需要根据应用程序的需求进行调整。
timfordlare 发表于 2024-11-8 17:01 | 显示全部楼层
在使用RTT时,应考虑异常情况的处理,如缓冲区溢出或调试器断开连接时的行为。
caigang13 发表于 2024-11-8 18:59 来自手机 | 显示全部楼层
在串口不够用的时候可以用JLINK RTT作为调试接口。
yorkbarney 发表于 2024-11-8 20:25 | 显示全部楼层
如果打印的调试信息很长,可能会遇到缓冲区不够的问题。此时,可以通过修改SEGGER_RTT_Conf.h文件中的BUFFER_SIZE_UP宏定义来增加缓冲区的大小。
kmzuaz 发表于 2024-11-8 21:10 | 显示全部楼层
频繁使用RTT打印调试信息可能会对系统性能产生影响,特别是在嵌入式系统中,IO操作通常比较耗时。因此,建议在需要时才使用RTT打印调试信息,并在发布版本中移除或关闭调试输出。
lihuami 发表于 2024-11-8 21:55 | 显示全部楼层
确认代码中是否初始化了RTT模块。在某些SDK或示例工程中,RTT模块的初始化可能默认未被调用,需要手动添加。
mattlincoln 发表于 2024-11-8 22:06 | 显示全部楼层
如果打印的日志速度超过了 J-Link RTT Viewer 的读取速度,可能会导致数据丢失。
albertaabbot 发表于 2024-11-8 22:17 | 显示全部楼层
在发布版本中,应该考虑移除或禁用 RTT 相关的代码,以减少代码大小和提高性能。
sheflynn 发表于 2024-11-8 22:28 | 显示全部楼层
使用SEGGER_RTT_printf()函数来打印调试信息。这个函数类似于C语言的printf()函数,但接受一个缓冲区索引和一个格式化字符串,以及可变数量的参数。
jackcat 发表于 2024-11-8 22:38 | 显示全部楼层
使用SEGGER_RTT_printf()或其他RTT提供的打印函数来输出调试信息,而不是标准的printf()函数。
fengm 发表于 2024-11-8 22:49 | 显示全部楼层
如果需要记录调试信息,可以使用RTT Logger工具来捕获和保存RTT通道的数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部