完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在前面几个专题中介绍了Ozone、RTT-Viewer、J-Scope在MM32F013x上的使用方法,虽然以上的几种方式简单方便,但是也仅仅局限于J-Link工具,而使用Event Recorder则没有以上的限制,Event Recorder是MDK在5.22版本加入的新功能,使用标准SWD的下载接口,基本上适用于各种Link,只要MDK v5.22以上的版本即可,支持时间测量、功耗测量、printf打印等。到了5.25版本以后,这个功能更加的完善,并且增加了时间测量等功能。 Event Recorder简介 Event Recorder的特色主要有以下几个方面: 1. 提升应用程序动态执行期间的检测能力。 2. 支持事件类型滤除机制,比如运行错误,API调用,内部操作和操作信息的区分。 3. 可以在任务中,RTOS内核中和中断服务程序中任意调用。 4. 对于带ITM功能的Cortex-M3/M4/M7/M33内核芯片,执行记录期间,全程无需开关中断操作。 对于不带ITM功能的Cortex-M0/M0+/M23,是需要开关中断的。 5. 支持printf重定向。 6. 各种Link通吃,支持SWD接口或者JTAG接口方式的J-Link、U-Link和CMSIS-DAP。 7. 对于带DWT时钟周期计数器功能的Cortex-M3/M4/M7/M33内核芯片,创建时间戳时,可以有效降低系统负担,无需专用定时器来实现。 8. Event Recorder执行时间具有时间确定性,即执行的时间是确定的,而且执行速度超快,因此,实际产品中的代码依然可以带有这部分,无需创建debug和release两种版本。 9. RTX5及其所有中间件都支持Event Recorder调试。 创建Event Recorder工程 01 添加Event Recorder组件 使用MDK5.25以上版本创建MM32F013x工程模板(或者是能够被MDK5.25版本正确打开的工程),具体的工程搭建这里不做过多的介绍,具体请参考MM32官方的工程搭建文档。 打开RTE(Manage Run-time-Environment窗口),在Compiler组件下勾选Event Recorder,并在Compiler组件下面的I/O组件下中的STDOUT中的Variant修改为EVR,此处的修改是为了将printf函数冲定向到Event Recorder上。 在需要使用Event Recorder的代码处,直接调用Event Recorder的API函数,如果需要使用printf函数的地方直接使用printf函数输出即可,在MDK中需要勾选MicroLib,并删掉文件中的重定向函数。 Time Stamp Source:表示时间戳来源,有如下四种可以选择,我们这里使用DWT时钟周期计数器。 到此,添加工程文件已经完成。 Event Recorder注意事项 使用CMSIS软件包一定要使用当前最新的,否则可能会出现错误。 下载完成以后需要将工程下面Device文件夹下面的CMSISKEIL_CORE文件中的文件替换为MDK安装路径下面ARMPACKARMCMSIS5.3.0CMSISInclude中的文件。 03 Event Recorder代码实现 在主函数中加入Event Recorder初始化函数:EventRecorderInitialize(EventRecordAll, 1U); EventRecorderStart(); 在主函数的wilie循环中加入以下函数:EventStartA(0); BSP_LED1_TOGGLE(); EventStopA(0); EventStartA(1); BSP_LED2_TOGGLE(); EventStopA(1); EventStartA(2); BSP_LED3_TOGGLE(); EventStopA(2); t0++; EventStartAv(3, t0, t0); BSP_LED4_TOGGLE(); EventStopAv(3, t0, t0); t1 += 1; t2 += 2; EventRecord2(1 + EventLevelAPI, t1, t2); 04 API接口函数 时间测量功能简单易用,仅需一个起始函数,一个停止函数即可。当前支持4组,每组支持16路测量,也就是可以同时测量64路。 时间测量的API函数支持多任务和中断里面随意调用,测量起始函数:EventStartG(slot) 或者EventStartGv (slot, val1, val2),函数中的字母G是表示分组A,B,C,D,即实际调用函数为EventStartA,EventStartB,EventStartC和EventStartD,函数的第一个形参slot的范围是0-15,也就是每个分组可以测试16路,函数后面的两个形象val1和val2是32位变量,用户可以用这两个形参来传递变量数值给Event Statistics调试组件里面,方便图形化展示。简单的说,这两个变量仅仅起到一个传递变量数值的作用。 测量停止函数:EventStopG(slot) 或者EventStopGv (slot, val1, val2),函数中的字母G是表示分组A,B,C,D,即实际调用函数为EventStopA,EventStopB,EventStopC和EventStopD,函数的第一个形参slot的范围是0-15,也就是每个分组可以测试16路,函数后面的两个形象val1和val2是32位变量,用户可以用这两个形参来传递变量数值给Event Statistics调试组件里面,方便图形化展示。简单的说,这两个变量仅仅起到一个传递变量数值的作用。 到此程序的配置已经完成。 J-Link配置说明 在Option->Debug选项卡中选择J-Link作为MCU的调试工具,并选择SWD模式。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
2210个成员聚集在这个小组
加入小组灵动微电子MM32全系列MCU产品应用手册,库函数和例程和选型表
10816 浏览 3 评论
【MM32 eMiniBoard试用连载】+基于OLED12864的GUI---U8G2
5701 浏览 1 评论
【MM32 eMiniBoard试用连载】移植RT-Thread至MM32L373PS
10541 浏览 0 评论
【MM32 eMiniBoard测评报告】+ 开箱 + 初探
4397 浏览 1 评论
灵动微课堂(第106讲) | MM32 USB功能学习笔记 —— WinUSB设备
4097 浏览 1 评论
[MM32软件] MM32F002使用内部flash存储数据怎么操作?
631浏览 1评论
551浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-4 10:22 , Processed in 0.502948 second(s), Total 61, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号