разница между системными часами и вспомогательными часами

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

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

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

4

Решение

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

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

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

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

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

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

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

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

5

Другие решения

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

Пример: Программирование прерываний: пример для MVME 162 с использованием VxWorks.

0

По вопросам рекламы [email protected]