2013-08-20 7 views
4

В VxWorks у нас есть различные часы как часы системы и вспомогательные часов и имеет различный API, в соответствии, как показано нижеразницы между системными часами и вспомогательными часами

  • sysClkConnect() - подключение рутины с системными часами прерыванием
  • sysClkDisable() - отключить системные часы прерывает
  • sysClkEnable() - включение системного тактового сигнала прерывания
  • sysClkRateGet() - получить скорость системных часов
  • sysClkRateSet() - установить частоту системной синхронизации
  • sysAuxClkConnect() - подключение рутины к вспомогательным часам прерывания
  • sysAuxClkDisable() - отключить вспомогательные часы прерывает
  • sysAuxClkEnable() - включение вспомогательных часов прерывает
  • sysAuxClkRateGet() - получить вспомогательную тактовую частоту
  • sysAuxClkRateSet() - установить вспомогательную частоту

Моего вопрос заключается в то, что разница между системными часами и добавочными часами. Когда программист должен использовать то, что и при каких сценариях?

ответ

5

Системные часы составляют основу того, как VxWorks отслеживает время и таймауты.

Большинство объектов ОС, поддерживающих тайм-ауты (семафоры, очереди сообщений, события), а также вызов задачиDelay, находятся в единицах тактовых импульсов, которые основаны на системных часах.

Вообще говоря, системная тактовая частота выбирается дизайнером платы по какой-либо причине.

Срабатывание тактовой частоты немного увеличивает системную нагрузку, так как во время каждого тактового сигнала системы ОС необходимо обслуживать различные тайм-ауты, счетчики времени и другие внутренние вещи.

Если вам необходимо выполнить задачу с высокой скоростью (2000 - 8000 Гц), вы можете использовать вспомогательные часы. AuxClock API - это упрощенный интерфейс к процедуре обслуживания прерываний. Всякий раз, когда часы истекают, подпрограмма, определяемая sysAuxClockConnect, вызывается из ISR aux clock.

Системные накладные расходы, связанные с дополнительными часами, не поддерживаются временем обслуживания ISR.

Конечно, для использования auxClock вам понадобятся 2 аппаратные часы. Кроме того, некоторые компоненты vxWorks, такие как шпион, используют auxClock. Если у вас есть такой компонент, вы, возможно, не сможете его использовать, так как есть конфликт.

Обратите внимание, что если на вашей аппаратной платформе установлено более 2 таймеров, вы можете написать свои собственные процедуры, чтобы по существу сделать то же самое, что и API-интерфейс Aux Clock.

0

Вспомогательные часы (при поддержке оборудования) могут использоваться, например, для высокоскоростного опроса. Такую частоту можно установить на sysAuxClkRateSet(), чтобы отклониться от периода прерывания тактового генератора системы.

Пример: Programming Interrupts: Example for MVME 162 Using VxWorks.