目录
一、Event Recoder在嵌入式开领域的发展
Event Recorder 是 MDK 在 5.22 版本增加并在 5.25 版本后进一步完善的功能,是一种在嵌入式开发领域中非常实用的调试和分析工具。
二、简介
工作原理
通过在代码中调用 Event API 来记录软件运行的标志信息,这些信息被存储在内存中的特定缓冲区内,MDK 通过访问该缓冲区实现消息的图形化展示。
特点优势:
- 支持 printf 重定向,无需占用芯片的外设资源,与传统的串口 printf 调试相比,获取数据的速度与 CPU 主频一样快,可在特定窗口中以图形化的形式显示信息,能清晰展示软件组件或用户代码的运行情况。
- 支持在任务中、RTOS 内核中和中断服务程序中任意调用。
- 对于带 ITM 功能的 Cortex-M3/M4/M7/M33 内核芯片,执行记录期间,全程无需开关中断操作,对于不带 ITM 功能的 Cortex-M0/M0+/M23,是需要开关中断的。
- Event Recorder 执行时间具有时间确定性,即执行的时间是确定的,而且执行速度超快,因此,实 际产品中的代码依然可以带有这部分,无需创建 debug 和 release 两种版本。
三、应用
3.1调试与故障诊断
3.1.1替代串口调试
串口 printf 调试存在占用芯片外设资源、速度受串口限制以及在中断应用中调试受限等问题,而 Event Recorder 可直接获取芯片内存的数据,速度快且无需占用额外硬件资源,是替代串口调试的绝佳方式。
3.1.2系统运行状态监测
实时记录系统初始化、任务调度、中断发生、函数调用等各种事件,开发人员可通过查看记录了解系统运行流程和状态变化,及时发现潜在问题和异常,如系统死机、任务卡顿、资源冲突等。
3.1.3中间件及操作系统调试
支持对 Keil RTX 操作系统以及 MDK 自带的中间件,如文件系统、USB 组件、网络组件、图形界面等的调试,清楚地记录它们的执行情况,帮助开发人员快速定位和解决中间件及操作系统层面的问题。
RTX中使用Event Recoder:
3.2性能分析与优化
3.2.1代码执行时间测量
可以精确测量代码中不同部分的执行时间,帮助开发人员找出耗时较长的代码段,进而进行优化。例如,通过测量任务切换时间、中断处理时间、关键算法的执行时间等,发现性能瓶颈,采取措施提高系统的实时性和响应速度。
3.2.2资源使用情况分析
通过记录事件的发生频率和时间分布,分析系统资源的使用情况,如 CPU 使用率、内存占用情况等。开发人员可以根据这些信息,合理调整任务的优先级、优化内存分配策略,提高系统资源的利用率,避免资源浪费和系统性能下降。
3.3系统验证与测试
3.3.1功能验证
在嵌入式系统的功能测试阶段,Event Recorder 可以记录系统在各种操作和输入情况下的响应事件,帮助测试人员验证系统是否按照预期的功能要求运行。通过对比实际记录的事件与预期的事件序列,及时发现功能实现中的错误和缺陷。
3.3.2稳定性测试
在长时间的稳定性测试过程中,持续记录系统的运行事件,观察是否存在异常事件的积累或潜在的稳定性问题。例如,是否有内存泄漏、任务死锁、资源竞争等问题在长时间运行后逐渐暴露出来,以便及时进行修复和优化,提高系统的稳定性和可靠性。
3.4低功耗优化
3.4.1功耗分析
结合硬件平台提供的功耗测量功能,Event Recorder 可以记录系统在不同工作模式和任务执行过程中的功耗变化情况。开发人员可以通过分析这些数据,找出功耗较高的操作和时间段,进而采取优化措施,如调整任务调度策略、降低不必要的外设活动等,以降低系统的整体功耗。
3.4.2节能策略验证
在实现低功耗设计的过程中,通过 Event Recorder 记录系统在不同节能策略下的运行事件和功耗情况,验证节能策略的有效性。例如,记录系统在进入睡眠模式、唤醒过程以及不同频率切换时的事件和功耗,评估节能策略对系统功能和性能的影响,进行针对性的调整和优化。
四、结束语
接下来在Keil中实现时间记录、Printf重定向以及时间测量功能。
标签:Recoder,记录,功耗,系统,嵌入式,3.1,Event,调试 From: https://blog.csdn.net/FCZlll/article/details/144752372