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