Модели проекта для сгенерированного встроенного развертывания кода

При использовании Embedded Coder® чтобы сгенерировать код для архитектуры встраиваемой системы, важно спроектировать ваш Simulink® модели с генерацией кода в памяти с самого начала процесса проектирования. Думайте о соответствующих факторах проекта и проблемах, таких как:

Алгоритмы приложения и среды выполнения

Используйте Simulink для моделей проекта, которые представляют алгоритмы приложения и среды выполнения, от которых вы намереваетесь сгенерировать развертываемый код. В зависимости от вашего приложения вы можете развернуть код в среду выполнения, которая состоит из комбинации:

Компоненты среды выполненияВыбор
Оборудование
  • Компьютер разработчика

  • Плата быстрого прототипирования

  • Микропроцессор

  • Микроконтроллер

  • FPGA

  • ASIC

Ядра
  • Единственный

  • Несколько

Операционная система
  • Общая цель

  • В реальном времени

  • Ни один (голое железо)

Планирование
  • Однозадачность

  • Многозадачность

  • Управляемый прерыванием

  • Параллелизм

  • Предоставляется операционной системой

  • Сгенерированный из модели

Код алгоритма приложения
  • Сгенерированный из модели

  • Внешний код

Когда вы проектируете модели, чтобы сгенерировать код C или C++ для быстрого прототипирования или производственного развертывания, имейте в виду среду выполнения. Сгенерируйте код, который удовлетворяет требования реализации и избегает возможного переделывания проекта. Как отражено в предыдущей таблице, среда выполнения для кода, который вы генерируете, может варьироваться от относительно простой до сложной. Например, простой случай является кодом, который вы генерируете из одной, однозадачной модели, которая работает на одноядерном микропроцессоре. Комплексный случай является кодом, который сгенерирован из модели, разделенной, чтобы запуститься как распределенная система на многоядерном микропроцессоре и FPGA.

Среда выполнения программного обеспечения для сгенерированного кода

Часть среды выполнения приложений является средой выполнения программного обеспечения, которая ответственна за планирование и выполнение сгенерированного кода. То программное обеспечение может существовать ранее, как в случае операционной системы и ее планировщика, или можно закодировать программное обеспечение вручную. Уровень сложности варьируется, в зависимости от какого из следующего моделирования и сценариев генерации кода применяется:

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

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

Единая модель верхнего уровня

Для одной модели верхнего уровня среда выполнения программного обеспечения ответственна за выполнение сгенерированного кода тот же способ, которым Simulink симулирует модель. Функции в сгенерированном коде высоко скоординированы и оптимизированы, потому что Simulink знает о зависимостях. Среда взаимодействует через интерфейс с кодом, сгенерированным для топ-модели только. Код, сгенерированный для топ-модели, обрабатывает взаимодействие через интерфейс с кодом для блоков Model, на которые ссылаются.

Рассмотрите следующий пример, где одна топ-модель сопоставлена с задачами, которые работают на одножильном центральном процессоре.

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

Несколько моделей верхнего уровня

Когда вы генерируете код от нескольких топ-моделей отдельно и соединения, что код с кодом, полученным другими способами, среда выполнения приложения берет больше ответственности за среду выполнения программного обеспечения. Для этого сценария моделирования вы генерируете код для автономных, атомарных допускающих повторное использование компонентов.

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

Генератор кода помогает вам обратиться к проблемам среды выполнения программного обеспечения, таким как совместное использование глобальных данных и предотвращение конфликтов идентификатора. Код, сгенерированный для каждой модели, обрабатывает взаимодействие через интерфейс для блоков Model, на которые ссылаются.

Сопоставьте архитектуру встраиваемой системы со средой моделирования Simulink

При отображении архитектуры встраиваемой системы со средой моделирования Simulink думайте о проекте модели.

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

Рассмотрите следующие вопросы относительно архитектуры встраиваемой системы с соответствующими возможностями моделирования и ссылками на сопутствующую информацию. Используйте информацию в качестве руководства для отображения ваших деталей архитектуры к среде моделирования Simulink. Разработка архитектуры модели с вашей определенной архитектурой встраиваемой системы в памяти может помочь, вы избежать переделываете и будущее преобразование и затраты на обслуживание.

