1寫在前面
SWO:Serial Wire Output,串行線輸出
RTT:Real Time Transfer,實時傳輸
前面SWO文章,實現原理是通過MCU的SWO引腳輸出信息(到顯示終端SWV)。
而本文講述的RTT不需要通過額外SWO引腳,即可實現printf輸出,而且性能(耗時)遠高于SWO。
2關于RTT
SEGGER實時傳輸(RTT)是一種在嵌入式應用中實現交互式用戶I/O的技術。
它結合了SWO和半主機( semihosting)的優點,具有很高的性能。
使用RTT,可以從目標微控制器輸出信息,并以非常高的速度向應用程序發送輸入,而不會影響目標的實時性。
Cortex - M0不支持SWO,而本文講述的RTT則支持Cortex - M0,文末提供STM32F0工程。
3關于J-Link RTT Viewer
J-Link RTT Viewer是在調試主機上使用RTT功能的Windows GUI應用程序。
RTT Viewer可以獨立使用,打開自己與J-Link的連接,并與正在運行的調試會話目標或并行,連接到它并使用現有的J-Link連接。
RTT Viewer支持RTT的主要功能:
·通道0上的終端輸出
·將文本輸入發送到通道0
·最多16個虛擬終端,只有一個目標通道
·控制文本輸出:彩色文本,擦除控制臺
·在通道1上記錄數據
·
·
本文主要結合J-Link RTT Viewer講述,當然支持RTT的還有J-Link RTT Client 和J-Link RTT Logger。
更多相關介紹,可以參看:
https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer
(公號不支持外鏈接,請復制鏈接到瀏覽器打開)
4獲取RTT源碼
我們需要在工程中添加RTT源碼,同時需要J-Link RTT Viewer查看器支持。
J-Link / J-Trace下載地址(Windows版本):
https://www.segger.com/downloads/jlink/JLink_Windows.exe
安裝之后,在安裝目錄下包含RTT源碼:
C:Program Files (x86)SEGGERJLinkSamplesRTT
解壓SEGGER_RTT_V***.zip之后,復制整個RTT目錄源碼到你工程。
提示:
解壓之后,只需復制RTT目錄就行。
4.1 添加RTT到工程
添加源碼文件到工程主要有兩個步驟:1.添加源碼文件到工程。 2.添加文件路徑。
這里不講述具體添加過程,Keil 和 IAR之前有講述,請參看我的文章:
Keil新建基礎軟件工程
IAR新建基礎軟件工程
當然,我下面有提供添加好的源碼工程。
4.2 應用程序
調用RTT的打印,和常規的printf類似。
添加頭文件:#include "SEGGER_RTT.h"
再調用SEGGER_RTT_printf函數打印輸出:
這里SEGGER_RTT_printf和print不同的是:前面多了一個“終端號”參數。(我們使用終端0)
5RTT Viewer配置、輸出
和前面講述的SWV查看器類似,配置相關信息即可輸出。
安裝目錄:C:Program Files (x86)SEGGERJLink
下載程序到MCU,連接J-Link,打開安裝目錄下的J-Link RTT Viewer,配置參數:
輸出效果:
6下載
為方便大家理解,提供源碼工程下載,參考代碼:
STM32F051(HAL)_JLink-RTT
STM32F103(HAL)_JLink-RTT
百度網盤:
https://pan.baidu.com/s/1aYBuHtOgtLqLvj6SsMYlQA
提取碼:nbd3
提示:
1.公眾號不支持外鏈接,請復制鏈接到瀏覽器打開。
2.源碼僅供個人學習參考,不一定適用于實際項目。
3.若鏈接失效,請關注公眾號,回復『printf系列教程』獲取最新鏈接。
7
-
串行
+關注
關注
0文章
237瀏覽量
33836 -
SWOT
+關注
關注
0文章
4瀏覽量
7969 -
Printf
+關注
關注
0文章
83瀏覽量
13650
發布評論請先 登錄
相關推薦
評論