Tracealyzer是Percepio 公司開(kāi)發(fā)的一款用于RTOS的嵌入式軟件系統(tǒng)的可視化跟蹤工具,提供了30多種相互關(guān)聯(lián)的可視化運(yùn)行時(shí)行為視圖,本文將介紹如何使用Tracealyzer的流模式來(lái)跟蹤ThreadX應(yīng)用。
添加Tracealyzer跟蹤記錄器庫(kù)文件
使用Tracealyzer首先需要在工程中添加用于ThreadX的跟蹤記錄器庫(kù)文件,包括源碼,頭文件、配置文件等。這些文件在Tracealyzer的安裝目錄下可以找到,默認(rèn)的保存路徑可以參考:C:Program FilesPercepioTracealyzer 4ThreadXTraceRecorder。
使用流模式,還需要添加流模式端口所用到的文件,以JLink RTT方式為例需要例如添加記錄器庫(kù)streamports下的Jlink_RTT文件夾中的文件。本文介紹時(shí)使用的是STM32CubeIDE,所有文件添加完成后的工程目錄結(jié)構(gòu)如下圖所示:
注意在進(jìn)行操作的時(shí)候出現(xiàn)的所有的文件夾名稱及文件保存路徑中均不包含空格和中文字符,以避免在編譯過(guò)程中出現(xiàn)一些奇怪的錯(cuò)誤,以及所有添加文件的頭文件包含路徑都需要在工程中進(jìn)行設(shè)置。文件的添加過(guò)程也可以參考:快速入門| Tracealyzer跟蹤記錄庫(kù)移植
工程相關(guān)宏和IDE選項(xiàng)設(shè)置
(1)要在項(xiàng)目中使用跟蹤首先需要在ThreadX的tx_api.h頭文件中包含記錄器庫(kù)的頭文件。
(2)在ThreadX的配置文件tx_user.h中開(kāi)啟跟蹤功能和堆棧檢測(cè)功能,需要通過(guò)修改頭文件中的這兩條宏來(lái)開(kāi)啟。
(3)在Tracealyzer的配置文件trcConfig.h文件中需要包含你所使用芯片系列所對(duì)應(yīng)的頭文件,以STM32F4系列芯片為例則是#include "stm32f4xx.h"。
在該文件中還需要指定你所使用的芯片內(nèi)核,如果是使用M3/M4/M7內(nèi)核的芯片則選擇TRC_HARDWARE_PORT_ARM_Cortex_M即可。
(4)在trcKernelPortConfig.h文件中,通過(guò)宏#define TRC_CFG_CPU_CLOCK_HZ設(shè)置所使用MCU運(yùn)行的時(shí)鐘主頻,例如運(yùn)行在25MHz。
(5)為了實(shí)現(xiàn)一些ThreadX自帶的跟蹤機(jī)制所未提供的更為強(qiáng)大的跟蹤功能,Tracealyzer提供了一個(gè)頭文件trcCTI.h,該文件需要被項(xiàng)目工程中的所有代碼文件都包含。可以借助IDE提供的設(shè)置選項(xiàng)來(lái)實(shí)現(xiàn)。
在STM32CubeIDE的工程設(shè)置中,選擇編譯器Preprocessor選項(xiàng)的Define symbols(-D)一欄添加“__inside_$(notdir $(basename $(@)))”這一全局宏定義命令來(lái)實(shí)現(xiàn)。
在該位置添加宏定義后還需在Miscellaneous選項(xiàng)中添加“-include trcCTI.h”命令。
在工程代碼中啟動(dòng)跟蹤
在ThreadX的入口函數(shù)tx_application_define()的入口位置調(diào)用vTraceEnable()函數(shù)開(kāi)啟Tracealyzer跟蹤。vTraceEnable()函數(shù)根據(jù)函數(shù)參數(shù)的不同支持多種設(shè)置,此處TRC_START指初始化并直接開(kāi)始跟蹤。
Tracealyzer電腦端軟件的設(shè)置
(1)開(kāi)始實(shí)時(shí)跟蹤。啟動(dòng)Tracealyzer,從File->Settings->J-Link Settings設(shè)置調(diào)試器所使用的接口和芯片型號(hào)。
(2)在PSF Streaming Settings,設(shè)置Target Connection為:SEGGER RTT,使用J-Link RTT通訊機(jī)制,將Trace數(shù)據(jù)從目標(biāo)板經(jīng)過(guò)J-Link調(diào)試器傳送到PC端軟件。
(3)運(yùn)行目標(biāo)平臺(tái)程序,點(diǎn)“Start Recording”圖標(biāo)打開(kāi)Live Stream窗口,點(diǎn)“Start Session”按鈕即可開(kāi)始實(shí)時(shí)跟蹤。
(4)示例中創(chuàng)建了一個(gè)簡(jiǎn)單的優(yōu)先級(jí)為10的循環(huán)打印任務(wù) ,可以看到在Tracealyzer中成功顯示了該任務(wù)中調(diào)用的延時(shí)函數(shù),及執(zhí)行過(guò)程中被系統(tǒng)中更高優(yōu)先級(jí)的定時(shí)器任務(wù)System Timer Thread任務(wù)搶占的執(zhí)行情況。
作為一款功能強(qiáng)大的RTOS可視化跟蹤工具,系統(tǒng)運(yùn)行時(shí)的行為提供了前所未有的洞察方法。能夠幫助開(kāi)發(fā)人員加快固件的開(kāi)發(fā),減少對(duì)系統(tǒng)驗(yàn)證和性能優(yōu)化所需要的時(shí)間。
審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5095文章
19189瀏覽量
307965 -
threadx
+關(guān)注
關(guān)注
0文章
15瀏覽量
13870 -
RTOS
+關(guān)注
關(guān)注
22文章
819瀏覽量
119914
原文標(biāo)題:如何使用Tracealyzer流模式跟蹤ThreadX?
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何通過(guò)Tracealyzer實(shí)現(xiàn)Linux系統(tǒng)的跟蹤?
![如何通過(guò)<b class='flag-5'>Tracealyzer</b>實(shí)現(xiàn)Linux系統(tǒng)的<b class='flag-5'>跟蹤</b>?](https://file1.elecfans.com/web2/M00/B3/45/wKgaomVysyyAXI5dAAAY-0wqfD0362.png)
評(píng)論