Моделирование алгоритмов

Факторы архитектурыМоделирование факторовСопутствующая информация
Что является областью применения системы?Действующие для продукта предварительные условия (на основе областей компонентов)
Система включает физические области, такие как механическое устройство, электрические, или гидравлические области?Физические системы
Какие аспекты вашего алгоритма можно представлять блоками, обеспеченными Продуктами Mathworks? Какие блоки необходимо создать?Блокируйте использование, создание и индивидуальную настройку
Архитектура включает компоненты конечного автомата?Событийно-управляемая система

Реактивные системы модели в Stateflow (Stateflow)

Существует ли потребность стандартизировать код, который генератор кода производит из многоуровневых моделей? Определения пользовательского кода для данных и функций

Моделирование интерфейсов

Факторы архитектурыМоделирование факторовСопутствующая информация
  • Какие данные необходимо представлять в сгенерированном коде?

  • Как необходимо представлять ввод и вывод — тип данных, размерность, комплексность?

  • Алгоритмы используют или вычисления с фиксированной точкой с плавающей точкой?

  • Как данные изменятся?

Представление данных
Где и как данные подтягиваются в систему и подтягиваются внутри системы?Входной параметр

Сравнение методов загрузки сигнала

  • Где и как данные продвинуты в системе и из системы?

  • Какие внешние триггеры требуются?

Вывод
  • Какие функции необходимо задать для каждого компонента?

  • Каков прототип для каждой функции точки входа?

Функции и вызовы функции
Можно ли извлечь выгоду из подготовки настроек генерации кода по умолчанию для категорий данных и функций?Данные и функциональная настройка
Вам нужно экспортировать функции, которые вызываются управляющей логикой, которая находится вне модели?Функциональный экспорт
Сигналы системного монитора или данные логов (например, для калибровки)?C API и интерфейсы обмена данными ASAP2
Необходимо ли заменить код, сгенерированный для функций или операторов, например, чтобы оптимизировать код для определенного оборудования?Замена кода
Необходимо ли управлять размещением данных или функций в памяти?Разделы памяти

Управляйте данными и функциональным размещением в памяти вставкой прагм

Существует ли требование для разработки и будущих факторов?Разработка и будущие факторы

Задайте интерфейсы компонентов модели

Моделирование систем

Факторы архитектурыМоделирование факторовСопутствующая информация
  • Какова область действия системы? Контроллер? Внешняя среда или объект? Тестовая обвязка?

  • Как система разделена в компоненты алгоритма (фрагменты логики)?

  • Какие компоненты можно представлять в Simulink?

  • Можете вы компоненты проекта для повторного использования? Какова мотивация для повторного использования (например, разделение труда или plug-n-play)?

Компонентизация
  • Аспекты системы требуют модульного тестирования?

  • Команда людей сотрудничает при проекте?

  • Необходимо ли защитить интеллектуальную собственность?

Ссылка модели
Вы моделируете клиент-серверную архитектуру?Функция Simulink и блоки Вызывающей стороны
Действительно ли соответствующее наследие или пользовательский код доступны?Внешняя интеграция кодаВнешняя интеграция кода
Можно ли применить эталонную архитектуру или ссылочные компоненты?Модель и шаблоны проекта
Вам нужно к экспортам функций, которые вызываются путем управления логикой, которая находится вне модели?Модели экспорта функцийОбзор моделей экспорта функций
Существует ли потребность группировать исходный код для компонента как библиотека общего объекта, чтобы упростить распределение или совместное использование?Библиотеки общего объекта (динамически подключаемые библиотеки)Сгенерированный код пакета как разделяемые библиотеки
Действительно ли можно ли снова использовать функции?Функциональное повторное использование
  • Компоненты должны совместно использовать доступ к глобальным данным?

  • В системе происходят изменения состояния? В каждом случае, как результат становится переданным?

  • Там идентификатор (Называет) проблемы, чтобы рассмотреть?

