我使用的是实时操作系统Ecos。我在ubuntu上运行以下代码:
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
static int tv_diff(struct timeval *t1, struct timeval *t2)
{
return
(t1->tv_sec - t2->tv_sec) * 1000 +
(t1->tv_usec - t2->tv_usec) / 1000;
}
int main(void)
{
struct timespec ts;
struct timeval tv1, tv2;
printf("Hello, eCos !\n");
clock_gettime(1, &ts);
tv1.tv_sec = ts.tv_sec;
tv1.tv_usec = ts.tv_nsec / 1000;
printf("Time: %ld \n", tv1.tv_sec);
sleep(10);
clock_gettime(1, &ts);
tv2.tv_sec = ts.tv_sec;
tv2.tv_usec = ts.tv_nsec / 1000;
printf("Time: %ld \n", tv2.tv_sec);
printf("diff Time: %d \n", tv_diff(&tv2, &tv1));
return 0;
}它工作正常:
root@ubuntu:/home/feres/Bureau# ./amin
Hello, eCos !
Time: 45417
Time: 45427
diff Time: 10000但是,当我在ecos上运行它(它在qemu上工作)时,它会给出以下结果
Hello, eCos !
Time: 0
Time: 0
diff Time: 0 在ecos (或qemu)上是否缺少任何软件包,或者是否有任何特定的命令来获取ecos (或qemu)上的时间
发布于 2017-10-12 17:11:01
看起来您的ECOS-HAL设置不正确(因此系统计时会定期更新)。
https://stackoverflow.com/questions/43696392
复制相似问题