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

相关推荐
玩转单片机与嵌入式14 分钟前
不会 Python、不会深度学习,也能在STM32上跑AI模型吗?
人工智能·单片机·嵌入式硬件·嵌入式ai
jghhh011 小时前
基于STM32的桌面Mini时钟设计
stm32·单片机·嵌入式硬件
电化学仪器白超2 小时前
小乌龟Git全程图形化操作指南:嵌入式本地版本管理与Gitee私有云备份实战
git·python·单片机·嵌入式硬件·物联网·gitee·自动化
yong99904 小时前
基于STM32 Nucleo板的彩色LED照明灯设计(纯CubeMX开发)
stm32·单片机·嵌入式硬件
lingzhilab4 小时前
零知派——STM32驱动INA219电流功率监测计实现高精度电源管理
stm32·单片机·嵌入式硬件
ahccqw8 小时前
CAN总线通信入门及实例代码(stm32f4系列)
stm32·单片机·嵌入式硬件
振南的单片机世界9 小时前
电源、复位、时钟:单片机的“生存三要素”
单片机·嵌入式硬件
charlie11451419110 小时前
嵌入式现代C++工程实践——第14篇:第二次重构 —— 模板登场,编译时绑定端口和引脚
开发语言·c++·stm32·安全·重构
SUNNYSPY00111 小时前
16N65-ASEMI重塑功率电子新标杆16N65
单片机
MC皮蛋侠客11 小时前
Modbus Poll 使用文档
物联网·modbus·调试