Embedded Coder генерирует читаемый, компактный и быстрый C/C++ код для встраиваемых процессоров, используемых в массовом производстве. Он расширяет возможности MATLAB Coder и Simulink Coder специфическими оптимизациями для точного управления сгенерированными функциями, файлами и данными. Эти оптимизации повышают эффективность кода и облегчают интеграцию с унаследованным кодом, типами данных и параметрами калибровки. Embedded coder позволяет использовать инструменты разработки производителя процессора для создания исполняемого файла для развертывания «под ключ» во встроенной системе или отладочном комплекте.

Embedded Coder поддерживает такие стандарты программного обеспечения и кодирования, как AUTOSAR, MISRA C и ASAP2. В процессе генерации исходного кода генерируются отчеты о трассируемости, документация по коду. Embedded Coder обеспечивает автоматическую проверку программного обеспечения для обеспечения процесса разработки программного обеспечения согласно DO-178 (КТ-178), IEC 61508 (ГОСТ Р МЭК 61508) и ISO 26262 (ГОСТ Р ИСО 26262). Код Embedded Coder является переносимым и может быть скомпилирован и выполнен на любом процессоре. Кроме того, Embedded Coder предлагает пакеты поддержки оборудования с расширенной оптимизацией сгенерированного кода для конкретной аппаратной платформы.

Ключевые особенности

Модель управления двигателем с сгенерированным производственным кодом и способностью симулировать выполнение SIL или PIL. Embedded coder позволяет быстро создавать, документировать и тестировать код для производственных встроенных систем
Модель управления двигателем с сгенерированным производственным кодом и способностью симулировать выполнение SIL или PIL. Embedded coder позволяет быстро создавать, документировать и тестировать код для производственных встроенных систем
  • Оптимизации и настройки кода, расширяющие MATLAB Coder и Simulink Coder
  • Определение класса, типа и псевдонима хранилища с использованием словарей данных
  • Многоскоростное, многозадачное и многоядерное выполнение кода с RTOS или без
  • Проверка кода, включая тестирование SIL и PIL, пользовательские комментарии и отчеты кода с отслеживанием моделей в соответствии с кодом и требованиями
  • Поддержка стандартов, включая ASAP2, AUTOSAR, DO-178, IEC 61508, ISO 26262 и MISRA C (с Simulink)
  • Расширенные возможности оптимизации кода и драйверов устройств для конкретного оборудования, включая ARM, Intel, NXP, STMicroelectronics и Texas Instruments
Модель управления двигателем с сгенерированным производственным кодом и способностью симулировать выполнение SIL или PIL. Embedded coder позволяет быстро создавать, документировать и тестировать код для производственных встроенных систем Модель управления двигателем с сгенерированным производственным кодом и способностью симулировать выполнение SIL или PIL. Embedded coder позволяет быстро создавать, документировать и тестировать код для производственных встроенных систем

Настройка генерации кода

Использование Embedded Coder Quick Start для быстрого создания производственного кода из Simulink
Использование Embedded Coder Quick Start для быстрого создания производственного кода из Simulink
Использование Embedded Coder Quick Start для быстрого создания производственного кода из Simulink Использование Embedded Coder Quick Start для быстрого создания производственного кода из Simulink

Чтобы настроить параметры генерации кода для Embedded Coder, используется приложение MATLAB Coder для MATLAB или Embedded Coder Quick Start для Simulink. Также можно настроить каждый параметр напрямую, используя команды и скрипты MATLAB. 

Из приложения MATLAB Coder вы можете:

  • Сгенерировать код для ваших файлов и функций MATLAB
  • Выбрать свой процессор и вывод генерации кода
  • Выбрать оптимизации Embedded Coder

С помощью Embedded Coder Quick Start в Simulink вы можете: 

  • Генерировать код для ваших моделей и подсистем Simulink
  • Выбрать свой процессор и вывод генерации кода
  • Выбрать оптимизации оперативной памяти или скорости выполнения

Выбор целей кодогенерации

Использование пакетов поддержки оборудования для быстрого развертывания сгенерированного кода на встроенных устройствах
Использование пакетов поддержки оборудования для быстрого развертывания сгенерированного кода на встроенных устройствах

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

Для MATLAB указывается одна из следующих выходных конфигураций:

  • MEX-файл
  • Статическая библиотека C/C++
  • Исполняемый файл C/C++

Для Simulink вы указываете одну из готовых конфигураций, которые включают:

  • Embedded Real-Time Target - генерирует ANSI / ISO C, C++ и инкапсулированный код с данными в плавающей и фиксированной точкой для эффективного выполнения в реальном времени практически на любом производственном процессоре;
  • AUTOSAR Target - генерирует код на C и интерфейсы времени выполнения, которые поддерживают разработку программных компонентов AUTOSAR;
  • Shared Library Target - генерирует разделяемую библиотеку для выполнения на платформе хоста в виде файла библиотеки Windows (.dll) или UNIX (.so)

Кроме того, MathWorks и третьи лица предлагают дополнения MATLAB, которые расширяют встроенный кодер для поддержки определенного оборудования, включая ARM, Intel, NXP, STMicroelectronics и Texas Instruments.

Использование пакетов поддержки оборудования для быстрого развертывания сгенерированного кода на встроенных устройствах Использование пакетов поддержки оборудования для быстрого развертывания сгенерированного кода на встроенных устройствах

Работа с пользовательскими данными

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

Embedded Coder позволяет определять и контролировать отображение данных модели в сгенерированном коде для облегчения интеграции программного обеспечения. 

Для кода MATLAB Embedded Coder поддерживает все определения данных MATLAB Coder, включая объекты с фиксированной точкой и предопределенные классы хранения. 

