人妻蜜と1~4中文字幕月野定规 ,国产精品成人va在线播放,色优久久久久综合网鬼色,WWW插插插无码视频网站

【ARM】Keil MDK Trace ETM功能

一、硬件、軟件環(huán)境

1、硬件環(huán)境:

(1)開發(fā)板:ATSAMV71Q21開發(fā)板(注:開發(fā)板需帶ETM模塊接口)




(2)仿真器:ULINK pro仿真器(注:仿真器支持ETM功能即可)




2、軟件環(huán)境:

(1)系統(tǒng):window11 專業(yè)版

(2)軟件:Keil MDK pro版



二、ETM功能配置流程

1、新建初始化文件”SAMx7_TP.ini”


初始化文件的內(nèi)容如圖所示:(注:不同型號的芯片的對應(yīng)trace功能的初始化文件可能不一致,不同芯片的trace功能的初始化文件可以參考幫助文檔Configure Cortex-M Devices for Tracing部分)


初始化文件主要內(nèi)容是將ETM功能使能和對應(yīng)的GPIO口進(jìn)行對應(yīng)的使能。

首先是對于電源管理控制器(PMC)進(jìn)行寫保護(hù)失能,使得可以對PMC對應(yīng)的寄存器進(jìn)行操作。據(jù)數(shù)據(jù)手冊查詢,PCK3時鐘對應(yīng)的是ETM外部設(shè)備,所以要設(shè)置ETM的主時鐘,使能PCK3時鐘。


然后是使能PIOD的時鐘,要對于PIOD組進(jìn)行設(shè)置也需要對于PIOD的寫保護(hù)進(jìn)行失能并禁止PIO控制相對應(yīng)的引腳,啟用對于對應(yīng)引腳的外圍控制,讓仿真器可以對于對應(yīng)IO口進(jìn)行控制。

然后是對于IO口的復(fù)用,需要對于寄存器0和寄存器1進(jìn)行設(shè)置。讓PD8設(shè)置成無上拉下拉,PD7~4設(shè)置成輸入改變中斷模式,無上拉下拉。

最后設(shè)置一個重啟執(zhí)行函數(shù)OnResetExec,讓該函數(shù)可以通過uVision的“重置”按鈕重置后執(zhí)行。


2、添加初始化文件:將初始化文件添加到Keil->option for target->Debug->Initialization File中,




3、選擇仿真器

仿真器需要選擇支持ETM功能的,而ULINK pro仿真器支持ETM功能,所以仿真器選項可以選擇”ULINK Pro Cortex Debugger”。


3、配置Keil的debug和trace選項

(1)點(diǎn)擊settings進(jìn)入設(shè)備設(shè)置界面


(2)在Debug選項中,需要將port選擇SW接口


(3)然后在trace配置上,需要設(shè)置core clock,核心時鐘必須與設(shè)備配置相對應(yīng)。并且勾選”Use Core Clock”,讓trace clock和core clock保持一致。


(4)然后,勾選”Trace Enable”和”ETM Trace Enable”,讓Trace和ETM功能使能。


(5)Trace Port的設(shè)置必須始終與”xxxx.ini”文件中的設(shè)置相對應(yīng)。在配置文件中,配置了 PD4-PD8五個IO口,其中TRACED[0..3]在引腳PD4到PD7上輸出,跟蹤時鐘TRACECK 在引腳PD8上配置。所以,Trace Port選擇”Sync Trace Port with 4-bit Data”。

CLK為引腳TRACECLK設(shè)置以ns為單位的信號延遲。通常,無需更改,0.0 ns的值就足夠了。

D0..D3為引腳TRACEDATA[0]..TRACEDATA[3]設(shè)置以ns為單位的信號延遲。通常,無需更改,0.0 ns的值就足夠了。

(補(bǔ)充資料:什么時候需要調(diào)整信號延遲)


(6)這里的PC Sampling部分定義了生成儀器跟蹤數(shù)據(jù)的間隔。除了周期性生成外,還 可以為每個存儲器讀/寫操作生成PC采樣。設(shè)置PC的采樣間隔為1024*16.(周期性PC 值的頻率 = 核心時鐘/預(yù)分頻器)


(7)Trace Event設(shè)置這里可以根據(jù)需求自行進(jìn)行勾選,勾選項會在Event Counters窗口出展示。



CPI(每條指令的周期):用于指令周期計數(shù)估計的通用計數(shù)器。此計數(shù)器在執(zhí)行多周期指令所需的每個額外周期上遞增。在任何指令獲取暫停的每個周期,計數(shù)器也會遞增。指令的第一個周期和LSU記錄的周期不計數(shù)。

EXC(異常開銷):計數(shù)器在與異常條目或返回相關(guān)聯(lián)的每個周期上遞增。也就是說,它統(tǒng)計與入口堆疊、返回取消堆疊、搶占和其他異常相關(guān)進(jìn)程相關(guān)的周期。

SLEEP(睡眠周期):無論是由WFI或WFE指令啟動,還是由退出時休眠功能啟動,計數(shù)器在與省電相關(guān)的每個周期上遞增。

LSU(加載存儲單元周期):此計數(shù)器在執(zhí)行多周期加載存儲指令所需的每個額外周期上遞增。它不計算執(zhí)行任何指令所需的第一個周期。

FOLD(折疊指令):計數(shù)器對以零周期執(zhí)行的任何指令遞增(例如,IT指令被折疊且不使用任何周期)。

EXCTRC(異常跟蹤):計數(shù)器在異常、中斷條目和中斷退出時遞增?!案櫘惓!贝翱陲@示統(tǒng)計信息和事件查看器隨時間的執(zhí)行情況。


5、完成上述步驟,Trace功能和ETM功能就配置完成,進(jìn)入調(diào)試界面后,界面下方出現(xiàn)”Trace: Running”則表示配置成功,可以使用Trace、ETM功能。


若出現(xiàn)的不是”Trace:Running”,需要根據(jù)對應(yīng)的提示信息對于配置流程進(jìn)行篩查。

例如:

“Trace:Communication Error”:表示檢測到無效通信。不正確的時鐘設(shè)置或硬件問題導(dǎo)致此消息。在main()程序中更改核心時鐘的應(yīng)用程序可能會在數(shù)據(jù)捕獲錯誤時拋出此消息。一旦核心時鐘調(diào)整到系統(tǒng)設(shè)置,此錯誤消息將消失。

“Trace:HW Buffer”:表示檢測到溢出USB端口無法以適配器發(fā)送數(shù)據(jù)的速度接收數(shù)據(jù)。關(guān)閉不需要的跟蹤事件,或跳過“PC采樣”。

“Trace:SW Buffer”:表示PC上的內(nèi)部SW緩沖區(qū)溢出。調(diào)整跟蹤端口的SWO時鐘預(yù)分頻器或調(diào)試端口的最大時鐘。

“Trace:No Synchronization”:表示未從目標(biāo)接收到同步數(shù)據(jù)包。跟蹤硬件未連接或配置不正確。

“Trace:Data Stream Error”:表示跟蹤端口太忙,無法傳輸所有跟蹤數(shù)據(jù)包。捕獲太多跟蹤數(shù)據(jù)時會發(fā)生這種情況。減少跟蹤事件的數(shù)量?!爸噶罡櫞翱凇憋@示溢出發(fā)生的位置。




三、功能展示

1、代碼覆蓋率功能:可以顯示函數(shù)的執(zhí)行百分比了。


2、性能分析功能:可以查看工程中每一個文件、函數(shù)、語句的執(zhí)行時間和占用總時間的比例。