0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Tracealyzer實(shí)現(xiàn)流跟蹤最簡單的方法

我快閉嘴 ? 來源:麥克泰技術(shù) ? 作者:麥克泰技術(shù) ? 2022-09-02 11:11 ? 次閱讀

Tracealyzer 實(shí)現(xiàn)流跟蹤最簡單的方法就是使用SEGGER J-Link調(diào)試器,通過RTT功能來實(shí)現(xiàn)數(shù)據(jù)的傳送。RTT需要在RAM上建立一段緩存,在目標(biāo)系統(tǒng)運(yùn)行期間,由J-Link讀取緩存中的數(shù)據(jù)。一般來說RTT的速度和可靠性比較高,但是如果您遇到了問題,可以參照以下方法嘗試排除。

常規(guī)

檢查

1、檢查是否正確的集成了Tracealyzer跟蹤記錄器庫,以及是否根據(jù)J-Link RTT流模式進(jìn)行了正確配置,請對照產(chǎn)品手冊檢查。

2、安裝最新的J-Link驅(qū)動(dòng)。SEGGER經(jīng)常更新驅(qū)動(dòng),IDE和Tracealyzer使用的J-link驅(qū)動(dòng)通常不是最新版本。一定要讓Tracealyzer和IDE使用相同的驅(qū)動(dòng)版本。

3、 “PSF Streaming Settings”中的設(shè)置要符合記錄器中的配置。

如果使用vTraceEnable(TRC_INIT),“Target Starts Tracing”和“Reset Target onConnect”不要勾選;

如果使用vTraceEnable(TRC_START),“Target Starts Tracing”保持勾選。

4、在Tracealzyer中檢查J-Link設(shè)置。J-Link的速度和協(xié)議(JTAG/SWD)要與IDE中的設(shè)置一致。

5、檢查Tracealyzer跟蹤記錄器庫的.c和.h文件是否是同一版本。

接收不到數(shù)據(jù)

1、如果按了“Starting Recording”之后,Live Stream窗口沒有接收到數(shù)據(jù)或者出現(xiàn)報(bào)錯(cuò),比較可能的問題是J-Link驅(qū)動(dòng)不能檢測到RTT控制塊。從電腦任務(wù)欄綠色的“J”小圖標(biāo),打開J-Link控制面板。在RTT頁中,狀態(tài)應(yīng)該顯示“Located RTT control block”。如果顯示“RTT Handled by other J-Link instance”,任務(wù)欄找到另外一個(gè)J-Link實(shí)例并查看狀態(tài)。

8eff25f8-2a6c-11ed-ba43-dac502259ad0.jpg

如果狀態(tài)顯示“Looking for RTT CB @…”,說明驅(qū)動(dòng)沒有找到RTT控制塊,在IDE中查找到“_SEGGER_RTT”符號(hào)的地址(通過IDE的watch窗口或printf輸出),填入RTT頁的“Control block address”,然后點(diǎn)“Start”,或者在Tracealyzer PSF Streaming Settings設(shè)置地址。重新連接,然后應(yīng)該就可以建立連接了。但要注意,每次重構(gòu)建代碼地址可能會(huì)變化,需要手動(dòng)更新一遍。

2、脫離Tracealyzer,驗(yàn)證J-Link RTT通訊

先關(guān)閉Tracealyzer,下載J-Link驅(qū)動(dòng)包并安裝,找到JLinkRTTLogger工具。在程序中禁用Tracealyzer,并在main函數(shù)中加入如下內(nèi)容:

#include “SEGGER_RTT.h”

SEGGER_RTT_Init();

SEGGER_RTT_WriteString(0, “Hello!”);

啟動(dòng)JLinkRTTLogger,按要求輸入信息,默認(rèn)值通常是1,只需按回車鍵接受。如果JLinkRTTLogger能獲取到數(shù)據(jù),說明RTT通訊是正常的,問題很可能是Tracealyzer跟蹤記錄器庫的配置問題。

8f0bb034-2a6c-11ed-ba43-dac502259ad0.jpg

事件丟失

在某些情況下,產(chǎn)生的數(shù)據(jù)超過J-Link的傳輸速度,就會(huì)導(dǎo)致RTT緩存寫滿,新產(chǎn)生的事件就會(huì)丟失,直到再次有可用的緩存。出現(xiàn)事件丟失的情況,在Tracealyzer的Live Stream窗口就會(huì)報(bào)告“Missed Events”,此外,實(shí)時(shí)視圖中的紅色區(qū)域顯示了數(shù)據(jù)丟失的位置,如下圖:

8f29bc82-2a6c-11ed-ba43-dac502259ad0.jpg

如果出現(xiàn)事件丟失,按照以下步驟進(jìn)行操作:

