Vx6+提供了一个组件INCLUDE_TIMER_SYS_SHOW
有了它,就可以使用vxbSysClkShow()查看系统时钟的基本属性,包括最大和最小Rate,以及Frequency
如果镜像中包含了辅助时钟,则可以使用vxbAuxClkShow()
如果镜像中包含了时间戳,则可以使用vxbTimestampShow()
VxWorks567的这个时间戳的Frequency为什么这么低呢?因为硬件平台是Intel的,而且OS运行在SMP模式下。这时候VxWorks默认使用的时钟源是HPET - Intel High Precision Event Timer
如果把OS运行模式换成UP,则时间戳默认就会使用TSC - Time Stamp Counter。当然了,Vx5就是这样的,因为那会还不支持SMP呢
TSC是奔腾兼容处理器中的一个计数器,记录处理器消耗的时钟周期数,即在CPU每个时钟到来时,该计数器自动加一。所以它的Frequency就是CPU的主频了
那能不能在SMP下使用TSC呢?有个风险: 多个CPU各自的TSC可能不同步。这样的话,就没法玩了,总不能指定每个任务的Affinity吧。
那是不是有些Intel处理器的多CPU的TSC是同步的呢?答案是YES!
https://community.intel.com/t5/Intel-ISA-Extensions/Invariant-TSC-support/td-p/772125
稍微高端一点的处理器已经支持这个Invariant TSC技术了!
所以,接下来就是要改造BSP了...