JNH官网

【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功能,有两种方式:

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

图4-1-1


(2)、使用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

jnh官网 jnh官网 jnh官网 jnh官网 金年会 金年会 金年会 金年会