在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何利用ITM實現更快的跟蹤?如何在代碼中使用ITM呢?

麥克泰技術 ? 來源:麥克泰技術 ? 2024-01-26 11:27 ? 次閱讀

在大多數固件開發過程中,需要有某種形式的診斷日志/跟蹤。如果在傳統串口上使用簡單的“printf”調用實現日志,每次日志調用的開銷通常是多個毫秒,這種時間消耗將干擾應用程序的行為,在異常處理程序或快速控制循環等時間關鍵代碼中是不可接受的。

為了解決這個問題,很多MCU,如ARM Cortex-M3, M4或M7內核的MCU,已經在處理器中內置了解決方案,即ITM - Instrumentation Trace Macrocell。

38705e40-bbf8-11ee-8b88-92fbcf53809c.png

ITM是一個硬件單元,可以傳輸兩種類型的診斷數據:

1、由DWT單元生成的調試事件,例如異常事件和數據觀察點事件。

2、軟件插裝(SWIT)事件,即代碼記錄的自定義數據。

使用ITM,只需將數據寫入相應的內存映射寄存器,用戶即可將任何類型的數據作為SWIT事件傳輸到主機PC。通過相應的調試器,傳輸只需幾個時鐘周期,ITM還支持硬件完成的時間戳。許多IDE允許用戶在調試窗口中查看這些數據,或者將數據寫入文件供以后分析。數據可以是字符形式的文本數據(來自printf輸出),但也可以發送二進制數據,ITM每次寫入最多支持32位數據。

ITM單元為SWIT事件提供了32個邏輯通道,每個通道都有一個相應的stimulus寄存器,用于接受輸入。這些通道將診斷數據分成不同的類別。例如,ARM推薦通道0用于文本數據,通道31用于RTOS事件,而其他通道可以用于任何目的。所有ITM通道共享一個公共FIFO緩沖區,該緩沖區依次連接到一個或兩個輸出端口。如果使用完整跟蹤端口和跟蹤調試器,則ITM數據包含在指令跟蹤(ETM)結果中,但也可以通過調試端口中常用的串行線輸出(SWO)接口獲得。大多數針對ARM MCU的調試器都支持SWO接口。

ITM FIFO緩沖區非常小,只有10個字節,因此如果使用低速的調試器,如果過于頻繁地向ITM端口寫入數據,可能會造成數據丟失。這可以在寫入之前通過檢查ITM FIFO是否有空閑空間來防止,在沒有空間的情況下延遲寫入(參見下面的“fputc”代碼示例)。但是,如果調試器接收數據太慢,這種方式可能會對系統的時間產生重大影響。

避免數據丟失和阻塞的更好方法是使用快速調試器,如SEGGER J-Link,Keil ULINK等允許60-100 MHz的SWO采樣率。

在代碼中使用ITM

ITM stimulus寄存器位于地址0xE0000000(端口0)到0xE000007C(端口31)。要寫入數據,需要做的就是在IDE中啟用ITM跟蹤,并將數據寫入相應的寄存器。

如果使用的板級支持包包含ARM的CMSIS API,那么寫入數據很簡單:

#include"myMCU.h" // Includes CMSIS

ITM->PORT[0].u32 = mydata;

如果系統中沒有使用CMSIS API,可以直接為ITM stimulus寄存器定義宏,如下所示:

#defineITM_PORT(n) (*((volatile unsigned long *)(0xE0000000+4*n)))

ITM_PORT(0) = mydata;

在使用ITM跟蹤之前,需要使能ITM跟蹤。基于Keil μVision的示例如下,該系統已配置為在所有32個ITM stimulus端口啟用ITM跟蹤。如果可能的話,在“Trace port”中選擇Manchester模式,它允許比UART/NRZ模式更高的SWO時鐘頻率。

38779de0-bbf8-11ee-8b88-92fbcf53809c.png

為了讓你的“printf”調用寫入ITM端口0,需要像這樣定義“fputc”函數:

struct __FILE { int handle; /* Add whatever needed */ };

FILE __stdout;

FILE __stdin;

int fputc(int ch, FILE *f)

{

if(DEMCR & TRCENA) // Only ifITM isavailable

{

while(ITM_PORT(0) == 0); // Blockuntil room inITM FIFO

ITM_PORT(0) = ch; // Writethe data

}

return(ch);

}

ITM是大多數ARM開發工具支持的重要調試技術,它在調試中有許多應用,并且易于入門!

Percepio Tracealyzer利用ITM的性能,實現RTOS實時數據跟蹤。Tracealyzer允許用戶跟蹤和可視化RTOS任務,異常(ISR)和其他軟件事件的執行,提供超過30個相互關聯的視圖,為基于RTOS的固件的運行時世界提供驚人的視覺洞察,加速開發,驗證和調試。

388ebac0-bbf8-11ee-8b88-92fbcf53809c.png

Tracealyzer支持ARM Cortex-M3, M4和M7 MCU的ITM跟蹤,實現FreeRTOS,μC/OS-III和SafeRTOS等RTOS的可視化分析。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19313

    瀏覽量

    230052
  • ITM
    ITM
    +關注

    關注

    0

    文章

    6

    瀏覽量

    8938
  • RTOS
    +關注

    關注

    22

    文章

    815

    瀏覽量

    119698
  • Cortex-M3
    +關注

    關注

    9

    文章

    270

    瀏覽量

    59500
  • 調試器
    +關注

    關注

    1

    文章

    305

    瀏覽量

    23759

原文標題:如何利用ITM實現更快的跟蹤?

