在Vxworks中,我们有各种时钟,如系统时钟和辅助时钟,并具有各种API,如下所示
我的问题是系统时钟和辅助时钟有什么区别。程序员应该在什么情况下使用什么?
答案 0 :(得分:5)
系统时钟构成了VxWorks如何跟踪时间和超时的基础。
支持超时(信号量,消息队列,事件)以及taskDelay调用的大多数OS对象都以时钟周期为单位,基于系统时钟。
一般来说,系统时钟速率由电路板设计人员选择是有原因的。
提高时钟速度会略微增加系统开销,因为在每个系统时钟滴答期间,操作系统需要为各种超时元素,时间片计数器和其他内部资源提供服务。
如果您需要以高速(2000 - 8000 Hz)执行任务,则可以使用辅助时钟。 auxClock API是中断服务程序的简化接口。每当时钟到期时,将从辅助时钟ISR调用sysAuxClockConnect指定的例程。
在ISR服务时间内,辅助时钟没有系统开销。
当然,您需要第二个硬件时钟才能使用auxClock。 此外,像spy这样的一些vxWorks组件也使用了auxClock。如果您有这样的组件,则可能无法使用它,因为存在冲突。
请注意,如果您的硬件平台上有两个以上的定时器,您可以编写自己的例程,基本上执行与aux Clock API相同的操作。
答案 1 :(得分:0)
辅助时钟(当由硬件支持时)可以例如用于高速轮询。它的时钟速率可以由sysAuxClkRateSet()
设置,以偏离系统时钟中断周期。
示例:Programming Interrupts: Example for MVME 162 Using VxWorks。