Асинхронные События

Асинхронная поддержка

Обычно, вы модели времени, из которых вы планируете сгенерировать код из периодического источника прерывания (например, аппаратный таймер). Блоки в периодически синхронизируемом односкоростном запуске модели на уровне прерывания по таймеру (базовая ставка модели). Блоки в периодически синхронизируемой многоскоростной модели, запущенной в базовой ставке или во множителях того уровня.

Много систем должны также поддержать выполнение блоков в ответ на события, которые являются асинхронными относительно периодического источника синхронизации системы. Например, периферийное устройство может сигнализировать о завершении входной операции путем генерации прерывания. Система должна обслужить такие прерывания, например, путем получения данных из устройства прерывания.

Эта тема объясняет, как использовать блоки, чтобы смоделировать и сгенерировать код для асинхронной обработки событий, включая обслуживание сгенерированных оборудованием прерываний, обслуживание таймеров, асинхронные операции чтения и операции записи и порождение асинхронных задач под операционной системой реального времени (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

Чтобы получить доступ к примеру RTOS (VxWorks) библиотека блоков, введите команду MATLAB® vxlib1.

Сгенерируйте код Используя библиотечные блоки для интегрирования RTOS

Сгенерировать пример совместимое приложение 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.