? ? ??SEGGER的Real Time Transfer (RTT)是一項新技術(shù),可以在嵌入式應(yīng)用中進行用戶I/O交互。它結(jié)合了SWO和半主機的優(yōu)點,具有極高的性能。它的主要特點有
可以與目標應(yīng)用進行雙向通信 極高的傳輸速率,同時不影響應(yīng)用的實時響應(yīng) 在目標板上不需要額外的硬件或引腳 在任何J-Link模式下都能正常使用 ARM?Cortex-M0/M0+/M1/M3/M4/M7和Renesas RX100/200/600都支持該功能有完整的代碼來提供需要的功能和靈活的自由度
?
什么是RTT?
? ? ? ?在不影響目標實時響應(yīng)的情況下,RTT可以從目標MCU快速輸出信息,也可以發(fā)送信息給目標應(yīng)用。SEGGER RTT可以用在任何J-Link模式下(具體模式見https://www.segger.com/jlink-debug-probes.html)??梢栽谥С趾笈_存儲器訪問的處理器如Cortex-M及RX系列上運行。
RTT支持雙向多通道通信,可用于不同目的并為用戶提供了靈活的自由度。默認情況下兩個個方向分別使用一個通道,用于終端輸入和輸出。利用J-Link RTT Viewer 上位機軟件,這個通道可以用于多個虛擬終端,允許打印到多個窗口但僅僅利用了一個目標緩沖區(qū)。(例如一個用于標準輸出,一個用于錯誤輸出,一個用于調(diào)試輸出)。上傳通道可以用于發(fā)送事件追蹤數(shù)據(jù)。
RTT通信?
在目標應(yīng)用中使用RTT是非常簡單的。具體的實現(xiàn)代碼可以自由下載并集成到目標應(yīng)用中。你可以利用任何J-Link與RTT進行通信。
J-Link軟件包中有更多適用于不同目的高級應(yīng)用。
J-Link RTT?Viewer
J-Link RTT Viewer是主要的windowsGUI,可以使用RTT的全部功能。RTT Viewer可以單獨使用,與J-Link及目標板建立自己的連接。也可以在調(diào)試狀態(tài)下與調(diào)試接口并行運行。?RTT Viewer支持RTT的主要特性:
在通道0上終端輸出發(fā)送文本到通道0只有一個目標通道的情況下具有高達16個虛擬終端在任何J-Link模式下都能正常使用控制文本輸出:給文本著色,擦除控制臺在通道1上記錄數(shù)據(jù)...
J-Link RTT?Viewer的完整文檔請參考J-Link用戶手冊(UM08001), ?RTT章節(jié)。
J-Link RTT?Viewer是J-Link軟件文檔包的一部分,可以免費獲取。
J-Link RTT?Client
J-Link RTT客戶端作為一個遠程登陸客戶端,當調(diào)試部分關(guān)閉時可以自動重建J-Link連接。J-Link RTT客戶端也是J-Link軟件文檔包的一部分,可以用于簡單的RTT應(yīng)用場景。
J-Link RTT?Logger
利用J-Link RTT采集器,可以讀取上傳通道1的數(shù)據(jù)并記錄到一個文件中。這個通道可以用來向主機發(fā)送性能分析數(shù)據(jù)。J-Link RTT采集器與J-Link建立特定的連接,可以被單獨使用,不需要運行調(diào)試器。
RTT是如何工作的?
? ? ? ? 實時傳輸利用了目標存儲器上的SEGGER RTT 控制塊來管理數(shù)據(jù)的讀寫。控制塊包含有一個ID號,這樣接上J-Link之后,就可以在存儲器中發(fā)現(xiàn)控制塊并且每個通道都有一個環(huán)形緩沖區(qū)結(jié)構(gòu),用來描述通道緩沖區(qū)及其狀態(tài)。最大的通道數(shù)可以在編譯時進行配置,應(yīng)用運行時也可以配置及添加緩沖區(qū),而且上傳和下行的緩沖區(qū)可以分開處理。每個通道都可以配置成阻塞和非阻塞模式。在阻塞模式下,當緩沖區(qū)滿的時候,應(yīng)用將進行等待,直到所有的存儲器都可以寫入,這將導致應(yīng)用進入阻塞狀態(tài),但可以防止數(shù)據(jù)丟失。在非阻塞狀態(tài)下,只有適合緩沖區(qū)的數(shù)據(jù)才能被寫入,或者沒有數(shù)據(jù)寫入緩沖區(qū),其它的數(shù)據(jù)將被丟棄。這將使應(yīng)用實時運行,即使不連接調(diào)試器也可以。這樣開發(fā)者就不必創(chuàng)建特定的調(diào)試版程序,這些代碼可以保留在發(fā)布版程序中。
? ? ? ? 當RTT在主機上激活時,不管是使用RTT Viewer還是通過Telnet 連接應(yīng)用,J-Link都會自動在目標已知的RAM區(qū)搜索SEGGER RTT 控制塊。當不能自動發(fā)現(xiàn)控制塊時,主機應(yīng)用可以設(shè)置控制塊所處的RAM區(qū),從而加速檢測。
? ? ? 左圖顯示了控制塊在目標應(yīng)用中的簡單結(jié)構(gòu)。上傳和下行的Buffer可能有多個,每個Buffer的大小都可以單獨配置。Buffer中的灰色區(qū)域包含了有效數(shù)據(jù)。對于上傳Buffer來說,寫指針由目標應(yīng)用來負責,讀指針由調(diào)試探針(J-Link,host)來寫入。讀寫指針指向同一位置時,緩沖區(qū)為空。這樣就不會產(chǎn)生競爭情形。
? ? ? ?SEGGER RTT 除了J-Link及標準調(diào)試端口之外,不需要任何額外的引腳或硬件。它不需要對目標板及調(diào)試環(huán)境進行任何的配置。RTT在程序調(diào)試期間也可以運行,不需要其它的開發(fā)環(huán)境或者調(diào)試器。
? ? ? ?SEGGER RTT向外輸出數(shù)據(jù)時非???,顯著高于其它方式。實際運行效果如下:
RTT數(shù)據(jù)輸出到主機端的最大速度取決于目標緩沖區(qū)的大小及接口速度。即使目標緩沖區(qū)只有512字節(jié),在高端J-Link模式下,RTT速度也可以達到>1 MByte/sec,而基本J-Link模型的速度也有 0.5 MByte/sec。