借用J-link调试工具进行消息的发送

描述

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

简简单单4步,我们就可以发送私信了!

1. 初始化MCU这边的串口,配置时钟频率,配置对应的输出管脚,配置波特率等等;

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

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

4. 在串口调试工具上查看;

小编今天要给大家带来的是借用J-link调试工具进行消息的发送。今天的主人公是一个叫做J-link RTT的小东西,那么什么是所谓的RTT呢? J-Link Real-Time Transfer(RTT)是由SEGGER公司开发的一种调试和跟踪技术,用于嵌入式系统的开发和调试。J-LinkRTT允许开发人员在不使用操作系统的情况下,通过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 tt中:

嵌入式

2.    添加头文件依赖:

嵌入式

3.    在hello_world.c中添加引用:

嵌入式

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 ");

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

嵌入式

点击OK,打开:

嵌入式

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

嵌入式

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

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分