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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM