J-LINK RTT列印除錯,釋放串列埠資源

weixin_44807892發表於2021-01-05

進入公司已經7個月左右了,最開始使用盛源達晶片的時候聽說過RTT列印,同時也使用過RTT列印,但是當時才進公司也只是在師兄的指導下使用RTT,但是沒有真正理解到RTT到底是什麼,在開發新的一個平臺的時候我又遇到了列印的問題,於是根據新平臺的技術小哥的提示自己首先在STM32上面實現了RTT的列印然後才向新平臺上面區移植列印。
首先說明RTT是什麼
RTT(Real Time Transfer)是一種用於嵌入式中與使用者進行互動的技術,它結合了SWO和半主機的優點,具有極高的效能。
使用RTT可以從MCU非常快速輸出除錯資訊和資料,且不影響MCU實時性。這個功能可以用於很多支援J-Link的裝置和MCU,相容性強。
RTT支援兩個方向的多個通道,上到主機,下到目標,它可以用於不同的目的,為使用者提供儘可能多的自由。預設實現每個方向使用一個通道,用於可列印終端輸入和輸出。
使用J-Link RTT Viewer,可用於“虛擬”終端,允許列印到多個視窗(例如,一個用於標準輸出,一個對於錯誤輸出,一個用於除錯輸出)。
RTT怎麼使用
使用RTT的前提是除錯的時候選擇J-Link偵錯程式,第一步安裝 J-LINK J-LINK 安裝包下載
下載安裝包 進行安裝
第二步 找到安裝路徑下面的2.安裝完成後,開啟J-Link的安裝目錄(開始->SEGGR->J-Link RTT Viewer->右鍵開啟檔案所在位置->然後繼續右鍵開啟檔案所在位置->此時就是安裝目錄了),
找到如下路徑SEGGER\JLink_V632f\Samples\RTT,解壓路徑裡面的壓縮包SEGGER_RTT_V632f.zip(不同的版本,V後面的數字可能不一樣)。
3.將解壓完的檔案拷貝到程式碼工程目錄中。
4.在專案工程中加入SEGGER_RTT_V632f\RTT目錄下的全部四個檔案。工程新增檔案方法請自行百度。
5.工程加入檔案後,在想要用到RTT的檔案中包含#include “SEGGER_RTT.h”,然後直接呼叫SEGGER_RTT_printf()就好了,
如圖在這裡插入圖片描述

例如SEGGER_RTT_printf(0,“hello world!”)這個和C語言的printf的格式差不多,就是前面加了一個埠0的引數。(詳細資訊請看高階使用教程)

6.然後點選開始->SEGGR->J-Link RTT Viewer,開啟J-Link RTT Viewer 選擇好你的晶片型號後,點選確認。
如圖在這裡插入圖片描述
最後是測試結果
在這裡插入圖片描述
出這個帖子的原因是因為,我們大多數微控制器的學習者在初學階段往往都是使用的串列埠除錯進行列印,但是串列埠資源本來就少,像普通的STM32最多的5個串列埠還有兩個是哦不常用的串列埠4串列埠5 ,列印佔用一個串列埠完全就是浪費資源 ,而且RTT也比較完善成熟了,所以為了釋放串列埠資源,可以嘗試這著使用RTT進行除錯列印,何樂而不為了,別人一看你使用的列印方式不同那麼別人也會對你刮目相看。

相關文章