Обычно, вы модели времени, из которых вы планируете сгенерировать код из периодического источника прерывания (например, аппаратный таймер). Блоки в периодически синхронизируемом односкоростном запуске модели на уровне прерывания по таймеру (базовая ставка модели). Блоки в периодически синхронизируемой многоскоростной модели, запущенной в базовой ставке или во множителях того уровня.
Много систем должны также поддержать выполнение блоков в ответ на события, которые являются асинхронными относительно периодического источника синхронизации системы. Например, периферийное устройство может сигнализировать о завершении входной операции путем генерации прерывания. Система должна обслужить такие прерывания, например, путем получения данных из устройства прерывания.
Эта тема объясняет, как использовать блоки, чтобы смоделировать и сгенерировать код для асинхронной обработки событий, включая обслуживание сгенерированных оборудованием прерываний, обслуживание таймеров, асинхронные операции чтения и операции записи и порождение асинхронных задач под операционной системой реального времени (RTOS). Эта библиотека блоков демонстрирует интеграцию с примером RTOS (VxWorks®). Несмотря на то, что блоки предназначаются для примера RTOS, эта глава обеспечивает анализ исходного кода и другую информацию, которую можно использовать, чтобы разработать блоки, которые поддерживают асинхронную обработку событий для альтернативного целевого RTOS.[1]
Следующий рисунок показывает блоки в vxlib1
библиотека блоков.
Ключевые блоки в библиотеке являются блоками Task Sync и Async Interrupt. Эти блоки предназначены для примера RTOS (VxWorks). Можно использовать их, с модификацией, чтобы поддержать приложения RTOS.
Примечание
Используйте блоки в библиотеке блоков Шаблонов Прерывания (Async Interrupt и Task Sync) для симуляции и генерации кода. Эти блоки обеспечивают примеры начальной точки, чтобы помочь вам разработать пользовательские блоки для целевого окружения.
Чтобы реализовать асинхронную поддержку RTOS кроме примера RTOS, используйте эти инструкции, и пример кода в Создают Индивидуально настраиваемую Асинхронную Библиотеку, чтобы адаптировать блоки Библиотеки шаблонов Прерывания к вашему RTOS.
Библиотека шаблонов Прерывания включает блоки, для которых можно использовать:
Сгенерируйте код уровня прерывания — блок Async Interrupt
Породите задачу RTOS, которая вызывает подсистему вызова функции — блок Task Sync
Использование защищенных и незащищенных блоков Перехода Уровня в асинхронных контекстах обсуждено в Переходах Уровня и Асинхронных Блоках. Для получения общей информации о переходах уровня смотрите Основанное на времени Планирование и Генерацию кода.
Чтобы сгенерировать пример совместимое приложение RTOS из модели, которая содержит блоки Библиотеки шаблонов Прерывания, используйте эти настройки параметра конфигурации модели для своей модели:
Установите System target file (SystemTargetFile
) к ert.tlc
(требует Embedded Coder®).
Выберите Generate code only (GenCodeOnly
).
Выберите Generate an example main program (GenerateSampleERTMain
).
Установите Target operating system (TargetOS
) к VxWorksExample
.
Модель Example rtwdemo_async
, который использует tornado.tlc
системный конечный файл и библиотека блоков Шаблона Прерывания. Чтобы открыть модель, введите rtwdemo_async
в MATLAB® командная строка.
Модель Example rtwdemo_async_mdlreftop
, который использует tornado.tlc
системный конечный файл и библиотека блоков Шаблона Прерывания. Чтобы открыть модель, введите rtwdemo_async_mdlreftop
в командной строке MATLAB.
Основанное на времени Планирование и Генерация кода обсуждают общую многозадачность и проблемы перехода уровня для периодических моделей.
Документация Embedded Coder обсуждает ert.tlc
системный конечный файл, включая выполнение задачи и планирование.
Для получения дальнейшей информации о системных вызовах к примеру RTOS (VxWorks) упомянутый в этой теме, см. документацию по системе VxWorks на Wind River® веб-сайт.
[1] VxWorks является зарегистрированной торговой маркой Wind River Systems, Inc.