ZKhan1
Occasional Contributor
7 years agoNios-ll Interval Timer is not enabled
Hi there ,
I have been trying to run Nios-ll interval timer using the code given in Embedded IP core document the code gets stuck at ""No timestamp device available\n".
I did included Interval Timer for both sys clk timer and time stamp timer in BSP Editor . But it dosent have any effect .
see below timer declaration in system.h
/*
* Interval_Timer configuration
*
*/
#define ALT_MODULE_CLASS_Interval_Timer altera_avalon_timer
#define INTERVAL_TIMER_ALWAYS_RUN 0
#define INTERVAL_TIMER_BASE 0x10002000
#define INTERVAL_TIMER_COUNTER_SIZE 32
#define INTERVAL_TIMER_FIXED_PERIOD 0
#define INTERVAL_TIMER_FREQ 50000000
#define INTERVAL_TIMER_IRQ 0
#define INTERVAL_TIMER_IRQ_INTERRUPT_CONTROLLER_ID 0
#define INTERVAL_TIMER_LOAD_VALUE 6249999
#define INTERVAL_TIMER_MULT 0.001
#define INTERVAL_TIMER_NAME "/dev/Interval_Timer"
#define INTERVAL_TIMER_PERIOD 125.0
#define INTERVAL_TIMER_PERIOD_UNITS "ms"
#define INTERVAL_TIMER_RESET_OUTPUT 0
#define INTERVAL_TIMER_SNAPSHOT 1
#define INTERVAL_TIMER_SPAN 32
#define INTERVAL_TIMER_TICKS_PER_SEC 8
#define INTERVAL_TIMER_TIMEOUT_PULSE_OUTPUT 0
#define INTERVAL_TIMER_TYPE "altera_avalon_timer"also HAL
/*
* hal configuration
*
*/
#define ALT_INCLUDE_INSTRUCTION_RELATED_EXCEPTION_API
#define ALT_MAX_FD 32
#define ALT_SYS_CLK INTERVAL_TIMER
#define ALT_TIMESTAMP_CLK INTERVAL_TIMERsee below C code i have been trying to run :
#include <stdio.h>
#include "E:\FPGA_VGA\NIOS_Basic_Comp_timer\verilog\software\Timer_interval_bsp\HAL\inc\sys\alt_timestamp.h"
#include "E:\FPGA_VGA\NIOS_Basic_Comp_timer\verilog\software\Timer_interval_bsp\drivers\inc\altera_avalon_timer.h"
#include "E:\FPGA_VGA\NIOS_Basic_Comp_timer\verilog\software\Timer_interval_bsp\drivers\inc\altera_avalon_timer_regs.h"
#include "alt_types.h"
#include "system.h"
int main()
{
alt_u32 time1;
alt_u32 time2;
alt_u32 time3;
alt_u32 TimerStatus;
alt_u32 *Timerptr = INTERVAL_TIMER_BASE;
unsigned short TimerStatusreg;
unsigned short TimerCtrlreg;
unsigned short TimerPrdLreg = 0x0001;
unsigned short TimerPrdHreg = 0x00ff;
unsigned short TimerStop = 0x0008;
unsigned short TimerSnapLreg;
unsigned short TimerSnapHreg;
/////////////
TimerStatusreg = *Timerptr;
TimerCtrlreg = *Timerptr + 0x4;
*(Timerptr + 0x4) = TimerStop;
*(Timerptr + 0x8) = TimerPrdLreg;
*(Timerptr + 0xC) = TimerPrdHreg;
TimerCtrlreg = *Timerptr + 0x4;
TimerSnapLreg = *Timerptr + 0x10;
TimerSnapHreg = *Timerptr + 0x14;
if (alt_timestamp_start() < 0)
{
printf ("No timestamp device available\n");
}
else
{
time1 = alt_timestamp();
func1(); /* first function to monitor */
time2 = alt_timestamp();
func2(); /* second function to monitor */
time3 = alt_timestamp();
printf ("time in func1 = %u ticks\n",(unsigned int) (time2 - time1));
printf ("time in func2 = %u ticks\n",(unsigned int) (time3 - time2));
printf ("Number of ticks per second = %u\n",(unsigned int)alt_timestamp_freq());
}
return 0;
}
///////////////////
void func1(void)
{
printf (" Calling Function 1 ....");
}
/////////
void func2(void)
{
printf (" Calling Function 2 ....");
}