隨著嵌入式系統(tǒng)規(guī)模和復(fù)雜度不斷提升,傳統(tǒng)的調(diào)試手段已難以滿足對(duì)系統(tǒng)運(yùn)行狀態(tài)的精細(xì)化分析需求。為提升開發(fā)效率、優(yōu)化系統(tǒng)性能,RT-Thread 推出了一款全新調(diào)試工具 ——RT-Trace。該工具基于SWO 技術(shù)實(shí)現(xiàn)對(duì)操作系統(tǒng)運(yùn)行狀態(tài)的實(shí)時(shí)跟蹤,無需安裝額外軟件,即可通過 Web 頁面直觀查看線程切換、中斷響應(yīng)等關(guān)鍵信息,極大降低了調(diào)試門檻。
本文將以實(shí)際開發(fā)板為基礎(chǔ),展示 RT-Trace 的Trace 功能在調(diào)試Cortex-M4 平臺(tái)中的應(yīng)用效果,包括配置流程、可視化分析、時(shí)間測(cè)量等操作體驗(yàn),幫助開發(fā)者更全面地了解該工具在項(xiàng)目開發(fā)中的應(yīng)用價(jià)值。

1.
進(jìn)入RT-Trace配置頁面
在板子的右下角是有Trace的IP地址,我們?cè)跒g覽器中輸入該地址進(jìn)入配置頁面。

擺在第一行的就是Trace功能的介紹。可以看到有如下特點(diǎn):
基于SWO 的 RT-Thread OS 跟蹤 (Trace) 功能,無需額外安裝軟件,捕獲線程關(guān)系。
免安裝的 Web UI,直接在瀏覽器中實(shí)時(shí)顯示線程間的調(diào)用關(guān)系。
以高速 SWO Trace 為基礎(chǔ),后續(xù)升級(jí)固件支持持久化線程運(yùn)行記錄,統(tǒng)計(jì)各線程用量與 CPU 隨時(shí)間的工作負(fù)載。
后續(xù)升級(jí)支持 TPIU Trace 接口,可以觀察到更多內(nèi)部信息。
從介紹捕獲線程功能來看,RT-Trace應(yīng)該是定位一款專用工具,因?yàn)椴煌?a href="http://www.3532n.com/tags/RTOS/" target="_blank">RTOS的線程控制塊是不一樣的,需要人力物力去適配。
2.
Trace 配置
點(diǎn)擊左側(cè)的Trace Config選項(xiàng)進(jìn)入配置頁面。
本次調(diào)試的板子是Cortex-M4內(nèi)核的STM32F407,使用的是RT-Thread的星火一號(hào)開發(fā)板。板子鏈接至星火一號(hào)開發(fā)板預(yù)留的Trace接口。

進(jìn)入頁面后,首先配置選擇JTAG,Cortex(RISC-V的芯片選擇RISC-V),頻率默認(rèn),然后點(diǎn)擊提交即可,此時(shí)在右上角可以顯示芯片的ID,顯示正確則表示連接成功。
然后依次點(diǎn)擊下述兩個(gè)自動(dòng)探測(cè)選項(xiàng),探測(cè)線程的地址與MCU主頻(這里比較好奇線程地址是怎么探測(cè)出來的,是否有大佬解答一二),然后swo的頻率可以調(diào)高一些,這里配置為21,最后點(diǎn)擊提交配置就可以啦。下面是配置完成的頁面。

然后點(diǎn)擊左側(cè)的Trace Viewer選項(xiàng)進(jìn)入Trace頁面。
3.
Trace Viewer
進(jìn)入Trace Viewer頁面如下。

點(diǎn)擊左上角的Start選項(xiàng)進(jìn)行Trace,適當(dāng)時(shí)間后點(diǎn)擊stop選項(xiàng),完成Trace,點(diǎn)擊左側(cè)的perfett0-trace選項(xiàng)出現(xiàn)下述頁面。

接下來將探測(cè)出的波形圖局部放大進(jìn)行觀察。

