參考:
http://forum.armfly.com/forum.php?mod=viewthread&tid=87176&fromuid=20118
(出處: 安富萊電子論壇)
Note:按步驟操作后,出現編譯問題,檢查CMSIS庫文件的版本是否過低。
1.Event Recorder 是什么?
MDK 中的一個功能,用於記錄事件,代替串口輸出調試信息。
Event Recorder 工作原理
特點:
-
-
支持的事件類型濾除機制,比如運行錯誤,API 調用,內部操作和操作信息的區分。
-
可以在任務中,RTOS 內核中和中斷服務程序中任意調用。
-
對於帶ITM 功能的Cortex-M3/M4/M7/M33 內核芯片,執行記錄期間,全程無需開關中斷操作。對於不帶ITM 功能的Cortex-M0/M0+/M23,是需要開關中斷的。
-
支持printf 重定向。
-
各種link 通吃,支持SWD 接口或者JTAG 接口方式的JLINK、STLINK、ULINK 和CMSIS-DAP。
-
對於帶DWT 時鍾周期計數器功能的Cortex-M3/M4/M7/M33 內核芯片,創建時間戳時,可以有效降低系統負擔,無需專用定時器來實現。
-
Event Recorder 執行時間具有時間確定性,即執行的時間是確定的,而且執行速度超快,因此,實際產品中的代碼依然可以帶有這部分,無需創建debug 和release 兩種版本。
-
RTX5 及其所有中間件都支持Event Recorder 調試。
2.Event Recorder 怎么用?
a.通過RTE 環境,為工程添加Event Recorder 功能
b.配置EventRecorderConf.h
c.初始化
/* 初始化EventRecorder並開啟*/ EventRecorderInitialize(EventRecordAll, 1U); EventRecorderStart();
d.調試窗口
3.時間測量功能的實現
時間測量功能簡單易用,僅需一個起始函數,一個停止函數即可。
當前支持4 組,每組支持16 路測量,也就是可以同時測量64 路。
EventStartA(0); //測量的代碼部分 EventStopA(0)
運行后,顯示Event Statistics 調試組件。
4.Event Recorder 需要注意什么?
a.工程無需重定向printf,需要勾選MicroLib。
b.為了時間准確,在仿真器配置的地方,填入正確的Core