exponenta event banner

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

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

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

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

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

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

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

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

  • FPGA

  • ASIC

Ядра
  • Одинок

  • Несколько

Операционная система
  • Общего назначения

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

  • Нет (голый металл)

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

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

  • Прерывание управляемое

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

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

  • Создано на основе модели

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

  • Внешний код

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

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

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

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

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

Единая топ-модель

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

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

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

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

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

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

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

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

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

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

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

Алгоритмы моделирования

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

Модель реактивных систем в потоке состояний (поток состояний)

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

Интерфейсы моделирования

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

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

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

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

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

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

  • Где и как данные перемещаются внутри системы и вне системы?

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

Продукция
  • Какие функции необходимо определить для каждого компонента?

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

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

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

Существует ли потребность в проработке и будущих соображениях?Проработка и будущие соображения

Определение интерфейсов компонентов модели

Системы моделирования

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

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

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

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

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

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

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

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

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

  • Существуют ли проблемы с идентификатором (именованием), которые необходимо рассмотреть?

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

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

Необходимо ли применять стандарт AUTOSAR? Если да, то какие аспекты архитектуры связаны с AUTOSAR?AUTOSARБлоксеть AUTOSAR
Должна ли ваша система соответствовать другим стандартам или рекомендациям?Стандарты и руководящие принципыПоддержка стандартов и руководящих принципов

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

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

  • Какую часть системы вы можете представить в модели?

Интерфейс среды выполнения
Разделяется ли система на параллельные компоненты для максимизации параллелизма? Какие компоненты?Параллелизм

Цели многоядерных процессоров

  • Управляются ли компоненты внешним синхросигналом?

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

  • Используются ли в компонентах одна или несколько ставок?

Тактовые сигналы и тактовые частоты

Определение интерфейсов компонентов модели

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

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

  • Используются ли в компонентах одна или несколько ставок?

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

Планирование на основе времени
  • Управляются ли компоненты в системе событиями (прерываниями)?

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

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

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

  • Каковы зависимости заказа на выполнение (последовательность) между компонентами?

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

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

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

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

  • Является ли платформа обработки гибридной или гетерогенной?

  • Используется ли в архитектуре симметричная или асимметричная многопроцессорная обработка? Если это асимметрично, то каким образом программное обеспечение платформы распределяется по процессорам?

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

  • Требуется ли операционная система реального времени (RTOS)? Если да, то какой RTOS?

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

Шаблоны моделей для создания кода

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

ШаблонОписание
Система генерации кодаБазовая модель, состоящая из блока Inport и блока Output.
Экспортированные функцииМодель генерации кода из подсистем вызова функций. Можно экспортировать каждую подсистему вызова функций отдельно, щелкнув правой кнопкой мыши подсистему, выбрав C/C + + Code > Export Functions и щелкнув Build.
Фиксированный шаг, многоскоростной режимМодель с фиксированным шагом, использующая несколько скоростей и состоящая из блоков Inport, блока Outport и блока Sum. Модель сконфигурирована для использования дискретного решателя с фиксированным шагом и для использования двух скоростей с параметром конфигурации модели Периодические временные ограничения выборки установлены в Unconstrained и параметр Обрабатывать каждую дискретную скорость как отдельную выбранную задачу. Simulink вставляет блок Rate Transition для обработки двух скоростей выборки.
Фиксированный шаг, одинарная ставкаМодель с фиксированным шагом, использующая одну скорость и состоящая из блоков Inport, блока Outport и блока Sum. Модель настроена на использование дискретного решателя с фиксированным шагом.

Чтобы создать модель из шаблона, выполните следующие действия.

  1. На вкладке Главная страница MATLAB ® щелкните Simulink.

  2. На начальной странице Simulink разверните Embedded Coder.

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

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

Связанные темы