Tool/software: Linux
Hi,
we find an issue when we call timer functions in our application, below are the steps we can reproduce it:
SDK: ti-processor-sdk-linux-rt-am335x-evm-04.02.00.09 pre-build images
Hardware: Am335x ICE Board Rev 2.1A
1, copy a timer example code timer.c to board
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <time.h> #include <unistd.h> #include <string.h> void timerCallback(union sigval sig_value) { void *pData = sig_value.sival_ptr; printf("Pointer = %p\n", pData); fflush(stdout); } /* * */ int main(int argc, char** argv) { timer_t timerid = 0; struct sigevent sigevent; struct itimerspec timerspec; int err = 0; memset(&sigevent, 0, sizeof(sigevent)); memset(&timerspec, 0, sizeof(timerspec)); sigevent.sigev_notify = SIGEV_THREAD; sigevent.sigev_notify_function = timerCallback; sigevent.sigev_value.sival_ptr = (void*) 0x1234; err = timer_create(CLOCK_MONOTONIC, &sigevent, &timerid); if(err != 0) { perror("Timer create failed"); return EXIT_FAILURE; } timerspec.it_value.tv_sec = 2; timerspec.it_interval.tv_sec = 2; err = timer_settime(timerid, 0, &timerspec, NULL); if(err != 0) { perror("Timer settime failed"); return EXIT_FAILURE; } for(;;) { sleep(10); } return EXIT_SUCCESS; }
2, compiled it in board:
gcc timer.c -o timertest -lrt
3, run the application:
root@am335x-evm:~# ./timertest
Pointer = 0x1234
the application only output "Pointer = 0x1234" once.
4, I test this code in my ubuntu host and it keeps printing "Pointer = 0x1234" every 2 seconds.
VirtualBox:~/tmp$ ./timertest
Pointer = 0x1234
Pointer = 0x1234
Pointer = 0x1234
Pointer = 0x1234
^C
I am not sure if it is related to driver or any application library.
could anybody give me any advice?
Best regards
Dylan