簡體   English   中英

調試時的時間()正常(JTAG),在片上運行時不正常。 如何使用嵌入式proc?

[英]time() ok when debugging (JTAG), not-ok when running on-chip. How to time with an embedded proc?

我正在“玩”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)時,顯示是正確的(~4s)。 但是當我在片上運行程序(獨立)時,顯示不正確(~637488s),無論延遲是什么!

所以為什么? 我認為時間couting取決於系統...如何在嵌入式處理器上計時(基准程序)?

您正在使用的時鍾頻率是多少?。您啟用了任何中斷嗎?如果是這樣,那么您的程序可能會被中斷並經常跳轉到ISR,從而增加了循環的時間。我沒有權利發表評論。 如果你想讓周期更好,可以使用內置計時器。

根據ARM關於ARM Cortex處理器的Dhrystone基准測試的PDF:

大多數現代ARM處理器包括性能計數器 它們可以編程為計算處理器周期數,可用於精確計算經過的時間。 必須重新定位clock()函數才能使用此功能。 [...]如果沒有性能計數器和重定向的clock()函數,則使用標准C庫中的半主機clock()函數。 必須連接能夠支持半主機的調試器,例如ARM RealView Debugger(RVD)或DS-5 Debugger。

那么,我認為clock()不會在片上運行。 我將使用硬件定時器。 你覺得怎么樣? 我可以在芯片上使用clock()嗎? 為什么它會返回如此奇怪的持續時間(63488等)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM