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

科技   2024-12-15 18:24   上海  
幽默的小编先问大家一个问题:想让我们的MCU打印出一段消息,需要怎么办才能让这段消息显示在PC端呢?相信大家最常用的方式是通过MCU的串口将消息打印到PC端的串口调试终端上。那再换一个问题,打印分几步?

简简单单4步,我们就可以发送私信了!
  1. 1. 初始化MCU这边的串口,配置时钟频率,配置对应的输出管脚,配置波特率等等;

  2. 2. 打开PC端的串口调试工具,配置好对应的波特率;

  3. 3. 调用UART驱动,例如read\write之流,发送数据;

  4. 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. 1.    新建Group添加如下文件,文件都在SDK解压路径\components\rtt中:

  2. 2.    添加头文件依赖:
  3. 3.    在hello_world.c中添加引用:

  4. 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);

  1. 5.    使用RTT发送:

         SEGGER_RTT_SetTerminal(0);

         SEGGER_RTT_printf(0, "hello world\r\n");

创建工作就已经完成了,接下来就是PC端的工作,打开J-Link RTT Viewer,选择器件为rt1060,这里要注意选择RTT control Block的地址,和代码一致:

点击OK,打开:

下载程序运行,打开一个Terminal 0,即可查看运行结果:


相较于传统的UART方式,采用调试器内置的RTT功能进行数据通信,不仅免除了对宝贵串口资源的占用,还大大简化了编程实现流程,实现效率和便捷性的双重飞跃!可以让开发者轻松享受调试过程中的流畅与高效,强烈推荐大家亲自感受!



版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。


来自李肖遥 技术让梦想更伟大公众号

Qt教程
致力于Qt教程,Qt技术交流,研发
 最新文章