1、在Tracealyzer接收數(shù)據(jù)時(shí),打開J-Link控制面板,確定選擇“Process: Tracealyzer.exe”。檢查J-Link控制面板中的“Target interface”數(shù)值是否與Tracealyzer中的“J-Link Speed”設(shè)置的一致。

8f4e434a-2a6c-11ed-ba43-dac502259ad0.jpg

如果兩者不一致,存在兩種情況:

如果指定的速度高于J-Link所支持的速度,則驅(qū)動(dòng)程序?qū)⑹褂盟С值淖罡咚俣?上圖中,是2667 KHz而不是4000 KHz),速度不能再增大,除非選用更高速型號(hào)的J-Link。

在某些情況下,驅(qū)動(dòng)程序可能會(huì)忽略Tracealyzer中的“J-Link Speed”設(shè)置,而使用默認(rèn)的200KHz。解決這個(gè)問題,“Debugger Interface”中設(shè)置實(shí)際使用的調(diào)試協(xié)議(JTAG/SWD),不要使用默認(rèn)設(shè)置。

2、如果兩者一致,可以在“J-Link Speed”適當(dāng)增大速度(默認(rèn)是4000KHz),前提是J-Link支持更高的速度。各型號(hào)J-Link支持的最高速度可點(diǎn)擊“閱讀原文”查看。

3、在trcStreamingPort.h中增大TRC_CFG_RTT_

BUFFER_SIZE_UP,以增加RTT的緩存。

4、在trcConfig.h或者使用vTraceSetFilterMask() 和vTraceSetFilterGroup()過濾跟蹤的事件類型,減少產(chǎn)生的事件數(shù)量。

總結(jié)

如果J-Link RTT 流跟蹤遇到問題,首先應(yīng)該根據(jù)Tracealyzer手冊檢查記錄庫的配置,如果出現(xiàn)事件丟失,最有效的方法是提高J-Link的速度設(shè)置,增大RTT緩存,或者減少產(chǎn)生的事件數(shù)量。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • RTT
    RTT
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    17035
  • 調(diào)試器
    +關(guān)注

    關(guān)注

    1

    文章

    297

    瀏覽量

    23627
  • J-Link
    +關(guān)注

    關(guān)注

    0

    文章

    83

    瀏覽量

    22082

原文標(biāo)題:Tracealyzer J-Link RTT流跟蹤常見故障

