使用 TI TM4C129X Cortex-M4 板测量周期

问题描述

我正在使用 Texas Instruments 的 TM4C129X 板,我想运行和分析 C 代码。到目前为止,我还没有找到一个简单的例子来说明如何做到这一点。

我尝试使用一些示例项目,例如“Blinky”或“Hello World”,它在显示器上打印文本。但是,每次当我尝试在 main() 函数的一行中设置断点时,断点都会跳转到 main() 函数的末尾,即我无法真正计算指令之间的周期。

有人有关于如何正确计算周期的说明/教程吗? 我想从一些非常简单的代码开始,如下所示,计算循环的周期。

int main()
{
  int a = 0; int i = 0; counter = 100;
  for (i = 0; i < counter; i++)
  {
    a += i;
  }
  return 0;
}

我设置的每个断点都会跳转到 return 语句..

解决方法

首先提供的代码不会编译。努力解决您的问题,确保您发布的代码可以编译并提供(甚至是不稳定的)输出!

我设置的每个断点都会跳转到 return 语句..

您的程序已被编译器优化为简单返回。因此,如果您尝试在 main 函数中的某处设置断点,它会被设置为编译文件中唯一存在的语句 - return

示例:https://godbolt.org/z/sEvjWWsbW

我不建议将优化级别设置为 0,因为您想要分析您的代码,并且分析 -O0 生成的代码是没有意义的。

  1. 试试不那么简单的例子。
  2. 查看编译代码中的实际内容。请记住,程序流程可能与您的 C 代码不同,可以优化变量,并删除执行某些操作而没有明显影响的代码。