SW4STM32 + JLINK调试使用RTT输出调试信息
为什么要使用RTT输出打印信息?有很多打印技术 例如 :UART的重定向输出,SWO引脚输出,Semihosting在控制台输出等
RTT具有更快的打印速度和实时性看一张图:
J-Link RTT -实时传输的特性
•SEGGER的实时传输(RTT)是嵌入式应用中系统监控和交互用户I/O的成熟技术。它结合了SWO和半主机的优点,具有非常高的性能。
•与目标应用程序进行双向通信
•非常高的传输速度,不影响实时行为
•使用调试通道进行通信
•不需要额外的硬件或引脚
•任何J-Link型号均支持
•支持ARM Cortex-M0/M0+/M1/M3/M4/M7/M23/M33和Renesas RX100/200/600
•提供完整的实现代码
1首先你要安装好J-LINK驱动
目前的SW4STM32不支持J-LINK调试。需要安装J-LINK插件
2.首先安装J-LINK插件
输入地址: http://gnu-mcu-eclipse.netlify.com/v4-neon-updates
我们只需要选择安装GDB SEGGER J-Link Debugging,安装完成后选择Debug Configuration
在Debug Configuration界面会发现新的选项 GDB SEGGER J-LINK Debugging,点击添加新的配置后,修改该Name ,然后悬着Tab选项中的Debugger
3 完成配置后RTT代码移植
安装好J-LINK驱动后,将RTT的代码位置如下复制并解压
移植到自己的工程
添加头文件路径
标准库重定向实现
1 int printf(const char *fmt,...) { 2 3 char buffer[128]; 4 va_list args; 5 va_start (args, fmt); 6 int n = vsnprintf(buffer, sizeof(buffer), fmt, args); 7 SEGGER_RTT_Write(0, buffer, n); 8 va_end(args); 9 return n; 10 }
或者
1 void Debug(const char * sFormat, ...) 2 { 3 va_list ParamList; 4 va_start(ParamList, sFormat); 5 SEGGER_RTT_vprintf(0, sFormat, &ParamList); 6 va_end(ParamList); 7 }
参考 使用J-Link打印日志 | SEGGER Real-Time Transfer(RTT)工具的移植使用 - 云+社区 - 腾讯云 (tencent.com)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~