exponenta event banner

Асинхронное прерывание

Создание подпрограмм прерывания (ISR) модуля Versa Eurocard (VME), выполняющих дочерние подсистемы или блоки синхронизации задач

  • Библиотека:
  • Simulink Coder/Асинхронные/Шаблоны прерываний

  • Async Interrupt block

Описание

Для каждого указанного уровня прерывания VME в примере RTOS (VxWorks ®) блок асинхронного прерывания генерирует подпрограмму обслуживания прерываний (ISR), которая вызывает одно из следующих действий :

  • Подсистема вызова функции

  • Блок синхронизации задач

  • Диаграмма Stateflow ®, настроенная для события ввода вызова функции

Примечание

Можно использовать блоки в vxlib1 (асинхронное прерывание и синхронизация задач) для моделирования и создания кода. Эти блоки содержат начальные примеры, помогающие разрабатывать пользовательские блоки для целевой среды.

Допущения и ограничения

  • Блок поддерживает прерывания VME с 1 по 7.

  • Блок использует следующие системные вызовы RTOS (VxWorks):

    sysIntEnable
    sysIntDisable
    intConnect
    intLock
    intUnlock
    tickGet

Соображения по производительности

Выполнение больших подсистем на уровне прерываний может оказать значительное влияние на время отклика на прерывания для прерываний равного и более низкого приоритета в системе. Обычно лучше всего сохранять ISR как можно короче. Подключите только подсистемы вызова функций, содержащие несколько блоков, к блоку асинхронного прерывания.

Лучшим решением для больших подсистем является использование блока синхронизации задач для синхронизации выполнения подсистемы вызова функций с задачей RTOS. Поместите блок синхронизации задач между блоком асинхронного прерывания и подсистемой функционального вызова. Затем блок асинхронного прерывания использует блок синхронизации задач в качестве ISR. ISR освобождает семафор синхронизации (выполняет semGive) к задаче и немедленно возвращается с уровня прерывания. Пример RTOS (VxWorks) затем планирует и запускает задачу. См. описание блока синхронизации задач.

Порты

Вход

развернуть все

Моделируемый источник прерывания.

Выходные аргументы

развернуть все

Управляющий сигнал для:

  • Подсистема функционального вызова

  • Блок синхронизации задач

  • Диаграмма потока состояний, настроенная для события ввода вызова функции

Параметры

развернуть все

Массив номеров прерываний VME для устанавливаемых прерываний. Допустимый диапазон: 1..7.

Ширина выходного сигнала блока асинхронного прерывания соответствует указанному количеству номеров прерываний VME.

Примечание

Модель может содержать более одного блока асинхронного прерывания. Однако при использовании нескольких блоков асинхронных прерываний не дублируйте номера прерываний VME, указанные в каждом блоке.

Массив уникальных номеров смещения вектора прерывания, соответствующих номерам прерываний VME, введенным для параметра номер (ы) прерываний VME. Программное обеспечение Stateflow передает смещения вызову RTOS (VxWorks) intConnect(INUM_TO_IVEC(offset),...).

Приоритет Simulink ® для нижестоящих блоков. Каждый выход блока асинхронных прерываний управляет блоком нисходящего направления (например, подсистемой функционального вызова). Укажите массив приоритетов, соответствующий номерам прерываний VME, заданным для параметра номера (ов) прерываний VME .

Значения приоритета задачи Simulink параметра необходимы для генерации кода перехода скорости (см. Переходы скорости и асинхронные блоки). Значения приоритета задачи Simulink также необходимы для поддержания абсолютной целостности времени, когда асинхронная задача должна получать реальное время от своей базовой скорости или своего вызывающего абонента. Назначенные приоритеты обычно выше, чем приоритеты, назначенные периодическим задачам.

Примечание

Программное обеспечение Simulink не моделирует асинхронное поведение задачи. Приоритет задачи асинхронной задачи предназначен только для создания кода и не учитывается при моделировании.

Установите для этой опции значение 1, если выходной сигнал блока асинхронного прерывания управляет блоком синхронизации задач.

Прерывания с более высоким приоритетом могут предотвратить прерывания с более низким приоритетом в примере RTOS (VxWorks). Для блокировки прерываний во время выполнения ISR установите флаг pre-emption равным 0. Этот параметр вызывает генерацию intLock() и intUnlock() вызовы в начале и в конце кода ISR. Осторожно используйте блокировку прерываний, поскольку она увеличивает время отклика системы на прерывания на intLockLevelSet() уровень и ниже. Укажите массив флагов, соответствующих номерам прерываний VME, введенным для параметра номера прерываний VME.

Примечание

Число элементов в массивах, задающих параметры смещения вектора прерывания VME и приоритет задачи Simulink, должно соответствовать числу элементов в массиве, указанному для параметра Число прерываний VME.

Если выбрано, ISR, генерируемый блоком асинхронного прерывания, управляет собственным таймером путем считывания абсолютного времени из аппаратного таймера. Укажите размер аппаратного таймера с параметром Timer size.

Разрешение таймера ISR. ISR, сгенерированные блоком асинхронных прерываний, поддерживают свои собственные счетчики абсолютного времени. По умолчанию эти таймеры получают свои значения из ядра RTOS (VxWorks) с помощью tickGet звоните. Разрешение параметра Timer определяет разрешение этих счетчиков. Разрешение по умолчанию: 1/60 второй. tickGet разрешение для пакета поддержки системной платы (BSP) может отличаться. Определите tickGet разрешение для BSP и введите его для параметра Timer resolution.

При нацеливании на RTOS, отличную от примера RTOS (VxWorks), замените tickGet вызов с эквивалентным вызовом к целевой RTOS. Или создайте код для считывания регистра таймера на целевом оборудовании. Дополнительные сведения см. в разделах Таймеры в асинхронных задачах и Реализация блоков асинхронных прерываний.

Количество битов для сохранения такта для аппаратного таймера. В ISR, создаваемом блоком асинхронных прерываний, используется размер таймера при выборе параметра Manage own timer. Размер может быть 32bits (по умолчанию), 16bits, 8bits, или auto. При выборе auto, генератор кода определяет размер таймера на основе настроек параметров Срок службы приложения (дней) и Разрешение таймера.

По умолчанию значения таймера сохраняются как 32-разрядные целые числа. Если для параметра Timer size установлено значение auto, можно косвенно управлять размером слов счетчиков, задав параметр Срок службы приложения (дней). Если для параметра Срок службы приложения (дней) задано значение, слишком большое для обработки генератором кода в качестве 32-разрядного целого числа указанного разрешения, генератор кода использует второе 32-разрядное целое число для устранения переполнений.

Дополнительные сведения см. в разделе Управление распределением памяти для счетчиков времени. См. также Таймеры в асинхронных задачах.

Если этот флажок установлен, программа Simulink добавляет входной порт в блок асинхронного прерывания. Этот порт предназначен только для моделирования. Подключите один или несколько моделируемых источников прерываний к входу моделирования.

Примечание

Перед созданием кода рассмотрите возможность удаления блоков, которые управляют вводом моделирования, чтобы предотвратить внесение блоков в сгенерированный код. Кроме того, можно использовать блок Environment Controller, как описано в разделе Двухмодельный подход: создание кода. Если используется блок Environment Controller, время выборки управляющих блоков зависит от времени выборки, поддерживаемого в сгенерированном коде.

Представлен в R2006a