Передайте асинхронные События в RTOS как вход к модели, на которую ссылаются,

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

Открытая модель в качестве примера

Откройте модель rtwdemo_async_mdlreftop в качестве примера.

Предположения передачи данных

  • Передачи данных находятся между одной задачей считывания и одной задачей записи.

  • Операция чтения или операция записи на переменной размера байта являются атомарными.

  • Когда две задачи взаимодействуют, только один может вытеснить другой.

  • Для периодических задач задача с более быстрым уровнем имеет более высокий приоритет, чем задача с более медленным уровнем. Задача с более быстрым уровнем вытесняет задачи с более медленными уровнями.

  • Задачи работают на одном процессоре. Квантование времени не позволено.

  • Процессы не разрушают и перезапускают, особенно в то время как данные передаются между задачами.

Симулируйте модель

Симулируйте модель. По умолчанию модель сконфигурирована, чтобы отобразить шаги расчета различными цветами. Дискретные шаги расчета для ввода и вывода кажутся красными и зелеными, соответственно. Константы являются пурпурным. Асинхронные прерывания являются фиолетовыми. Блоки Перехода Уровня, которые являются гибридом (шаги расчета ввода и вывода могут отличаться), кажутся желтыми.

Сгенерируйте код и отчет

Сгенерируйте код и отчет генерации кода для модели. Асинхронный блок Interrupt и сгенерированный код блока Task Sync для примера RTOS (VxWorks). Однако можно изменить блоки, чтобы сгенерировать код для другой среды выполнения.

1. Создайте временную папку для сборки и инспекционного процесса.

2. Создайте модель.

Рассмотрите код инициализации

Откройте сгенерированный исходный файл rtwdemo_async_mdlreftop.c. Код инициализации соединяет и включает ISR isr_num1_vec192 для прерывания 1 и ISR isr_num2_vec193 для прерывания 2.

Рассмотрите код ISR

В сгенерированном исходном файле rtwdemo_async_mdlreftop.c, рассмотрите код для isr_num1_vec192 ISRs и isr_num2_vec293. Каждый ISR:

  • Отключает прерывания.

  • Сохраняет контекст с плавающей точкой.

  • Вызывает код, сгенерированный для подсистемы, соединенной с блоком модели Inport, на который ссылаются, который получает прерывание.

  • Восстанавливает контекст с плавающей точкой.

  • Повторно включает прерывания.

Рассмотрите код завершения задачи

Блок Task Sync генерирует следующий код завершения.

Сопутствующая информация

Похожие темы