При использовании Simulink® Coder™, чтобы сгенерировать код для быстрого прототипирования, важно спроектировать ваши модели Simulink с генерацией кода в памяти с самого начала процесса проектирования.
Используйте Simulink для моделей проекта, которые представляют алгоритмы приложения и среды выполнения, от которых вы намереваетесь сгенерировать развертываемый код. В зависимости от вашего приложения вы можете развернуть код в среду выполнения, которая состоит из комбинации:
Компоненты среды выполнения | Выбор |
---|---|
Оборудование |
|
Ядра |
|
Операционная система |
|
Планирование |
|
Код алгоритма приложения |
|
Когда вы проектируете модели, чтобы сгенерировать код C или C++ для быстрого прототипирования или производственного развертывания, имейте в виду среду выполнения. Сгенерируйте код, который удовлетворяет требования реализации и избегает возможного переделывания проекта. Как отражено в предыдущей таблице, среда выполнения для кода, который вы генерируете, может варьироваться от относительно простой до сложной. Например, простой случай является кодом, который вы генерируете из одной, однозадачной модели, которая работает на одноядерном микропроцессоре. Комплексный случай является кодом, который сгенерирован из модели, разделенной, чтобы запуститься как распределенная система на многожильном микропроцессоре и FPGA.
Часть среды выполнения приложений является средой выполнения программного обеспечения, которая ответственна за планирование и выполнение сгенерированного кода. То программное обеспечение может существовать ранее, как в случае операционной системы и ее планировщика, или можно закодировать программное обеспечение вручную. Уровень сложности варьируется, в зависимости от какого из следующего моделирования и сценариев генерации кода применяется:
Сгенерируйте код от одной топ-модели, которая представляет алгоритмы, предназначенные, чтобы запуститься в среде выполнения.
Сгенерируйте код из модели, которая представляет часть полного алгоритма. Можно смешать сгенерированный код с кодом, записанным вручную и кодом, сгенерированным из других источников или релизов продуктов MathWorks®.
Для одной топ-модели среда выполнения программного обеспечения ответственна за выполнение сгенерированного кода тот же способ, которым Simulink симулирует модель. Функции в сгенерированном коде высоко скоординированы и оптимизированы, потому что Simulink знает о зависимостях. Среда взаимодействует через интерфейс с кодом, сгенерированным для топ-модели только. Код, сгенерированный для топ-модели, обрабатывает взаимодействие через интерфейс с кодом для блоков Model, на которые ссылаются.
Рассмотрите следующий пример, где одна топ-модель сопоставлена с задачами, которые работают на одножильном центральном процессоре.
Для этой системы вы сопоставляете тактовые частоты модели с задачами, которые работают на оборудовании. Можно принять решение для Simulink сопоставить уровни неявно, или можно сопоставить их явным образом в модели. Можно смоделировать эффекты задержки, следующие, как вы сопоставляете уровни в модели к однозадачным или многозадачным средам выполнения. Simulink планирует задачи правильно на основе уровней в зависимостях моделей и зависимостях по данным между задачами. Генератор кода реализует те же зависимости в коде, который он генерирует. Среда выполнения программного обеспечения вызывает сгенерированные функции точки входа на уровнях на основе системных таймеров и прерываний. Сгенерированный код выполняется таким же образом, что Simulink симулирует модель и содержит код, выделенный передаванию данных между функциями, запускающимися на различных уровнях.
Когда вы генерируете код от нескольких топ-моделей отдельно и соединения, что код с кодом, полученным другими способами, среда выполнения приложения берет больше ответственности за среду выполнения программного обеспечения. Для этого сценария моделирования вы генерируете код для автономных, атомарных допускающих повторное использование компонентов.
С этим сценарием Simulink не знает о зависимостях моделей. Функции в коде, сгенерированном из различных моделей, минимально скоординированы и оптимизированы. Например, модели могут совместно использовать сгенерированные служебные функции. Потенциальная оптимизация, которая пересекает контуры модели, не возможна. Необходимо спроектировать зависимости от принятия во внимание среды выполнения программного обеспечения между модулями кода, включая порядок выполнения. Для приложения, которое требует параллельного выполнения через несколько ядер, необходимо рассмотреть эффекты задержки данных через ядра.
Генератор кода помогает вам обратиться к проблемам среды выполнения программного обеспечения, таким как совместное использование глобальных данных и предотвращение конфликтов идентификатора. Код, сгенерированный для каждой модели, обрабатывает взаимодействие через интерфейс для блоков Model, на которые ссылаются.
При разработке моделей для развертывания быстрого прототипирования думайте об этих факторах проекта.
Моделирование алгоритмов | Учитывая начальное состояние и вход, набор задач или инструкций, которые эффективно приводят к правильному результату, который вы хотите. |
Моделирование интерфейсов | Механизмы, которые позволяют компонентам алгоритма передать и обмениваться информацией через контуры компонента. |
Моделирование систем | Набор компонентов алгоритма, которые достигают высокоуровневой, проблемно-ориентированной цели или результата. Компоненты часто совместно используют ресурсы. |
Моделирование сред выполнения | Среда, которая обрабатывает планирование ресурсов системного алгоритма и выполнение. |
Рассмотрите следующие вопросы относительно моделирования возможностей. Используйте информацию, перечисленную с вопросами как руководство как вы модели проекта. Разработка модели с определенной средой выполнения во время выполнения в памяти может помочь, вы избежать переделываете и будущее преобразование и затраты на обслуживание.
Факторы архитектуры | Моделирование факторов | Сопутствующая информация |
---|---|---|
Что система является областью? | Действующие для продукта предварительные условия (на основе областей компонентов) | |
Система включает физические области, такие как механическое устройство, электрические, или гидравлические области? | Физические системы | |
Какие аспекты вашего алгоритма можно представлять блоками, обеспеченными Продуктами Mathworks? Какие блоки необходимо создать? | Блокируйте использование, создание и индивидуальную настройку | |
Архитектура включает компоненты конечного автомата? | Событийно-управляемая система | Реактивные системы модели в Stateflow (Stateflow) |
Факторы архитектуры | Моделирование факторов | Сопутствующая информация |
---|---|---|
| Представление данных | |
Где и как данные вытягивают в систему и вытягивают в системе? | Входной параметр | |
| Вывод | |
| Функции и вызовы функции | Сконфигурируйте генерацию кода C для функций точки входа модели |
Вам нужно к экспортам функций, которые вызываются путем управления логикой, которая находится вне модели? | Функциональный экспорт | |
Сигналы системного монитора или данные логов (например, для калибровки)? | C API и интерфейсы обмена данными ASAP2 | |
Необходимо ли заменить код, сгенерированный для функций или операторов, например, чтобы оптимизировать код для определенного оборудования? | Замена кода | |
Существует ли требование для разработки и будущих факторов? | Разработка и будущие факторы |
Факторы архитектуры | Моделирование факторов | Сопутствующая информация |
---|---|---|
| Компонентизация | |
| Ссылка модели | |
Вы моделируете клиент-серверную архитектуру? | Функция 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. Модель сконфигурирована, чтобы использовать фиксированный шаг дискретный решатель. |
Создать модель из шаблона:
На MATLAB® домашняя вкладка нажмите Simulink.
В начальной странице Simulink расширьте Embedded Coder.
Наведите на шаблон и нажмите Create Model. Новая модель, которая использует содержимое шаблона и настройки, появляется в окне Simulink Editor.
Для получения дополнительной информации, например, чтобы создать и использовать шаблон в качестве исходного проекта, смотрите, Создают Шаблон из Модели.