查看: 1007|回复: 2

从J-link RTT的移植到精通,让嵌入式调试飞起来!

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3868

    主题

    7472

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39227
    最后登录
    2025-7-18
    发表于 2024-9-26 14:26:59 | 显示全部楼层 |阅读模式
    从J-link RTT的移植到精通,让嵌入式调试飞起来!


    幽默的小编先问大家一个问题:想让我们的MCU打印出一段消息,需要怎么办才能让这段消息显示在PC端呢?相信大家最常用的方式是通过MCU的串口将消息打印到PC端的串口调试终端上。那再换一个问题,打印分几步?
    简简单单4步,我们就可以发送私信了!


    1. 初始化MCU这边的串口,配置时钟频率,配置对应的输出管脚,配置波特率等等;
    2. 打开PC端的串口调试工具,配置好对应的波特率;
    3. 调用UART驱动,例如read\write之流,发送数据;
    4. 在串口调试工具上查看;


    小编今天要给大家带来的是借用J-link调试工具进行消息的发送。今天的主人公是一个叫做J-link RTT的小东西,那么什么是所谓的RTT呢?
    J-Link Real-Time Transfer(RTT)是由SEGGER公司开发的一种调试和跟踪技术,用于嵌入式系统的开发和调试。J-Link RTT允许开发人员在不使用操作系统的情况下,通过J-Link调试器实时传输数据到主机,并从主机实时接收数据,从而实现实时的调试和跟踪功能。J-Link RTT的主要特点包括:
    低开销:J-Link RTT实现了高效的数据传输机制,可以在不影响目标系统性能的情况下实现实时数据传输。


    实时性:开发人员可以在目标系统上实时地输出调试信息,或者从目标系统上实时地接收数据,而无需停止目标系统的运行。


    灵活性:J-Link RTT支持多个通道,可以同时传输多个不同类型的数据,例如调试信息、日志、性能指标等。


    无需目标系统操作系统支持:与类似于printf输出的调试信息不同,J-Link RTT可以在没有操作系统支持的嵌入式系统上使用。
    J-Link RTT通常与J-Link调试器和SEGGER公司的嵌入式开发工具配合使用,为嵌入式系统的调试和跟踪提供了强大的支持。它在嵌入式系统开发中被广泛应用,特别是在没有操作系统支持或者操作系统功能有限的嵌入式系统中,为开发人员提供了一种高效的调试和跟踪解决方案。


    那么MCU上要如何使用呢?方法很简单,只需要将几个SEGGER_RTT_*.c的文件导入工程即可。我们拿RT1060 EVK举个例子,首先下载RT1060的SDK,打开hello world工程。
    1.    新建Group添加如下文件,文件都在SDK解压路径\components\rtt中:
    12.png


    2.    添加头文件依赖:
    13.png
    3.    在hello_world.c中添加引用:
    14.png
    4.    创建up/downBuffer:
        uint8_t rx_buffer[32], tx_buffer[32];
        SEGGER_RTT_ConfigUpBuffer(0,  "RTTUP", rx_buffer, sizeof(rx_buffer), SEGGER_RTT_MODE_NO_BLOCK_SKIP);
         SEGGER_RTT_ConfigDownBuffer(0, "RTTDOWN", tx_buffer,  sizeof(tx_buffer), SEGGER_RTT_MODE_NO_BLOCK_SKIP);


    5.    使用RTT发送:
             SEGGER_RTT_SetTerminal(0);
             SEGGER_RTT_printf(0, "hello world\r\n");


    创建工作就已经完成了,接下来就是PC端的工作,打开J-Link RTT Viewer,选择器件为rt1060,这里要注意选择RTT control Block的地址,和代码一致:
    15.png
    点击OK,打开:
    16.png
    下载程序运行,打开一个Terminal 0,即可查看运行结果:
    17.png
    相较于传统的UART方式,采用调试器内置的RTT功能进行数据通信,不仅免除了对宝贵串口资源的占用,还大大简化了编程实现流程,实现效率和便捷性的双重飞跃!可以让开发者轻松享受调试过程中的流畅与高效,强烈推荐大家亲自感受!

    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 23:21
  • 签到天数: 1845 天

    连续签到: 5 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112619
    最后登录
    2025-7-17
    发表于 2024-9-26 23:19:13 | 显示全部楼层
    有人用过这个调试吗?
    2024-09-26_231845.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-11-27 09:11
  • 签到天数: 30 天

    连续签到: 1 天

    [LV.5]常住居民I

    0

    主题

    63

    帖子

    0

    注册会员

    Rank: 2

    积分
    148
    最后登录
    2024-11-27
    发表于 2024-9-29 14:38:16 | 显示全部楼层
    所以,从某种意义上来说他和串口一样,只是他是通过JTAG/SWD进行收发,对吗
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 04:02 , Processed in 0.093733 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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