调试笔记--keil 测量周期小技巧
調試筆記–keil 測量周期小技巧
本文參考安富萊專題教程第7期 http://www.armbbs.cn/forum.php?mod=viewthread&tid=87176&extra=page%3D1
- cortex-m內核的單片機,內核內除了systick定時器外,還有一個用于調試的WDT定時器,可以在keil中協助測量代碼運行周期。
WDT定時器默認是給調試器用的,自己最好不要使用。
直接看keil的狀態欄計時器
如果使用daplink
如果使用jlink
例如要測GPIO翻轉函數所需時間,在翻轉函數前后打上斷點,然后右鍵將t2清零,再點擊運行到下一個斷點處,然后觀察t2時間戳
t0代表從函數上電后開始計時到當前的時間(不用擔心WDT溢出問題,keil會自動計算)
t1和t2是兩個時間戳,用戶可以用這兩個時間戳互相配合,實現自己想要的功能
如果沒有時間,可以切換到寄存器窗口
使用keil的Event Recorder中間件測量
Event Recorder中間件支持時間和功耗測量,printf打印,及keil其他中間件的調試,是keil專門用于調試的組件。其原理簡單來說就是將一些調試信息以固定的格式存放在RAM中,然后通過調試器找到并讀取RAM中固定格式的數據,通過keil的界面組件顯示出來。因此使用Event Recorder中間件需要修改代碼,并且需要占用一定的RAM空間。
如果網不好,可以通過 http://www.armbbs.cn/forum.php?mod=viewthread&tid=96992&highlight=pack 鏡像下載后,自行安裝
并添加一下代碼進行初始化組件
計時API其實就是將DWT計時器的時鐘數以固定格式存放到RAM中
//參數 slot范圍 0-15 共16個計時通道 EventStartA(slot);/* 要測量的代碼 */EventStopA(slot);ps: 這個功能受調試器功能影響,雖然dap、jlink都可以用, 但是實測發現dap有時不能實時檢測 (計時功能其實也是調用了MDK狀態欄的計時器,如果時間不準,可以參考文章開頭,先將狀態欄計時器功能調準),不過Event Recorder中間件還帶printf功能,并且keil其他中間件例如RTX5或者FREERTOS都有配套的Event Recorder文件,非常方便調試OS(可以獲取OS堆棧情況,任務切換情況等信息)
總結
以上是生活随笔為你收集整理的调试笔记--keil 测量周期小技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调试笔记--keil 断点调试小技巧
- 下一篇: freeRtos学习笔记 (9) 移植和