幽默的小编先问大家一个问题:想让我们的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功能进行数据通信,不仅免除了对宝贵串口资源的占用,还大大简化了编程实现流程,实现效率和便捷性的双重飞跃!可以让开发者轻松享受调试过程中的流畅与高效,强烈推荐大家亲自感受!
全部0条评论
快来发表一下你的评论吧 !