【Arm】MDK查看语句的执行累积时间和次数

1、 文档目标

在嵌入式开发过程中,调试阶段需要对代码运行效率进行分析,以便优化程序性能。本文档旨在指导开发者如何利用Keil MDK(Microcontroller Development Kit)中的Execution Profiler功能,在Debug模式下精确地查看工程中某条语句或某段代码的执行累积时间和执行次数。通过该工具,开发者可以快速定位性能瓶颈,避免传统方法(如串口打印或手动计数)带来的额外开销和复杂性。

2、 问题场景

在实际开发中,尤其是针对实时性要求较高的嵌入式系统,开发者常常需要了解某些关键条件判断语句或循环体的执行频率和耗时情况。例如:

● 某个条件分支是否被频繁触发?

● 某段代码的执行时间是否符合预期?

● 是否存在不必要的重复计算或冗余操作?

传统做法是通过插入调试信息(如串口打印)或增加全局变量进行手动统计,但这些方法往往会影响程序的实际运行效率,甚至引入新的错误。此外,手动统计的方式也难以提供准确的时间和频率数据。

为解决上述问题,Keil MDK提供了Execution Profiler功能。该功能允许开发者在Debug模式下直接获取代码的执行时间和调用次数,无需修改代码逻辑,从而大幅提高调试效率和准确性。

3、软硬件环境

1)、软件版本:MDK 5.38a

2)、电脑环境:Windows 11

3)、外设硬件:ULINK pro

4、解决方法

1)、想要使用Execution Profiler功能,有两种方式:

a、选择使用Simulator模式进入Debug模式,使用Execution Profiler功能。(如图4-1-1)

图4-1-1

b、使用ULINK pro仿真器,配置Trace功能,使用Execution Profiler功能。(关于如何配置Trace功能,请查看技术文档中的:Keil MDK Trace功能配置)。

2)、进入到Debug模式下后。找到Debug->Execution Profiling。根据需求选择Show Time(显示执行指令的累积时间)还是Show Calls(显示一条指令执行的频率)。(如图4-2)

图4-2

3)、选择好后,在代码编译窗口和汇编窗口就可以看见相关的信息。如图4-3中显示的就是对应语句的执行累积时间。当鼠标移动到对于数据上面还会直接显示出Time(语句执行的累计时间)、Calls(语句的执行次数)、Average(语句的平均执行时间)。

图4-3


​ 版权声明:本文为亿道电子技术有限公司原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

相关推荐
想放学的刺客7 小时前
单片机嵌入式试题(第25)嵌入式系统可靠性设计与外设驱动异常处理
stm32·单片机·嵌入式硬件·mcu·物联网
wotaifuzao7 小时前
STM32+FreeRTOS 长期可维护架构设计(事件驱动篇)-- 告别“屎山”代码
c语言·stm32·嵌入式硬件·freertos·状态机·事件驱动·嵌入式架构
淘晶驰AK7 小时前
大学如何自学嵌入式开发?
单片机·嵌入式硬件
一路往蓝-Anbo8 小时前
第 1 篇:对象池模式 (Object Pool) —— 裸机下的动态内存革命
jvm·数据库·stm32·单片机·嵌入式硬件·网络协议·tcp/ip
TDengine (老段)8 小时前
TDengine 脱敏函数用户手册
大数据·服务器·数据库·物联网·时序数据库·iot·tdengine
大神与小汪8 小时前
STM32WB55蓝牙广播数据
stm32·单片机·嵌入式硬件
启效云9 小时前
【技术赋能实战】焱蓝智益科技:如何用物联网+自组网打通消防应急通信“最后一公里”?
科技·物联网·低代码·软件开发·低代码开发
芯思路9 小时前
STM32开发学习笔记之七【LCD显示图片】
笔记·stm32·学习
honsor9 小时前
机房/档案室专用以太网温湿度传感器:智能监控赋能环境安全
运维·网络·物联网·安全
秋深枫叶红10 小时前
嵌入式第五十一篇——IMX6ULL中断和EPIT定时器
单片机·嵌入式硬件