Разделяемые данные
Необходимо ли управлять размещением данных или функций в памяти?Разделы памяти

Управляйте данными и функциональным размещением в памяти вставкой прагм

Требуются, чтобы вы применяете стандарт AUTOSAR? Если да, какие аспекты архитектуры включают AUTOSAR?AUTOSARAUTOSAR Blockset
Ваша система должна соответствовать другим стандартам или инструкциям?Стандарты и инструкцииПоддержка стандартов и инструкций

Моделирование сред выполнения

Факторы архитектурыМоделирование факторовСопутствующая информация
  • Какого уровня управления взаимодействием через интерфейс во время выполнения ваше приложение требует?

  • Сколько из вашей системы можно представлять в модели?

Взаимодействие через интерфейс во время выполнения
Система разделена на параллельные компоненты, чтобы максимизировать параллелизм? Какие компоненты?Параллелизм

Многоядерные процессорные целевые системы

  • Компоненты управляются внешним таймером?

  • Какие тактовые частоты компоненты системы используют?

  • Компоненты используют один уровень или несколько уровней?

Часы и тактовые частоты

Задайте интерфейсы компонентов модели

  • Компоненты в системе управляются часами?

  • Какие тактовые частоты компоненты системы используют?

  • Компоненты используют один уровень или несколько уровней?

  • Каковы приоритеты системных задач и функций?

Основанное на времени планирование
  • Компоненты в системе управляются событиями (прерывания)?

  • Каковы приоритеты системных задач и функций?

Основанное на событии планирование
Система должна обработать инициализацию, сброс или оконечные события?Инициализация, сброс, завершение
  • Действительно ли система является однозадачной или многозадачной системой?

  • Требуются, чтобы компоненты выполняются в режиме реального времени?

  • Что зависимости от порядка выполнения (упорядочивают) между компонентами?

  • Каковы ограничения времени для задачи и функционального выполнения?

Выполнение задачи
  • Если вы знаете платформу обработки, что это?

  • Система будет работать на одножильном или многоядерном процессоре?

  • Действительно ли система является распределенной системой?

  • Гибрид платформы обработки или неоднороден?

  • Архитектура использует симметричную мультипроцессорную обработку или ассиметричную мультипроцессорную обработку? Если асимметричный, как программное обеспечение платформы разделено через центральные процессоры?

Обработка платформМногоядерные процессорные целевые системы
  • Вы хотите сгенерировать и запустить независимый исполняемый файл, который не требует внешнего ядра реального времени или операционной системы?

  • Система работы в режиме реального времени (RTOS) требуется? Если да, что RTOS?

Ядро, операционная система

Шаблоны модели для генерации кода

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

ШаблонОписание
Система генерации кодаБазовая модель, состоящая из Inport блока и блока Output.
Экспортируемые функцииМодель для генерации кода от подсистем вызова функций. Можно экспортировать каждую подсистему вызова функций отдельно путем щелчка правой кнопкой по подсистеме, выбора C/C++ Code> Export Functions и нажатия на Build.
Фиксированный шаг, многоскоростнойМодель фиксированного шага, которая использует несколько уровней и состоит из Inport блоков, блока Outport и блока Sum. Модель сконфигурирована, чтобы использовать фиксированный шаг дискретный решатель и использовать два уровня с параметром конфигурации модели набор Periodic sample time constraint к Unconstrained и параметр Treat each discrete rate as a separate task выбран. Simulink вставляет блок Rate Transition, чтобы обработать две частоты дискретизации.
Фиксированный шаг, один уровеньМодель фиксированного шага, которая использует один уровень и состоит из Inport блоков, блока Outport и блока Sum. Модель сконфигурирована, чтобы использовать фиксированный шаг дискретный решатель.

Создать модель из шаблона:

  1. На MATLAB® разместите вкладку, нажмите Simulink.

  2. В начальной странице Simulink расширьте Embedded Coder.

  3. Наведите на шаблон и нажмите Create Model. Новая модель, которая использует содержимое шаблона и настройки, появляется в окне Simulink Editor.

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

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте