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

При использовании Simulink® Coder™, чтобы сгенерировать код для быстрого прототипирования, важно спроектировать ваши модели Simulink с генерацией кода в памяти с самого начала процесса проектирования.

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

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

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

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

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

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

  • FPGA

  • ASIC

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

  • Несколько

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

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

  • Ни один (пустой металл)

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

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

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

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

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

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

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

  • Внешний код

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

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

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

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

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

Одна топ-модель

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Какие внешние триггеры необходимы?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Разделяемые данные

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обработка платформМногоядерные процессорные целевые системы

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

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.

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

Похожие темы