linux用户空间的延时函数分析
在用户空间实现one wire总线,我需要精确到us的延时,可惜usleep函数不给力,我得自己摸索其他方法。
环境:ep9302,arm9,主频200MHz。
试验一:
void inline tickDelay(int tick)
{
struct timeval tv, tv2;
gettimeofday(&tv, NULL);
gettimeofday(&tv2, NULL);
printf("time1: %ld, %ld.\n", tv2.tv_sec - tv.tv_sec, tv2.tv_usec - tv.tv_usec);
gettimeofday(&tv, NULL);
usleep(5);
gettimeofday(&tv2, NULL);
printf("time2: %ld, %ld.\n", tv2.tv_sec - tv.tv_sec, tv2.tv_usec - tv.tv_usec);
}
多次运行结果:
time1: 0, 6.
time2: 0, 19762.
time1: 0, 6.
time2: 0, 19760.
time1: 0, 8.
time2: 0, 19740.
time1: 0, 6.
time2: 0, 19868.
time1: 0, 6.
time2: 0, 19577.
time1: 0, 8.
time2: 0, 19734.
time1: 0, 4.
time2: 0, 19760.
time1: 0, 6.
time2: 0, 19758.
time2: 0, 19762.
time1: 0, 6.
time2: 0, 19760.
time1: 0, 8.
time2: 0, 19740.
time1: 0, 6.
time2: 0, 19868.
time1: 0, 6.
time2: 0, 19577.
time1: 0, 8.
time2: 0, 19734.
time1: 0, 4.
time2: 0, 19760.
time1: 0, 6.
time2: 0, 19758.