参考:
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