Обычно, вы модели времени, из которых вы планируете сгенерировать код из периодического источника прерывания (например, аппаратный таймер). Блоки в периодически синхронизируемом односкоростном запуске модели на уровне прерывания по таймеру (базовая ставка модели). Блоки в периодически синхронизируемой многоскоростной модели, запущенной в базовой ставке или во множителях того уровня.
Много систем должны также поддержать выполнение блоков в ответ на события, которые являются асинхронными относительно периодического источника синхронизации системы. Например, периферийное устройство может сигнализировать о завершении входной операции путем генерации прерывания. Система должна обслужить такие прерывания, например, путем получения данных из устройства прерывания.
Эта тема объясняет, как использовать блоки, чтобы смоделировать и сгенерировать код для асинхронной обработки событий, включая обслуживание сгенерированных оборудованием прерываний, обслуживание таймеров, асинхронные операции чтения и операции записи и порождение асинхронных задач под операционной системой реального времени (RTOS). Эта библиотека блоков демонстрирует интеграцию с примером RTOS (VxWorks®). Несмотря на то, что блоки предназначаются для примера RTOS, эта глава обеспечивает анализ исходного кода и другую информацию, которую можно использовать, чтобы разработать блоки, которые поддерживают асинхронную обработку событий для альтернативного целевого RTOS. [1]
Следующий рисунок показывает блоки в vxlib1
библиотека блоков.
Ключевые блоки в библиотеке являются блоками Task Sync и Async Interrupt. Эти блоки предназначены для примера RTOS (VxWorks). Можно использовать их, с модификацией, чтобы поддержать приложения RTOS.
Можно использовать блоки в vxlib1
Библиотека (Simulink Coder) (Async Interrupt и Task Sync) для симуляции и генерации кода. Эти блоки обеспечивают примеры начальной точки, чтобы помочь вам разработать пользовательские блоки для своего целевого окружения.
Чтобы реализовать асинхронную поддержку RTOS кроме примера RTOS, используйте инструкции, и пример кода обеспечиваются, чтобы помочь вам адаптировать vxlib1
библиотечные блоки, чтобы предназначаться для вашего RTOS. Эта тема обсуждена в, Создают Индивидуально настраиваемую Асинхронную Библиотеку.
vxlib1
библиотека включает блоки, для которых можно использовать
Сгенерируйте код уровня прерывания — блок Async Interrupt
Породите задачу RTOS, которая вызывает подсистему вызова функции — блок Task Sync
Включите целостность данных при передаче данных между блоками, запускающимися как различные задачи — блок Protected RT
Используйте незащищенный/недетерминированный режим при передаче данных между блоками, запускающимися как различные задачи — блок Unprotected RT
Использование защищенных и незащищенных блоков Перехода Уровня в асинхронных контекстах обсуждено в Переходах Уровня и Асинхронных Блоках. Для получения общей информации о переходах уровня смотрите Основанное на времени Планирование и Генерацию кода.
Чтобы получить доступ к примеру 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
.
Дополнительная информация, относящаяся к темам в этой главе, может быть найдена в
rtwdemo_async
модель, которая использует tornado.tlc
системный конечный файл и vxlib1
библиотека блоков. Чтобы открыть этот пример, введите rtwdemo_async
в командной строке MATLAB.
rtwdemo_async_mdlreftop
модель, которая использует tornado.tlc
системный конечный файл и vxlib1
библиотека блоков. Чтобы открыть этот пример, введите rtwdemo_async_mdlreftop
в командной строке MATLAB.
Основанное на времени Планирование и Генерация кода (Simulink Coder), обсуждает общую многозадачность и проблемы перехода уровня для периодических моделей.
Документация Embedded Coder обсуждает ert.tlc
системный конечный файл, включая выполнение задачи и планирование.
Для получения дальнейшей информации о системных вызовах к примеру RTOS (VxWorks) упомянутый в этой главе, см. документацию по системе VxWorks на веб-сайте Wind River®.
[1] VxWorks является зарегистрированной торговой маркой Wind River Systems, Inc.