91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

DWT跟蹤組件使用方法

硬件攻城獅 ? 來源:技術(shù)讓夢想更偉大 ? 作者:技術(shù)讓夢想更偉大 ? 2022-10-09 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

DWT跟蹤組件

跟蹤組件:數(shù)據(jù)觀察點與跟蹤(DWT)

a4574ab0-416f-11ed-96c9-dac502259ad0.png

DWT 中有剩余的計數(shù)器,它們典型地用于程序代碼的“性能速寫”(profiling)。通過編程它們,就可以讓它們在計數(shù)器溢出時發(fā)出事件(以跟蹤數(shù)據(jù)包的形式)。

最典型地,就是使用 CYCCNT寄存器來測量執(zhí)行某個任務(wù)所花的周期數(shù),這也可以用作時間基準相關(guān)的目的(操作系統(tǒng)中統(tǒng)計 CPU使用率可以用到它)。

Cortex-M中的DWT

在Cortex-M里面有一個外設(shè)叫DWT(Data Watchpoint and Trace),是用于系統(tǒng)調(diào)試及跟蹤。

a48285cc-416f-11ed-96c9-dac502259ad0.png

它有一個32位的寄存器叫CYCCNT,它是一個向上的計數(shù)器,記錄的是內(nèi)核時鐘運行的個數(shù),內(nèi)核時鐘跳動一次,該計數(shù)器就加1,精度非常高,如果內(nèi)核時鐘是72M,那精度就是1/72M = 14ns,而程序的運行時間都是微秒級別的,所以14ns的精度是遠遠夠的。

最長能記錄的時間為:59.65s。計算方法為2的32次方/72000000。

當CYCCNT溢出之后,會清0重新開始向上計數(shù)。

使用方法

要實現(xiàn)延時的功能,總共涉及到三個寄存器:DEMCR 、DWT_CTRL、DWT_CYCCNT,分別用于開啟DWT功能、開啟CYCCNT及獲得系統(tǒng)時鐘計數(shù)值。

DEMCR

