上一期已經跟著小編介紹的安裝步驟,相信大家都已經開始使用了Segger Ozone調試工具。那么今天小編繼續趁熱打鐵,給大家介紹另一個Segger推出的調試輔助工具Segger RTT。
Segger RTT(Real Time Transfer)是一款由SEGGER公司開發的嵌入式系統監控和交互工具,主要用于嵌入式應用程序中的實時數據傳輸和調試。
定義與功能:
RTT是一種用于嵌入式系統的實時傳輸技術,能夠在不影響嵌入式應用實時行為的情況下,實現高速雙向通信。它不僅可以輸出調試信息,還可以從外部輸入控制命令,支持多個通道用于不同目的。
兼容性:
RTT支持多種單片機架構,包括ARM Cortex-A/R/M系列芯片,以及RISC-V和Renesas RX等。
主要特點:
高速傳輸速率:RTT使用調試通道進行通信,不占用額外的GPIO等外設接口,因此傳輸速率極快,不會影響嵌入式應用的實時行為
雙向通信能力:RTT具備與目標嵌入式應用的雙向通信能力,既可以輸出調試信息,也可以接收外部控制命令
多通道支持:RTT在兩個傳輸方向上支持多個通道,每個通道可用于不同的目的,如標準輸出、錯誤輸出、調試輸出等
易用性:RTT的實現代碼可以免費下載,并且可以輕松集成到任何現有的應用程序中。通過在PC上使用J-Link RTT Viewer工具,用戶可以方便地查看和管理多個虛擬終端。
使用場景:
替代串口調試:RTT可以替代傳統的串口調試方式,節省串口資源,并降低串口打印對系統實時性的影響
中斷打印:RTT支持在中斷中打印信息,這是傳統printf函數無法實現的
多平臺支持:RTT不依賴操作系統,可以在裸機上運行,并支持多種終端端口使用
實時數據讀寫管理:基于目標MCU內存中的RTT控制塊結構體,RTT能夠實現實時數據讀寫管理
接下來介紹下RTT的工作原理,簡單來講RTT的工作核心是一個位于RAM中的控制塊結構,以及一個環形緩沖區來處理每個通道的每個配置方向(上行/下行)。每個緩沖區都可以在運行時由應用程序配置和添加。每個通道可以配置為阻塞或非阻塞模式。示意圖如下:
在Zephyr中添加RTT也可以說是一步到位,得益于Zephyr的軟件框架,我們只需要通過打開幾個kConfig文件的變量即可:
CONFIG_UART_CONSOLE=n CONFIG_RTT_CONSOLE=y CONFIG_USE_SEGGER_RTT=y CONFIG_SHELL_BACKEND_RTT=y |
通過打開這幾個配置變量,重新編譯Zephyr代碼,當我們想要通過調用printk來打印時,即可實現通過Segger RTT來進行輸出:
讓我們來看下具體實現,通過單步調試,打開printk的源代碼,我們可以看到,其底層實際上調用的是SEGGER_RTT_Write()函數: 這樣一來,我們就可以省掉一個uart口,只通過Jlink這個調試端口進行log信息的打印。以防止某些時間敏感代碼在運行時受到影響。
-
嵌入式
+關注
關注
5114文章
19341瀏覽量
311373 -
調試
+關注
關注
7文章
599瀏覽量
34294 -
RTT
+關注
關注
0文章
66瀏覽量
17344 -
SEGGER
+關注
關注
0文章
44瀏覽量
14262
原文標題:Zephyr領進門系列-Segger RTT的使用
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
【開源代碼】-基于國民N32G45x系列MCU使用JLINK的開發組件工具-RTT Viewer 調試打印

AG32 下使用 Segger RTT
怎樣去調試RT-Thread的segger RTT中斷功能
SEGGER_RTT是什么?如何去使用它
華大移植SEGGER_RTT 打印

評論