Segger RTT使用注意事項


對比串口打印,使用RTT打印log信息的優點是只占用調試口,速度快,可隨產品發布

RTT實現的基本原理是,程序中實現一個環形緩沖區(數組+讀寫指針),MCU不斷的往緩沖區中寫數據,PC上運行的上位機周期的讀取此緩沖區中的數數據

在具體使用時需注意幾點

1.SEGGER_RTT_LOCK () SEGGER_RTT_UNLOCK()的實現方式,默認的實現方式是屏蔽中斷

在多任務運行的環境下或者中斷函數中也需要打印的環境下,需保證打印數據的完整性。

因為RTT打印的數據僅僅寫入內存,並不需要考慮傳輸的時間,因此在中斷中調用RTT的打印函數也基本沒有影響

2.選擇使用SEGGER_RTT_MODE_NO_BLOCK_SKIP/SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL

SKIP是指當緩沖區滿時,直接跳過寫入操作,BLOCK方式是死等緩沖區釋放,正式產品中使用SKIP方式,因為不可能一直連接PC

3.配置緩沖區的大小

4.RTT控制塊的位置

因為RTTViewer在內存中掃描控制塊時,其默認掃描的地址范圍可能與芯片的實際內存空間不一致,所以最好定義SEGGER_RTT_SECTION,並且修改連接腳本,

將_SEGGER_RTT變量放置到默認的掃描空間內,這樣可有效避免打開RTTViewer,卻沒有任何打印信息的問題

IAR下的配置如下截圖,  gcc工具鏈下操作類似,MDK的連接腳本的語法沒研究過~~~

 

 

 

5.RTT的源碼中沒有實現類似printf("%f",...)打印浮點數,如實在需要打印浮點數,需修改RTT源碼,其中一個關鍵點是理解C語言不定數量參數的函數實現方式

 


免責聲明!

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



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