首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Vxworks中获取系统时间

在Vxworks中获取系统时间
EN

Stack Overflow用户
提问于 2014-03-25 05:58:59
回答 2查看 2.2K关注 0票数 1

除了tickGet()和tickAnnounce之外,还有其他方法可以在VxWorks中获取系统时间吗?我想测量指定任务的任务切换之间的时间,但我认为tickGet()的精度不够高,因为在taskSwitchHookAdd函数的开头和结尾的两个tickGet()值总是相同的!

EN

回答 2

Stack Overflow用户

发布于 2014-08-29 07:38:15

如果你想尝试和计时任务切换,我假设你需要一个至少在微秒(us)级别的计时器。

通常,这种细粒度的计时器/时钟只由您运行的平台提供。如果您使用的是嵌入式系统,可以尝试通读主板支持包的手册(如果有),查看是否提供了访问主板上各种定时器的功能。

一种更低级的解决方案是找出在系统上运行的处理器,然后编写一些简单的汇编代码来轮询处理器的内部时基寄存器(TBR)。这可能需要对您正在运行的处理器进行一些研究,但可以很容易地完成。

如果您在基于PPC的处理器上运行,则可以使用以下代码读取TBR:

代码语言:javascript
复制
loop: mftbu rx #load most significant half from TBU
mftbl ry #load least significant half from TBL
mftbu rz #load from TBU again
cmpw rz,rx #see if 'old' = 'new'
bne loop #repeat if two values read from TBU are unequal

在基于x86的处理器上,可以考虑使用RDTSC汇编指令读取时间戳计数器(TSC)。在vxWorks上,pentiumALib有一些库函数(pentiumTscGet64()pentiumTscGet32()),它们可以使使用C更容易地读取TSC。

来源:http://www-inteng.fnal.gov/Integrated_Eng/GoodwinDocs/pdf/Sys%20docs/PowerPC/PowerPC%20Elapsed%20Time.pdf

祝好运!

票数 3
EN

Stack Overflow用户

发布于 2014-03-25 06:58:04

这取决于您所在的平台,但如果它是x86,那么您可以使用:

代码语言:javascript
复制
pentiumTscGet64();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22621492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档