文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    M487JIDAE如何使用ITM功能實現printf打印?

    M487JIDAE如何使用ITM功能實現printf打印?
    發表于 01-16 08:03

    ITM-AP02/ITM-AP03/ITM-AP04三款經典AR9331無線AP模塊

    設計模塊,替很多客戶分擔了模塊集成中的一些設計擔憂;有應用高性能的AR9331芯片,開發設計三款經典無線模塊,型號分別是:ITM-AP02/ITM-AP03/ITM-AP04;在市場上得到了廣泛用戶
    發表于 11-13 16:39

    【NUCLEO-F412ZG試用體驗】ITM機制輸出調試信息

    信息出機制:TIMCoreSight ITM 塊是一個軟件應用程序驅動的跟蹤源。支持的代碼將生成軟件測量跟蹤 (SWIT)。此外,該塊還提供粗略的時間戳功能。該塊的主要用途是: 支持
    發表于 11-30 21:40

    Tracealyzer利用CortexM的ITM實現跟蹤

    事件,達到1175KB/s的傳輸速率。使用ARM-ITM流模式下文將以IAR EWARM 8.40、I-jet調試器和Tracealyzer 4.35為例說明如何配置和使用ITM實現流模式跟蹤
    發表于 12-05 15:34

    ITM調試

    折騰了許久,終于把 ITM 調試搞定了。首先看看效果圖:是的,你沒有看錯,以上所有的窗口都是由MDK支持的。這也是為什么我執著于ITM調試的原因了,因為這種調試手段實在是太方便了啊。相信很多朋友在
    發表于 08-11 08:14

    何在SWV ITM data console窗口看到printf打印的內容?

    何在SWV ITM data console窗口看到printf打印的內容?
    發表于 12-02 06:28

    如何使用ITM調試不適用于STM32CubeIDE中的SWV?

    不是更新全局變量并通過查看 SWV 數據跟蹤時間線圖表或 CubeMonitor 中的圖表來觀察執行順序?關于為什么我可以使用 Nucleo-F446RE 使除 ITM 之外的所有東西都為我工作的任何
    發表于 12-26 07:19

    M487JIDAE如何使用ITM功能實現printf打印?

    M487JIDAE如何使用ITM功能實現printf打印?
    發表于 06-13 06:30

    M487JIDAE如何使用ITM功能實現printf打印?

    M487JIDAE如何使用ITM功能實現printf打印?
    發表于 08-28 08:15

    ITM公司采用Broadcom藍牙技術

    ITM公司采用Broadcom藍牙技術 Broadcom宣布,領先的藍牙車載套件設備原始設計制造商(ODM)ITM公司已經決定在其新的無線車載套件產品系列中采用Broadcom的藍牙技術。這些
    發表于 12-22 09:19 ?682次閱讀

    基于ITM-DOPA-B-01無線連結的參考設計

    查看ITM-DOPA-B-01的參考設計。 http://www.xsypw.cn/soft/有成千上萬的參考設計,可幫助您使項目栩栩如生。
    發表于 01-09 21:00 ?0次下載
    基于<b class='flag-5'>ITM</b>-DOPA-B-01無線連結的參考設計

    基于ITM-DYPA-B-01無線連結的參考設計

    查看ITM-DYPA-B-01的參考設計。 http://www.xsypw.cn/soft/有成千上萬的參考設計,可幫助您使項目栩栩如生。
    發表于 01-14 09:40 ?3次下載
    基于<b class='flag-5'>ITM</b>-DYPA-B-01無線連結的參考設計

    基于ITM-MKR680Temperature Sensing的參考設計

    View the reference design for ITM-MKR680. http://www.xsypw.cn/soft/ has thousands of reference designs to help bring your project to life.
    發表于 07-05 12:28 ?2次下載
    基于<b class='flag-5'>ITM</b>-MKR680Temperature Sensing的參考設計

    基于ITM-MKR680Temperature Sensing的參考設計1

    View the reference design for ITM-MKR680. http://www.xsypw.cn/soft/ has thousands of reference designs to help bring your project to life.
    發表于 07-05 12:36 ?1次下載
    基于<b class='flag-5'>ITM</b>-MKR680Temperature Sensing的參考設計1

    ITM和PTM、ETM有什么關系

    CoreSight ITM 塊是一個軟件應用程序驅動的跟蹤源。支持的代碼將生成軟件測量跟蹤 (SWIT)。此外,該塊還提供粗略的時間戳功能。 ITM
    的頭像 發表于 10-30 14:53 ?1372次閱讀
    主站蜘蛛池模板: 新网球王子u17世界杯篇免费观看| 5x视频在线观看| 一区二区三区高清视频在线观看| 国产精品视频一区二区三区| 四虎影视4hu4虎成人| 真爽~张开腿~让我插| 人人草人人插| 成人区精品一区二区毛片不卡 | 天天操人人射| 久久精品亚洲精品国产色婷| 色视频大全| 婷婷综合丁香| 中文字幕va| 日韩高清成人毛片不卡| 欧美黑人性受xxxx喷水| 欧美肉到失禁高h视频在线| 337p亚洲精品色噜噜狠狠| 狠狠五月深爱婷婷网免费| 欧美精品一级| 色多多在线观看| 四虎影视在线观看| 欧美一级视频免费看| 色偷偷91综合久久噜噜噜男男| 伊人蕉久| 永久看日本大片免费| 天堂资源www天堂在线| 婷五月综合| 你懂得在线播放| 免费在线观看一级毛片| 欧美网站在线播放| 欧美性喷潮| 国产成人精品1024在线| 高清人妖shemale japan| 天天影院网| 天天在线天天看成人免费视频| 国产午夜一区二区在线观看| 日本jlzz| 中文字幕一区二区三区四区五区人| 亚洲欧洲一区二区三区在线观看| 亚洲人一区| 四虎网站网址|