日韩中文在线观看-欧美性综合-伊人视频在线观看-亚洲免费在线视频观看-国产偷人视频-人妻丰满熟妇岳av无码区hd-国产一级淫片a视频免费观看-国产精品交换-国产精品1区2区3区4区-美女日批视频在线观看-欧美日韩一区二区三区自拍

【ARM】Keil MDK Trace ETM功能

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

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

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




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




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

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

(2)軟件:Keil MDK pro版



二、ETM功能配置流程

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


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


初始化文件主要內容是將ETM功能使能和對應的GPIO口進行對應的使能。

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


然后是使能PIOD的時鐘,要對于PIOD組進行設置也需要對于PIOD的寫保護進行失能并禁止PIO控制相對應的引腳,啟用對于對應引腳的外圍控制,讓仿真器可以對于對應IO口進行控制。

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

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


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




3、選擇仿真器

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


3、配置Keil的debug和trace選項

(1)點擊settings進入設備設置界面


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


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


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


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

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

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

(補充資料:什么時候需要調整信號延遲)


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


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



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

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

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

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

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

EXCTRC(異常跟蹤):計數器在異常、中斷條目和中斷退出時遞增。“跟蹤異常”窗口顯示統計信息和事件查看器隨時間的執(zhí)行情況。


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


若出現的不是”Trace:Running”,需要根據對應的提示信息對于配置流程進行篩查。

例如:

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

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

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

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

“Trace:Data Stream Error”:表示跟蹤端口太忙,無法傳輸所有跟蹤數據包。捕獲太多跟蹤數據時會發(fā)生這種情況。減少跟蹤事件的數量。“指令跟蹤窗口”顯示溢出發(fā)生的位置。




三、功能展示

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


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


主站蜘蛛池模板: 腾冲县| 清原| 清新县| 沈阳市| 宁河县| 高尔夫| 鲁甸县| 禹城市| 满洲里市| 陆川县| 布拖县| 山西省| 密云县| 辽阳县| 阳朔县| 于田县| 遂昌县| 民权县| 宣化县| 锦州市| 正安县| 利辛县| 通河县| 沙河市| 余干县| 和顺县| 仙游县| 新源县| 东阿县| 胶州市| 莆田市| 阿拉善左旗| 祁连县| 宁晋县| 神木县| 红原县| 乐陵市| 武义县| 武乡县| 墨江| 日土县|