|
2芯积分
使用windows环境下的DS-5调试基于SOC-FPGA中ARM核的linux应用程序。程序使用signal 注册SIGALRM信号捕捉函数,使用setitimer函数设定一定时器,每10s发生一次SIGALRM信号。在debug状态下 run,时间到了,SIGALRM信号也发送出来了,但是DS-5自动退出run状态,不执行SIGALRM信号捕捉函数。我在linux环境下使用命令调试不会出现“不执行SIGALRM信号捕捉函数”的问题,一切都OK。
请帮忙找找问题。
捕捉函数
void prog_1ms_timer_handle(int signal)
{
printf(" signal prog_1ms_timer_handle \n");
switch(signal)
{
case SIGALRM :
{
printf("time get ! \n");
// data timer of program port
}break;
default : break;
}//end switch
}
// 1ms timer for this process, sys special timer-us
if(signal(SIGALRM, prog_1ms_timer_handle)!=0)
{
perror(" signal error");
}
//time will action 1us later as soon as set
new_timer.it_value.tv_sec = 10;
new_timer.it_value.tv_usec = 0;
//timer will send signal every 1ms as soon as set
new_timer.it_interval.tv_sec = 10;
new_timer.it_interval.tv_usec = 1000;
// set timer
if(setitimer(ITIMER_REAL, &new_timer, NULL)!=0)
{
perror("ITIMER_REAL error");
}
|
|