在Vxworks中,我们有各种时钟,如系统时钟和辅助时钟,还有如下所示的各种API
我的问题是系统时钟和辅助时钟之间有什么区别。什么时候程序员应该使用什么和在什么情况下?
发布于 2013-08-20 14:00:35
系统时钟是VxWorks跟踪时间和超时的基础。
大多数支持超时的OS对象(信号量、消息队列、事件)以及taskDelay调用都是以时钟为单位的,这是基于系统时钟的。
一般来说,系统时钟速率是由董事会设计人员选择的,这是有原因的。
加快时钟速度会稍微增加系统开销,因为在每个系统时钟滴答声中,操作系统需要服务各种超时元素、时间片计数器和其他内部设备。
如果您需要以较高的速度(2000-8000 Hz)执行任务,则可以使用辅助时钟。auxClock API是中断服务例程的简化接口。每当时钟过期时,sysAuxClockConnect指定的例程将从辅助时钟ISR调用。
超过ISR服务时间的辅助时钟没有与系统开销相关联。
当然,为了使用auxClock,您确实需要第二个硬件时钟。另外,一些vxWorks组件(如间谍)也使用auxClock。如果您有这样一个组件,您可能无法使用它,因为有冲突。
注意,如果您的硬件平台上有两个以上的定时器,您可以编写自己的例程来完成与辅助时钟API所做的本质相同的事情。
发布于 2013-08-20 09:54:58
例如,辅助时钟(在硬件支持下)可用于高速轮询。它的时钟速率可以由sysAuxClkRateSet()
设定,以偏离系统时钟中断周期。
https://stackoverflow.com/questions/18331658
复制相似问题