【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 版权协议,转载请附上原文出处链接和本声明。

相关推荐
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Lester_11014 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元4 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133974 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315204 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
古译汉书4 天前
【IoT死磕系列】Day 7:只传8字节怎么控机械臂?学习工业控制 CANopen 的“对象字典”(附企业级源码)
数据结构·stm32·物联网·http
TDengine (老段)4 天前
TDengine IDMP 数据可视化——散点图
大数据·数据库·物联网·信息可视化·时序数据库·tdengine·涛思数据
Lupino4 天前
从逻辑“脑裂”到 AI 重构:不到 2 美金解决物联网电位反转难题
python·物联网
Alaso_shuang4 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
脚后跟4 天前
AI助力嵌入式物联网项目全栈开发
嵌入式硬件·物联网·ai编程