В Vxworks у нас есть различные часы, такие как системные часы и вспомогательные часы, а также различные API, как показано ниже
У меня вопрос, в чем разница между системными часами и вспомогательными часами. Когда программист должен использовать что и по каким сценариям?
Системные часы составляют основу того, как VxWorks отслеживает время и время ожидания.
Большинство объектов ОС, поддерживающих тайм-ауты (семафоры, очереди сообщений, события), а также вызов taskDelay в единицах тактов, основанных на системных часах.
Вообще говоря, системная тактовая частота выбирается разработчиком платы не без причины.
Повышение тактовой частоты немного увеличивает нагрузку на систему, поскольку во время каждого такта системных часов ОС должна обслуживать различные элементы тайм-аута, счетчики временных интервалов и другие внутренние компоненты.
Если вам нужно выполнить задачу с высокой скоростью (2000 — 8000 Гц), вы можете использовать вспомогательные часы. API auxClock — это упрощенный интерфейс для процедуры обработки прерываний. Всякий раз, когда истекает время часов, процедура, указанная sysAuxClockConnect, будет вызываться из вспомогательного ISR часов.
Системные издержки, связанные с дополнительными часами, не влияют на время обслуживания ISR.
Конечно, вам нужны вторые аппаратные часы, чтобы использовать auxClock.
Кроме того, некоторые компоненты vxWorks, такие как spy, используют auxClock. Если у вас есть такой компонент, вы не сможете его использовать, поскольку существует конфликт.
Обратите внимание, что если у вас более 2 таймеров на аппаратной платформе, вы можете написать свои собственные подпрограммы, чтобы сделать то же самое, что и API Aux Clock.
Вспомогательные часы (если они поддерживаются аппаратными средствами) могут, например, использоваться для высокоскоростного опроса. Это тактовая частота может быть установлена sysAuxClkRateSet()
отклоняться от периода прерывания системных часов.
Пример: Программирование прерываний: пример для MVME 162 с использованием VxWorks.