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

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

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

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

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

Для доступа к примерной библиотеке блоков 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.

Примеры и дополнительная информация

Дополнительную информацию, относящуюся к темам этой главы, можно найти в

  • 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.