作者 | strongerHuang
微信公眾號 | 嵌入式專欄
嵌入式軟件基本都會存在打印輸出數(shù)據(jù)的情況,我們最常見就是串口打印輸出。
如果我們手里沒有232轉USB,或者TTL轉USB工具,此時,使用J-Link工具同樣也可以實現(xiàn)串口打印輸出數(shù)據(jù)的功能。
下面就來講講使用J-link的『RTT Viewer』功能實現(xiàn)打印輸出的方法:
1概述
SWO:Serial Wire Output,串行線輸出
RTT:Real Time Transfer,實時傳輸
前面SWO文章,實現(xiàn)原理是通過MCU的SWO引腳輸出信息(到顯示終端SWV)。
而本文講述的RTT不需要通過額外SWO引腳,即可實現(xiàn)printf輸出,而且性能(耗時)遠高于SWO。
2關于RTT
SEGGER實時傳輸(RTT)是一種在嵌入式應用中實現(xiàn)交互式用戶I/O的技術。
它結合了SWO和半主機( semihosting)的優(yōu)點,具有很高的性能。
使用RTT,可以從目標微控制器輸出信息,并以非常高的速度向應用程序發(fā)送輸入,而不會影響目標的實時性。
Cortex - M0不支持SWO,而本文講述的RTT則支持Cortex - M0,文末提供STM32F0工程。
3關于J-Link RTT Viewer
J-Link RTT Viewer是在調試主機上使用RTT功能的Windows GUI應用程序。
RTT Viewer可以獨立使用,打開自己與J-Link的連接,并與正在運行的調試會話目標或并行,連接到它并使用現(xiàn)有的J-Link連接。
RTT Viewer支持RTT的主要功能:
·通道0上的終端輸出
·將文本輸入發(fā)送到通道0
·最多16個虛擬終端,只有一個目標通道
·控制文本輸出:彩色文本,擦除控制臺
·在通道1上記錄數(shù)據(jù)
本文主要結合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)\SEGGER\JLink\Samples\RTT
解壓SEGGER_RTT_V***.zip之后,復制整個RTT目錄源碼到你工程。
提示:
解壓之后,只需復制RTT目錄就行。
4.1 添加RTT到工程
添加源碼文件到工程主要有兩個步驟:1.添加源碼文件到工程。2.添加文件路徑。
當然,我下面有提供添加好的源碼工程。
4.2 應用程序
調用RTT的打印,和常規(guī)的printf類似。
添加頭文件:#include "SEGGER_RTT.h"
再調用SEGGER_RTT_printf函數(shù)打印輸出:
這里SEGGER_RTT_printf和print不同的是:前面多了一個“終端號”參數(shù)。(我們使用終端0)
5RTT Viewer配置、輸出
和前面講述的SWV查看器類似,配置相關信息即可輸出。
安裝目錄:C:\Program Files (x86)\SEGGER\JLink
下載程序到MCU,連接J-Link,打開安裝目錄下的J-Link RTT Viewer,配置參數(shù):
輸出效果:
6下載
為方便大家理解,提供源碼工程下載,參考代碼:
STM32F051(HAL)_JLink-RTT
STM32F103(HAL)_JLink-RTT
百度網(wǎng)盤:
https://pan.baidu.com/s/1aYBuHtOgtLqLvj6SsMYlQA
提取碼:nbd3
提示:
1.公眾號不支持外鏈接,請復制鏈接到瀏覽器打開。
2.源碼僅供個人學習參考,不一定適用于實際項目。
3.若鏈接失效,請關注公眾號,回復『printf系列教程』獲取最新鏈接。
7
說明
1.該文檔僅供個人學習使用,版權所有,禁止商用。
2.本文由我一個人編輯并整理,難免存在一些錯誤。
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!