局部放大后可以直觀的看到各個(gè)線程與中斷的運(yùn)行情況,看來這個(gè)對(duì)調(diào)試RT-Thread項(xiàng)目是個(gè)不錯(cuò)的選擇。有時(shí)候我們期望看一下某個(gè)線程的執(zhí)行時(shí)間,比如這里看一下shell線程的執(zhí)行時(shí)間,點(diǎn)擊左鍵選擇shell線程的起始位置,便可以看到shell線程當(dāng)前一次執(zhí)行的時(shí)間為10us,這個(gè)功能很不錯(cuò)呀。

我們知道在cortex-m系列的MCU,RTOS的切換大多由pendsv中斷實(shí)現(xiàn),,那么框選下述部分我們便可以看到當(dāng)前一個(gè)線程切換到另一個(gè)不同的線程的時(shí)間。下圖當(dāng)前運(yùn)行過程從shell線程到idle線程用時(shí)5.3us。

當(dāng)然想看一下某個(gè)中斷到線程的切換時(shí)間也是同樣的道理。比如下述從pendsv中斷到idle線程用時(shí)1.5us。

這期體驗(yàn)就到這里啦,最后總結(jié)一下使用感受吧。
4.
體驗(yàn)總結(jié)
優(yōu)點(diǎn):
直觀的將系統(tǒng)的線程運(yùn)行狀態(tài)展示出來便于調(diào)試以及對(duì)項(xiàng)目線程的優(yōu)化
原生支持RT-Thread無需其他額外適配工作,探測(cè)功能很方便
時(shí)間測(cè)量功能很方便,可以知道線程到線程,線程到中斷,線程的執(zhí)行時(shí)間,中斷服務(wù)函數(shù)的執(zhí)行時(shí)間等等,方便優(yōu)化自己的項(xiàng)目
缺點(diǎn):
當(dāng)前主要支持ARM系列的芯片,相對(duì)使用其他架構(gòu)的RT-Thread的項(xiàng)目就有點(diǎn)可惜,未來會(huì)支持?
是否可以加一個(gè)一鍵出報(bào)告的功能,不需要用戶一個(gè)一個(gè)去點(diǎn)去測(cè)量,針對(duì)一些RTOS的指標(biāo)可以一鍵輸出?
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3766瀏覽量
133767 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7418瀏覽量
129477 -
開發(fā)板
+關(guān)注
關(guān)注
26文章
6338瀏覽量
119366
發(fā)布評(píng)論請(qǐng)先 登錄
【RT-Trace】功能再升級(jí)!GDB?Server功能?+?Flash一鍵燒錄,嵌入式開發(fā)更加便捷!|?技術(shù)集結(jié)
揭秘!基于RT-Thread探究“優(yōu)先級(jí)反轉(zhuǎn)”下的任務(wù)調(diào)度究竟是什么樣的?| 技術(shù)集結(jié)
IAR EWARM的SWO Trace調(diào)試功能
使用IAR ETM Trace調(diào)試功能的要求
Cortex-M4內(nèi)核處理器的技術(shù)參考手冊(cè)
trace32 for rt-thread support的基本使用及系統(tǒng)插件原理
IAR下使用J_Trace進(jìn)行指令跟蹤
詳解CoreSight技術(shù)中的調(diào)試和跟蹤功能
重磅預(yù)售!RT-Trace調(diào)試工具
RT-Trace調(diào)試工具正式發(fā)布!
告別 “棧溢出”!用 RT-Trace 工具精準(zhǔn)定位嵌入式系統(tǒng)內(nèi)存隱患 | 技術(shù)集結(jié)
【直播預(yù)告】RT-Trace調(diào)試工具V1.1.0版本功能全解析 | 問學(xué)直播
【干貨分享】RT-Trace國產(chǎn)調(diào)試工具 | 技術(shù)集結(jié)
【直播預(yù)告】RT-Trace 全新版本發(fā)布|ITM輸出 MemoryWatch 功能首發(fā)實(shí)測(cè)! | 問學(xué)直播
【直播預(yù)告】RT-Trace 新玩法|無SWO板也能Trace,控制臺(tái)直連功能首秀! | 問學(xué)直播
RT-Trace初體驗(yàn)一之使用Trace功能調(diào)試Cortex-M4 | 技術(shù)集結(jié)
評(píng)論