c - time() 在调试(JTAG)时可以,在片上运行时则不行。如何使用嵌入式进程计时?

标签 c time arm benchmarking processor

我正在“玩”rm48 板(Texas Instrument RM48L952、ARM CORTEX-R4F),并且我想对循环进行计时(例如)。

char message[20];
int temp=0;
time_t start, end, elapsed; 
sciInit();  

start = time(NULL);
  for(temp=0;temp<0xAAAAAAA;temp++);
end = time(NULL);
elapsed=end-start;
snprintf(message,20,"Duree = %f \r\n",(double)elapsed);
sciSend(scilinREG,20,(unsigned char *)message);

当我使用 JTAG 链接和 CodeComposerStudio(类似于 C 的 eclipse)运行程序时,显示是正确的(约 4 秒)。但是当我在片上运行程序(独立)时,显示不正确(〜637488s)并且无论延迟是多少都是相同的!

所以,为什么?我认为时间计算取决于系统...... 如何在嵌入式处理器上计时(基准程序)?

最佳答案

您使用的时钟频率是多少?您是否启用了任何中断?如果是这样,那么您的程序可能会被中断并经常跳转到 ISR,从而增加循环时间。抱歉,我没有有权发表评论。 另外,如果您想对周期进行计时,最好使用内置计时器。

关于c - time() 在调试(JTAG)时可以,在片上运行时则不行。如何使用嵌入式进程计时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870640/

相关文章:

c - MSP430 与 VisualGDB _system_pre_init

c - 在 C 中使用一维数组进行矩阵乘法

c - 从 gfortran 将 mxgetfield 添加到 mexinterface

ios - 在 iOS 设备上查找正确的时间

linux - 海合会 : error trying to exec 'cc1' when cross-compiling

linux - Linux 目标的相关调试数据

c - 如何知道系统正在使用哪个时区

c - 如何在 C 中实现时钟例程

php - 在 HH :MM format php 中获取时间差

没有malloc的C编程