在嵌入式软件开发过程中,有时候由于产品对实时性要求比较高,此时如果程序运行比较慢的话,那我们可能就要通过一些调试手段对一些程序代码的执行时间进行分析和查看,以确定导致程序运行慢的代码位置。 在使用Keil进行仿真调试时,就有一种比较快捷的方法可以用来实时查看程序,代码,甚至是一条语句的执行时间。详细的操作方法即将揭晓。 1、配置追踪时钟 需要配置追踪时钟为内核时钟,才能保证时间的准确性。 2、打开时间显示窗口
进入仿真后,如果没有打开时间显示窗口,则需要打开: 也可以通过点击按钮打开: 3、查看一段程序的执行时间
可以在程序开始位置和程序结束位置分别设置一个断点, 单步执行两次程序,分别记录两次时间: 时间差=0.14446595-0.14407144=0.00039451s=394.51 us即为程序段执行时间。 4、查看一个函数的执行时间
在需要查看的函数调用位置设置一个断点,然后运行一次程序,记录当前时间: 然后操作单步执行一次,记录第二次时间: 时间差=0.14414995-0.14407178=0.00007817s=78.17 us即为函数bsp_init的执行时间。 5、查看语句的执行时间 如果需要查看一条或者多条语句的执行时间,比如一条for循环语句,一条memcpy操作或者一条排序操作等的执行时间等,其方法与前文描述基本一样,即通过断点操作实现。 补充: 如果你想进一步确认这种时间记录的准确度,可以在需要查看的代码前后通过翻转GPIO口电平并使用示波器测试GPIO电平保持时间的方式来验证,方法如下: 设置GPIO口输出低电平; 设置GPIO口输出高电平; { 示例代码; } 设置GPIO口输出低电平; 运行程序后,通过示波器抓取GPIO口的波形后,GPIO口高电平的持续时间即为示例代码的执行时间。
由于这种方法需要从PCB引线出来,且需要使用示波器,稍微有些麻烦,因此对嵌入式软件开发来说,可以作为一种辅助方法来用。
|