Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在eCos操作系统中以微秒精度获取当前系统时间?_C_Operating System_Real Time_Embedded Linux_Ecos - Fatal编程技术网

如何在eCos操作系统中以微秒精度获取当前系统时间?

如何在eCos操作系统中以微秒精度获取当前系统时间?,c,operating-system,real-time,embedded-linux,ecos,C,Operating System,Real Time,Embedded Linux,Ecos,我知道默认的eCos精度是1 ticks=10 ms eCos操作系统提供cyg_current_time() 我可以使用cyg_current_time除以tick_per_one_ms得到系统时间 (例如,GetSystemTime=cyg\u current\u time()/10 我怎样才能用我们的精度得到系统时间 我想为我们计算一个时间间隔的精度 例如(想知道一个()需要花费多少时间): 我试过很多方法,但都不管用 gettimeofday:它是eCos实现的,但仍然是ms精度 得到

我知道默认的eCos精度是
1 ticks=10 ms

eCos操作系统提供
cyg_current_time()

我可以使用cyg_current_time除以tick_per_one_ms得到系统时间

(例如,
GetSystemTime=cyg\u current\u time()/10

我怎样才能用我们的精度得到系统时间

我想为我们计算一个时间间隔的精度

例如(想知道一个()需要花费多少时间):
我试过很多方法,但都不管用

  • gettimeofday:它是eCos实现的,但仍然是ms精度
  • 得到滴答声:但是1滴答声是10毫秒。这意味着上下文切换时间为毫秒精度
  • 计时器、时钟等

  • 我的意思是,我想实现一个具有us精度的获取当前系统时间功能。

    您能跳过eCos,直接在您的硬件中使用计时器吗?恐怕我不能这样做。我直接尝试了定时器,结果很好。但计时器需要保留以用于其他任务。因此,我不能使用它。如果您想对a()进行性能度量,并且a()每次调用所需的时间大致相同,那么您可以调用a()1000次并度量完整时间。但我发现这个解决方案只适用于特定情况。2个问题:您是否使用不同的clk\U ID尝试了clock\u gettime()?您的硬件计时器是否可能没有更好的精度,因此功能无法获得更好的结果?(您可以通过clock_getres()获得精度,据我所知,您无法从内核获得更好的值)我如何使用clock_gettime()实现getSystemTime_我们?我不知道[时钟时间]的换算公式
    startTime = GetSystemTimeUS();
    A();
    endTime = GetSystemTimeUS();
    
    printf("A() cost %lu us.",endTime - startTime);