想要使能DWT外設(shè),需要由另外的內(nèi)核調(diào)試寄存器DEMCR的位24控制,寫1使能(劃重點啦,要考試?。。?。DEMCR的地址是0xE000 EDFC

a4bf8c56-416f-11ed-96c9-dac502259ad0.pnga4e0356e-416f-11ed-96c9-dac502259ad0.png

關(guān)于DWT_CYCCNT

使能DWT_CYCCNT寄存器之前,先清0。讓我們看看DWT_CYCCNT的基地址,從ARM-Cortex-M手冊中可以看到其基地址是0xE000 1004,復(fù)位默認值是0,而且它的類型是可讀可寫的,我們往0xE000 1004這個地址寫0就將DWT_CYCCNT清0了。

a4fea044-416f-11ed-96c9-dac502259ad0.png

關(guān)于CYCCNTENA

CYCCNTENA Enable the CYCCNT counter. If not enabled, the counter does not count and no event is generated for PS sampling or CYCCNTENA. In normal use, the debugger must initialize the CYCCNT counter to 0.

它是DWT控制寄存器的第一位,寫1使能,則啟用CYCCNT計數(shù)器,否則CYCCNT計數(shù)器將不會工作。

【https://developer.arm.com/documentation/ddi0337/e/system-debug/dwt/summary-and-description-of-the-dwt-registers?lang=en】

a5172556-416f-11ed-96c9-dac502259ad0.png

綜上所述

想要使用DWT的CYCCNT步驟:

先使能DWT外設(shè),這個由另外內(nèi)核調(diào)試寄存器DEMCR的位24控制,寫1使能

使能CYCCNT寄存器之前,先清0。

使能CYCCNT寄存器,這個由DWT的CYCCNTENA 控制,也就是DWT控制寄存器的位0控制,寫1使能

寄存器定義:

//0xE000EDFCDEMCRRWDebugExceptionandMonitorControlRegister.
//使能DWT模塊的功能位
#defineDEMCR(*(unsignedint*)0xE000EDFC)
#defineTRCENA(0x01<

用法示例:

vvolatileunsignedint*DWT_CYCCNT;
volatileunsignedint*DWT_CONTROL;
volatileunsignedint*SCB_DEMCR;

voidreset_timer(){
DWT_CYCCNT=(int*)0xE0001004;//addressoftheregister
DWT_CONTROL=(int*)0xE0001000;//addressoftheregister
SCB_DEMCR=(int*)0xE000EDFC;//addressoftheregister
*SCB_DEMCR=*SCB_DEMCR|0x01000000;
*DWT_CYCCNT=0;//resetthecounter
*DWT_CONTROL=0;
}

voidstart_timer(){
*DWT_CONTROL=*DWT_CONTROL|1;//enablethecounter
}

voidstop_timer(){
*DWT_CONTROL=*DWT_CONTROL|0;//disablethecounter
}

unsignedintgetCycles(){
return*DWT_CYCCNT;
}

main(){
....
reset_timer();//resettimer
start_timer();//starttimer
//Codetoprofile
...
myFunction();
...
stop_timer();//stoptimer
numCycles=getCycles();//readnumberofcycles
...
}

示例2:

#definestart_timer()*((volatileuint32_t*)0xE0001000)=0x40000001//EnableCYCCNTregister
#definestop_timer()*((volatileuint32_t*)0xE0001000)=0x40000000//DisableCYCCNTregister
#defineget_timer()*((volatileuint32_t*)0xE0001004)//GetvaluefromCYCCNTregister

/***********
*Howtouse:
*uint32_tit1,it2;//startandstopflag
start_timer();//startthetimer.
it1=get_timer();//storecurrentcycle-countinalocal
//dosomething
it2=get_timer()-it1;//Derivethecycle-countdifference
stop_timer();//Iftimerisnotneededanymore,stop
print_int(it2);//Displaythedifference
****/

示例3:

#defineDWT_CR*(uint32_t*)0xE0001000

#defineDWT_CYCCNT*(uint32_t*)0xE0001004

#defineDEM_CR*(uint32_t*)0xE000EDFC

#defineDEM_CR_TRCENA(1<

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

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124556
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2291

    瀏覽量

    96428
  • DWT
    DWT
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    11354

原文標題:分享一個超實用的單片機調(diào)試技巧!DWT組件

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    詳解DWT跟蹤組件的單片機調(diào)試技巧

    DWT 中有剩余的計數(shù)器,它們典型地用于程序代碼的“性能速寫”(profiling)。通過編程它們,就可以讓它們在計數(shù)器溢出時發(fā)出事件(以跟蹤數(shù)據(jù)包的形式)。
    發(fā)表于 10-03 06:42 ?824次閱讀

    ComponentCodelab——Tablist的使用方法

    讓開發(fā)者了解HarmonyOS應(yīng)用開發(fā)常用布局和常用組件之Tablist的使用方法,體驗從工程創(chuàng)建到代碼、布局的編寫,再到編譯構(gòu)建、部署和運行的全過程。
    發(fā)表于 05-08 22:04

    DWT的相關(guān)資料下載

    特定應(yīng)用場景下定時器外設(shè)資源是十分稀缺的。在留言區(qū)有位大佬提到可以使用DWT,我就研究了一番。02、DWT在Cortex-M里面有一個外設(shè)叫DWT(DataWatchpoint andTrace),是用于系統(tǒng)調(diào)試及
    發(fā)表于 02-07 09:19

    AT32使用內(nèi)核DWT寄存器設(shè)定延時時間

    (Cortex-M 內(nèi)核)GPIO快速使用方法硬件資源AT-START-F403A V1.x 實驗板;軟件資源該 Demo 以 AT32F403A 為例,BSP 版本
    發(fā)表于 07-19 20:18

    如何使用高級配置和電源接口(ACPI)支持CoreSight跟蹤組件

    本規(guī)范描述了如何使用高級配置和電源接口(ACPI)支持CoreSight[1]跟蹤組件。該規(guī)范基于ACPI _DSD圖形規(guī)范[2],該規(guī)范提供了對表示作為一組連接設(shè)備排列的系統(tǒng)組件的支持
    發(fā)表于 08-08 06:16

    示波器的使用方法

    數(shù)字萬用表使用方法和示波器的使用方法詳解。
    發(fā)表于 03-14 10:38 ?32次下載

    電力電纜局部放電測量DWT技術(shù)

    從主要測試方法、信號提取電路和信號波形、離散小波變換(DWT)的濾波器本質(zhì)特性實例分析了電力電纜局部放 電的現(xiàn)場測量和降噪分析技術(shù)。根據(jù)離散小波降噪的母小波選擇、分解尺度選擇和閾值算法等3個關(guān)鍵
    發(fā)表于 08-30 17:47 ?10次下載
    電力電纜局部放電測量<b class='flag-5'>DWT</b>技術(shù)

    示波器的使用方法(三):示波器的使用方法詳解

    示波器的使用方法并非很難,重點在于正確使用示波器的使用方法。往期文章中,小編對模擬示波器的使用方法和數(shù)字示波器的使用方法均有所介紹。為增進大家對示波器的
    的頭像 發(fā)表于 12-24 20:37 ?3834次閱讀

    羅森伯格HFM電纜組件使用方法

    組件使用方法,目的是闡述安裝使用過程中的注意事項,避免錯誤的操作。 ? 1 2 表:HFM線端連接器 連接器和電纜組件的安裝過程涉及到線纜組件與板端連接器的插入、拔出和線束的布置等過
    的頭像 發(fā)表于 01-18 15:33 ?3851次閱讀

    STM32“隱藏的定時器”-DWT

    特定應(yīng)用場景下定時器外設(shè)資源是十分稀缺的。在留言區(qū)有位大佬提到可以使用DWT,我就研究了一番。02、DWT在Cortex-M里面有一個外設(shè)叫DWT(DataWatchpoint andTrace),是用于系統(tǒng)調(diào)試及
    發(fā)表于 12-04 14:51 ?1次下載
    STM32“隱藏的定時器”-<b class='flag-5'>DWT</b>

    DWT跟蹤組件調(diào)試

    DWT跟蹤組件 跟蹤組件:數(shù)據(jù)觀察點與跟蹤(DWT)
    的頭像 發(fā)表于 06-22 14:24 ?1341次閱讀
    <b class='flag-5'>DWT</b><b class='flag-5'>跟蹤</b><b class='flag-5'>組件</b>調(diào)試

    射頻電纜組件使用方法和注意事項

    射頻電纜組件使用方法和注意事項? 射頻電纜組件是一類廣泛應(yīng)用于通信系統(tǒng)、無線電設(shè)備和其他射頻設(shè)備中的重要電子組件。它們在傳輸高頻信號時扮演著關(guān)鍵的角色,因此使用和安裝時需要特別注意一
    的頭像 發(fā)表于 01-05 15:08 ?1105次閱讀

    揭秘單片機調(diào)試利器值之DWT跟蹤組件

    DWT 中有剩余的計數(shù)器,它們典型地用于程序代碼的“性能速寫”(profiling)。通過編程它們,就可以讓它們在計數(shù)器溢出時發(fā)出事件(以跟蹤數(shù)據(jù)包的形式)。
    發(fā)表于 02-28 13:55 ?1412次閱讀
    揭秘單片機調(diào)試利器值之<b class='flag-5'>DWT</b><b class='flag-5'>跟蹤</b><b class='flag-5'>組件</b>

    太陽能組件檢測設(shè)備的使用方法簡單嗎?

      JD-EL4太陽能組件檢測設(shè)備的使用方法簡單而直觀,通常設(shè)計為用戶友好型,以確保操作便捷、高效。以下將詳細介紹太陽能組件檢測設(shè)備的使用方法及相關(guān)特點:   1. 簡潔直觀的操
    的頭像 發(fā)表于 05-21 17:09 ?827次閱讀

    LangChain框架關(guān)鍵組件使用方法

    LangChain,開發(fā)者可以輕松構(gòu)建基于RAG或者Agent流水線的復(fù)雜應(yīng)用體系,而目前我們已經(jīng)可以在LangChain的關(guān)鍵組件LLM,Text Embedding和Reranker中直接調(diào)用OpenVINO進行模型部署,提升本地RAG和Agent服務(wù)的性能,接下來就讓我們一起看下這些
    的頭像 發(fā)表于 08-30 16:55 ?1196次閱讀
    LangChain框架關(guān)鍵<b class='flag-5'>組件</b>的<b class='flag-5'>使用方法</b>
    主站蜘蛛池模板: 天堂资源bt种子在线 | 午夜影视在线视频观看免费 | 轻点灬大ji巴太粗太长了爽文 | 欧美性猛交xxxx乱大交 | 日韩综合色 | 成人三级在线观看 | 四虎精品成人a在线观看 | 国产青青草 | 国产深夜福利在线观看网站 | 欧美人与禽交 | 国产精品天天看 | 女主播扒开内衣让粉丝看个够 | 色爱综合网欧美 | 欧美日本俄罗斯一级毛片 | 美女牲交视频一级毛片 | 高h办公室 | 欧美猛交xxxx乱大交 | 亚洲光棍天堂 | 亚洲人成电影在在线观看网色 | 欧美一区视频 | 韩国理论三级在线观看视频 | 欧美一区二区在线观看视频 | 色图综合网 | 特级中国aaa毛片 | 成人性生活免费视频 | 手机看片神马午夜片 | 亚洲va久久久噜噜噜久久 | 日本媚薬痉挛在线观看免费 | 麻豆三级视频 | 5月色婷婷| hdhdhd69日本xxx| 日韩毛片免费视频 | 极品吹潮视频大喷潮tv | 亚洲羞羞裸色私人影院 | 成人a级特黄毛片 | 国产福利在线免费 | 高清不卡毛片免费观看 | 男人操女人视频在线观看 | 高清激情小视频在线观看 | 51午夜| 色综合一区二区三区 |