Обычно, вы модели времени, из которых вы планируете сгенерировать код из периодического источника прерывания (например, аппаратный таймер). Блоки в периодически синхронизируемом односкоростном образцовом выполнении на уровне прерывания по таймеру (базовая ставка модели). Блоки в периодически синхронизируемой многоскоростной модели, запущенной в базовой ставке или во множителях того уровня.
Много систем должны также поддержать выполнение блоков в ответ на события, которые являются асинхронными относительно периодического источника синхронизации системы. Например, периферийное устройство может сигнализировать о завершении входной операции путем генерации прерывания. Система должна обслужить такие прерывания, например, путем получения данных из устройства прерывания.
Эта тема объясняет, как использовать блоки, чтобы смоделировать и сгенерировать код для асинхронной обработки событий, включая обслуживание сгенерированных оборудованием прерываний, обслуживание таймеров, асинхронные операции чтения и операции записи и порождение асинхронных задач под операционной системой реального времени (RTOS). Эта библиотека блоков демонстрирует интеграцию с примером RTOS (VxWorks®). Несмотря на то, что блоки предназначаются для примера RTOS, эта глава обеспечивает анализ исходного кода и другую информацию, которую можно использовать, чтобы разработать блоки, которые поддерживают асинхронную обработку событий для альтернативного целевого RTOS. [1]
Следующие данные показывают блоки в библиотеке блоков vxlib1
.
Ключевые блоки в библиотеке являются Асинхронными блоками Синхронизации Прерывания и Задачи. Эти блоки предназначены для примера RTOS (VxWorks). Можно использовать их, с модификацией, чтобы поддержать приложения RTOS.
Можно использовать блоки в библиотеке vxlib1
(Simulink Coder) (Асинхронная Синхронизация Прерывания и Задачи) для симуляции и генерации кода. Эти блоки обеспечивают примеры отправной точки, чтобы помочь вам разработать авторские блоки для своего целевого окружения.
Чтобы реализовать асинхронную поддержку RTOS кроме примера RTOS, используйте инструкции, и пример кода обеспечиваются, чтобы помочь вам адаптировать блоки библиотеки vxlib1
, чтобы предназначаться для вашего RTOS. Эта тема обсуждена в, Создают Индивидуально настраиваемую Асинхронную Библиотеку.
Библиотека vxlib1
включает блоки, для которых можно использовать
Сгенерируйте код уровня прерывания — блок Async Interrupt
Породите задачу RTOS, которая вызывает подсистему вызова функции — блок Task Sync
Включите целостность данных при передаче данных между блоками, запускающимися как различные задачи — блок Protected RT
Используйте незащищенный/недетерминированный режим при передаче данных между блоками, запускающимися как различные задачи — блок Unprotected RT
Использование защищенных и незащищенных блоков Перехода Уровня в асинхронных контекстах обсуждено в Переходах Уровня и Асинхронных Блоках. Для получения общей информации о переходах уровня смотрите Основанное на времени Планирование и Генерацию кода.
Чтобы получить доступ к примеру RTOS (VxWorks) библиотека блоков, введите команду MATLAB® vxlib1
.
Чтобы сгенерировать пример совместимое приложение RTOS из модели, содержащей блоки библиотеки vxlib1
, используйте следующие значения параметра конфигурации для своей модели.
Выберите системный конечный файл ert.tlc
(требует лицензии Embedded Coder®) из меню обзора для Code Generation> параметр System target file (SystemTargetFile
).
Включите Configuration Parameters> Code Generation> параметр Generate code only (GenCodeOnly
).
Включите Configuration Parameters> Code Generation> Templates> Custom templates> параметр Generate an example main program (GenerateSampleERTMain
).
Выберите VxWorksExample
из меню для Configuration Parameters> Code Generation> Templates> Custom templates> параметр Target operating system (TargetOS
).
Дополнительная информация, относящаяся к темам в этой главе, может быть найдена в
Модель 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.