系统时钟和辅助时钟之间的差异

ven*_*rty 4 c++ timer vxworks

在Vxworks中,我们有各种时钟,如系统时钟和辅助时钟,并具有各种API,如下所示

  • sysClkConnect() - 将例程连接到系统时钟中断
  • sysClkDisable() - 关闭系统时钟中断
  • sysClkEnable() - 打开系统时钟中断
  • sysClkRateGet() - 获取系统时钟频率
  • sysClkRateSet() - 设置系统时钟速率
  • sysAuxClkConnect() - 将例程连接到辅助时钟中断
  • sysAuxClkDisable() - 关闭辅助时钟中断
  • sysAuxClkEnable() - 打开辅助时钟中断
  • sysAuxClkRateGet() - 获取辅助时钟频率
  • sysAuxClkRateSet() - 设置辅助时钟速率

我的问题是系统时钟和辅助时钟之间有什么区别.当程序员应该使用什么和在什么情况下?

Ben*_*oit 5

系统时钟构成了VxWorks如何跟踪时间和超时的基础.

支持超时(信号量,消息队列,事件)以及taskDelay调用的大多数OS对象都以时钟周期为单位,这基于系统时钟.

一般而言,系统时钟速率由电路板设计者选择是有原因的.

启动时钟速度会略微增加系统开销,因为在每个系统时钟周期内,操作系统需要为各种超时元素,时间片计数器和其他内部资源提供服务.

如果需要以高速(2000 - 8000 Hz)执行任务,则可以使用辅助时钟.auxClock API是中断服务程序的简化接口.每当时钟到期时,将从辅助时钟ISR调用sysAuxClockConnect指定的例程.

在ISR服务时间内,辅助时钟没有系统开销.

当然,您需要第二个硬件时钟才能使用auxClock.此外,像spy这样的一些vxWorks组件也使用了auxClock.如果您有这样的组件,则可能无法使用它,因为存在冲突.

请注意,如果您的硬件平台上有两个以上的定时器,您可以编写自己的例程,基本上执行与aux Clock API相同的操作.