Abstract
本文介紹了使用timestamp時,編譯時出現undefined reference to `alt_timestamp等錯誤的解決方法,應該對初學者有些幫助。編譯環境NIOSII 11.0
Introduction
本人在做timestamp的練習時,明明加入了#include "sys/alt_timestamp.h" 這個頭文件,但是還是編譯出問題。如下圖:
程序代碼:
#include <stddef.h>
#include
<stdio.h>
#include <sys/alt_timestamp.h>
#include
<sys/alt_alarm.h>
#include <alt_types.h>
#include
<system.h>
int main (void)
{
alt_u32 time1;
alt_u32
time2;
alt_u32 time3;
alt_u32 i;
if (alt_timestamp_start() < 0)
{
printf ("No timestamp device available");
}
else
{
time1
= alt_timestamp();
i=0;
while(i<2000)
i++;
time2 =
alt_timestamp();
i=0;
while(i<50000)
i++;
time3 =
alt_timestamp();
printf ("time in func1 = %d ticks\n",(
int)(time2-time1));
printf ("time in func2 = %d
ticks\n",(int)(time3-time2));
printf ("Number of ticks per second =
%u\n",(unsigned int) alt_timestamp_freq());
}
return 0;
}
實際上HAL只有在你為timestamp timer指定了物理設備后才會定義alt_timestamp等函數。
所以需要在BSP editor中設置,為timestamp timer指定物理設備,就是你在SOPC builder中添加的timer。
右擊工程-->NIOS-->BSP Editor,然后選擇timestamp的timer,本人此例子中在SOPC中定義的是timer0
如圖:
Conclusion
NiosII 的timestamp是計算函數時間的很好的工具,呵呵,不過先要在BSP中設置好,NISO9.0和之前的版本在system library properties中設置。