Для моделей Simulink Embedded Coder поддерживает следующие возможности словарей данных и спецификации:

  • Словарь Embedded Coder - позволяет просматривать и настраивать определения кода, включая интерфейсы функций, классы хранения и разделы памяти;
  • Объекты данных Simulink - предоставляет предопределенные классы хранения, включая постоянные, изменчивые, экспортированные глобальные, импортированные глобальные, определяют директиву, структуру, битовое поле (включая битовую структуру), а также получают и устанавливают методы доступа;
  • Модуль данных упаковки модуля - предоставляет предварительно настроенные атрибуты для расширенных объектов данных, обычно используемых в массовом производстве, таких как сегменты памяти для калибровки или настройки интерполяторов;
  • Пользовательские типы данных - позволяет создавать абстрактные типы для сложных данных, чтобы вы могли точно контролировать, как данные модели отображаются в сгенерированном коде, взаимодействовать с любыми унаследованными данными и дополнять или заменять встроенные типы Simulink

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

Оптимизация и упаковка кода

Генерация кода, использующего инструкции SIMD из модели Simulink
Генерация кода, использующего инструкции SIMD из модели Simulink

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

Параметры Embedded Coder для генерации кода из кода MATLAB и моделей Simulink позволяют:

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

Для моделей Simulink доступны дополнительные параметры оптимизации и настройки Embedded Coder, что позволяет:

  • Генерировать варианты кода, используя макросы для компиляции препроцессора;
  • Контролировать формат каждого сгенерированного файла;
  • Определять, как определяются глобальные данные;
  • Указывать содержание и размещение комментариев.
Генерация кода, использующего инструкции SIMD из модели Simulink Генерация кода, использующего инструкции SIMD из модели Simulink

Комментирование, отслеживание и документирование кода

Отчет по генерации кода Simulink с указанием двунаправленной трассируемости между алгоритмом и реализацией
Отчет по генерации кода Simulink с указанием двунаправленной трассируемости между алгоритмом и реализацией
Отчет по генерации кода Simulink с указанием двунаправленной трассируемости между алгоритмом и реализацией Отчет по генерации кода Simulink с указанием двунаправленной трассируемости между алгоритмом и реализацией

Embedded Coder предоставляет несколько возможностей для проверки сгенерированного кода из файлов и функций MATLAB или моделей и подсистем Simulink. Используя эти возможности, вы можете:

  • Создать отчет о коде, описывающий модули кода, интерфейсы функций и статические метрики кода;
  • Управлять форматами идентификаторов для сгенерированных глобальных данных, типов данных и функций;
  • Включить код MATLAB в качестве комментариев в сгенерированный код, включая текст справки по функциям.

Embedded Coder также предоставляет возможность вставлять высокоуровневые требования в виде комментариев кода со ссылками на источник требований (требуется Simulink Requirements). Отчеты о сгенерированном коде из моделей Simulink также включают описание интерфейса кода, отчет об трассируемости и отображение сгенерированных исходных файлов и кода. Генерируются двунаправленные связи между моделью и сгенерированным кодом, что упрощает навигацию между каждой строкой кода и соответствующим элементом модели Simulink, включая подсистемы, блоки, функции и код MATLAB, а также диаграммы и переходы Stateflow.

Выполнение и верификация кода

Выполнение тестирования вида ПО-в-контуре (SIL) или процессор-в-контуре (PIL) для кода, сгенерированного Embedded Coder
Выполнение тестирования вида ПО-в-контуре (SIL) или процессор-в-контуре (PIL) для кода, сгенерированного Embedded Coder

Embedded Coder позволяет включать сгенерированный код в пользовательскую среду выполнения кода. 

Для алгоритмов MATLAB, код, сгенерированный из Embedded Coder, выполняется с использованием той же самой среды исполнения, что и MATLAB Coder. 

Для моделей Simulink Embedded Coder значительно расширяет среду исполнения в реальном времени, предоставляемую Simulink Coder. По умолчанию код может выполняться в операционной системе реального времени (ОСРВ) или без нее, а также в однозадачном, многозадачном, многоядерном или асинхронном режимах. Результаты выполнения кода верифицируются с помощью тестирования ПО-в-контуре (SIL) и процессор-в-контуре (PIL). 

Генерация программы main

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

Выполнение многоскоростного, многозадачного и многоядерного кода

Embedded Coder генерирует односкоростной или многоскоростной код, используя периодические выборки, указанные в модели. Для многоцелевых многозадачных моделей используется стратегия, называемая группировкой частот, которая генерирует отдельные функции для задачи базовой частоты и для каждой частоты в модели. Также можно использовать моделирование Simulink Concurrent Execution для создания многопоточного кода.

Выполнение SIL- и PIL-тестирования

Embedded Coder автоматизирует выполнение сгенерированного кода в Simulink для SIL-тестирования или PIL-тестирования на целевой платформе с использованием режимов моделирования Simulink или блоков S-функций. Simulink Test помогает автоматизировать выполнение тестов и демонстрацию эквивалентности работы сгенерированного кода и модели. Анализ структурного покрытия кода для измерения полноты тестов может быть выполнен с помощью Simulink Coverage или с интеграцией со сторонними инструментами. Анализ профилирования кода обеспечивает сбор время выполнения на хосте или целевых процессорах.

Выполнение тестирования вида ПО-в-контуре (SIL) или процессор-в-контуре (PIL) для кода, сгенерированного Embedded Coder Выполнение тестирования вида ПО-в-контуре (SIL) или процессор-в-контуре (PIL) для кода, сгенерированного Embedded Coder