文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何通過Tracealyzer實(shí)現(xiàn)Linux系統(tǒng)的跟蹤?

    Tracealyzer是Percepio 公司開發(fā)的一款可視化跟蹤工具, 目前它提供了30多種相互關(guān)聯(lián)的運(yùn)行時(shí)行為視圖,支持裸機(jī)、FreeRTOS、μC/OS-III、Zephyr、ThreadX、VxWorks、Linux系統(tǒng)的跟蹤
    的頭像 發(fā)表于 12-08 14:08 ?1142次閱讀
    如何通過<b class='flag-5'>Tracealyzer</b><b class='flag-5'>實(shí)現(xiàn)</b>Linux系統(tǒng)的<b class='flag-5'>跟蹤</b>?

    Tracealyzer 技術(shù)分享

    有兩種方式1.Snapshot Mode(快照模式)特點(diǎn):跟蹤的數(shù)據(jù)保存在目標(biāo)RAM中,幾KB的跟蹤緩沖區(qū)通常足以獲得最新事件的可靠跟蹤?;旧先魏蜗到y(tǒng)都可以使用。2.Streaming Mode(
    發(fā)表于 01-04 21:10

    教你快遞入門-Tracealyzer跟蹤記錄庫移植

    。使用Tracealyzer,可以查看到系統(tǒng)的真實(shí)運(yùn)行情況,為開發(fā)人員節(jié)省排除錯(cuò)誤的時(shí)間。Tracealyzer由PC應(yīng)用程序和跟蹤組件組成,Percepio提供了跟蹤記錄庫(Trac
    發(fā)表于 07-31 14:08

    Tracealyzer利用CortexM的ITM實(shí)現(xiàn)跟蹤

    事件,達(dá)到1175KB/s的傳輸速率。使用ARM-ITM模式下文將以IAR EWARM 8.40、I-jet調(diào)試器和Tracealyzer 4.35為例說明如何配置和使用ITM實(shí)現(xiàn)
    發(fā)表于 12-05 15:34

    如何使用Tracealyzer預(yù)先定義的記錄器擴(kuò)展文件實(shí)現(xiàn)用戶應(yīng)用程序跟蹤?

    被記錄為“用戶事件”。從Tracealyzer V4.2.9版本開始,增加了記錄器擴(kuò)展方式來跟蹤用戶應(yīng)用程序。記錄器擴(kuò)展方式可以幫助用戶實(shí)現(xiàn)中間件、驅(qū)動(dòng)程序API等重要功能函數(shù)調(diào)用的跟蹤
    發(fā)表于 12-18 13:37

    出現(xiàn)“丟失事件”?看Tracealyzer模式如何調(diào)優(yōu)

    在使用自己定義的端口實(shí)現(xiàn)跟蹤時(shí),如果Tracealyzer提示了“丟失事件”,那么你可以參照以下幾種
    發(fā)表于 02-19 10:06

    通過Tracealyzer用戶事件來了解應(yīng)用程序

    Tracealyzer跟蹤記錄器庫的集成。可視化特定應(yīng)用程序的自定義信息的第一步是創(chuàng)建一個(gè)用戶事件通道。這是一個(gè)字符串輸出通道,允許開發(fā)人員添加自己的自定義事件,在Tracealyzer中稱為用戶事件。例如,如果想要傳輸
    發(fā)表于 08-20 10:11

    使用Tracealyzer跟蹤FreeRTOS內(nèi)核

    程序,還需要可用于周期性任務(wù)的定時(shí)機(jī)制。大多數(shù)現(xiàn)有的開源 RTOS 實(shí)現(xiàn)了基于樹或列表的機(jī)制來跟蹤哪個(gè)任務(wù)已就緒。我們知道,基于樹的機(jī)制在復(fù)雜搜索操作方面是高效和極時(shí)的,但在處理刪除和插入操作上需花費(fèi)
    發(fā)表于 12-01 14:57

    如何使用Tracealyzer模式跟蹤ThreadX?

    Tracealyzer是Percepio 公司開發(fā)的一款用于RTOS的嵌入式軟件系統(tǒng)的可視化跟蹤工具,提供了30多種相互關(guān)聯(lián)的可視化運(yùn)行時(shí)行為視圖,本文將介紹如何使用Tracealyzer
    發(fā)表于 09-23 13:25

    是否需要在iMXRT1060 EVK板上執(zhí)行任何特定操作才能使tracealyzer正常工作?

    我有 iMXRT1060EVK,想在 FreeRTOS 的模式下使用 Tracealyzer。我正在使用 IAR EW 和 I-jet 調(diào)試探針。我已按照以下鏈接中的步驟進(jìn)行操作,但數(shù)據(jù)仍然存在
    發(fā)表于 04-17 08:02

    使用Percepio的Tracealyzer和DevAlert實(shí)現(xiàn)FreeRTOS的可觀察性!

    ,可使用相關(guān)桌面工具實(shí)現(xiàn)多種類型的調(diào)試數(shù)據(jù)。您可以獲得Tracealyzer追蹤,查看導(dǎo)致檢測到異常的事件序列。此外,最近還新增了對GDB故障轉(zhuǎn)儲(chǔ)的支持,如下列屏幕截圖所示。 GDB 故障轉(zhuǎn)儲(chǔ)屏幕截圖
    發(fā)表于 05-18 13:41

    如何使用Tracealyzer模式來跟蹤ThreadX應(yīng)用

    Tracealyzer是Percepio 公司開發(fā)的一款用于RTOS的嵌入式軟件系統(tǒng)的可視化跟蹤工具,提供了30多種相互關(guān)聯(lián)的可視化運(yùn)行時(shí)行為視圖,本文將介紹如何使用Tracealyzer
    的頭像 發(fā)表于 09-16 11:14 ?1328次閱讀

    Tracealyzer跟蹤記錄庫移植

    使用Tracealyzer,首先要將跟蹤記錄庫集成到工程。安裝了Tracealyzer 4之后,在安裝路徑下找到以RTOS名稱命名的文件夾,將TraceRecorder子文件夾復(fù)制到自己的工程目錄中。以FreeRTOS為例:
    的頭像 發(fā)表于 11-08 11:17 ?1648次閱讀

    Tracealyzer利用CortexM的ITM實(shí)現(xiàn)跟蹤

    Tracealyzer快照模式,能夠跟蹤RTOS系統(tǒng)的運(yùn)行時(shí)間受限于硬件可用的RAM大小,通常只能追蹤幾十秒的時(shí)間。使用模式則不會(huì)存在這個(gè)問題,只要電腦硬盤空間足夠,可用追蹤幾小時(shí)甚至幾天的時(shí)間。
    的頭像 發(fā)表于 12-20 11:12 ?1634次閱讀

    如何通過Tracealyzer導(dǎo)出的跟蹤數(shù)據(jù)對任務(wù)進(jìn)行分析?

    Tracealyzer是Percepio 公司開發(fā)的一款用于RTOS的可視化跟蹤工具, 目前Tracealyzer提供了30多種相互關(guān)聯(lián)的運(yùn)行時(shí)行為視圖,對系統(tǒng)運(yùn)行時(shí)的行為提供了前所未有的洞察
    的頭像 發(fā)表于 02-06 14:13 ?1015次閱讀