Генерация кода C и C++ из алгоритмов обработки сигналов в DSP System Toolbox™ с помощью MATLAB® Coder™ и продуктов Simulink® Coder. Можно интегрировать сгенерированный код в проекты как исходный код, статические библиотеки, динамические библиотеки, или как раз когда независимые исполняемые файлы. Можно также сгенерировать код, оптимизированный для ARM® Cortex®-M и процессоров ARM Cortex-A с помощью продукта Embedded Coder®.
Используя MATLAB Coder, можно сгенерировать высоко оптимизированный ANSI C и Код С++ от функций и Системных объектов в DSP System Toolbox. Для списка функций и Системных объектов, которые поддерживают генерацию кода, смотрите Функции и Системные объекты, Поддержанные для генерации кода C. Можно использовать или приложение MATLAB Coder или функцию codegen
, чтобы сгенерировать код согласно типу сборки, который вы выбираете. Когда тип сборки является одним из следующего:
Исходный код – Генерирует исходный код C, чтобы объединяться с внешним проектом.
Код MEX – Генерирует MEX-функцию, чтобы запуститься в MATLAB с помощью параметров конфигурации по умолчанию.
Статическая библиотека (.lib) – Генерирует бинарную библиотеку для статического подключения с другим проектом.
Динамическая библиотека (.dll) – Генерирует бинарную библиотеку для динамического подключения с внешним проектом.
Исполняемый файл – Генерирует автономную программу (требует отдельного основного файла, записанного в C или C++).
Если вы используете скрипты сборки, чтобы задать входные типы параметра и опции генерации кода, используйте функцию codegen
.
Для примера, который иллюстрирует рабочий процесс генерации кода с помощью функции codegen
, смотрите, Генерируют код С из кода MATLAB. Для получения дальнейшей информации на каждом из шагов генерации кода, смотрите, Генерируют код С при помощи Приложения MATLAB Coder (MATLAB Coder) и Генерируют код С в Командной строке (MATLAB Coder).
В порядке улучшить скорость выполнения и использование памяти сгенерированного кода, MATLAB Coder имеет несколько опций оптимизации. Для получения дополнительной информации смотрите Оптимизацию MATLAB Coder в Сгенерированном коде (MATLAB Coder).
Используя Simulink Coder, можно сгенерировать высоко оптимизированный ANSI C и Код С++ от блоков Simulink в DSP System Toolbox. Для списка блоков, которые поддерживают генерацию кода, откройте таблицу поддержки типов данных блока Simulink для DSP System Toolbox. Чтобы получить доступ к этой таблице, введите следующую команду в подсказке команды MATLAB:
showsignalblockdatatypetable
Блоки с 'X' в соответствии с 'столбцом' Поддержки Генерации кода поддерживают генерацию кода.
Можно сгенерировать код из модели Simulink, создать исполняемый файл, и даже запустить исполняемый файл в MATLAB. Для примера смотрите, Генерируют код С из Модели Simulink.
Для получения дальнейшей информации на каждом из шагов генерации кода, смотрите, Генерируют код С для Модели (Simulink Coder).
Сгенерированный код C часто подходит для встраиваемых приложений и включает следующую оптимизацию:
Функциональное повторное использование (библиотеки времени выполнения) — Повторное использование общих алгоритмических функций через вызовы разделяемых служебных функций. Разделяемыми служебными функциями является высоко оптимизированный ANSI/ISO C функции, которые реализуют основные алгоритмы, такие как БПФ и свертка.
Повторное использование параметра (параметры периода выполнения Simulink Coder) — Несколько экземпляров блока, которые имеют то же значение для определенного параметра, указывает на ту же переменную в сгенерированном коде. Этот процесс уменьшает требования к памяти.
Блоки имеют параметры, которые влияют на оптимизацию кода — Некоторые блоки, такие как блок Sine Wave, имеют параметры, которые позволяют вам оптимизировать симуляцию для памяти или для скорости. Эта оптимизация также применяется к генерации кода.
Другая оптимизация — Использование непрерывных массивов ввода и вывода, допускающих повторное использование входных параметров, сверхперезаписываемых массивов и встроенных алгоритмов обеспечивает меньший сгенерированный код C, который более эффективен во время выполнения.
В большинстве случаев код C/C++, который вы генерируете от объектов DSP System Toolbox и блоков, является портативным. После того, как вы генерируете код, с помощью утилиты упаковывать-и-идти, можно группировать и переместить код к другой среде разработки, которой не установили MATLAB и Simulink. Для примеров смотрите, Перемещают Код, Сгенерированный от кода MATLAB до Другой Среды разработки, и Перемещают Код, Сгенерированный от Модели Simulink до Другой Среды разработки.
Существует несколько функций DSP System Toolbox, которые генерируют код с ограниченной мобильностью. Исполняемые файлы, сгенерированные от этих функций, полагаются на предварительно созданные динамические файлы библиотеки (.dll файлы) включенный с MATLAB. Необходимо включать эти .dll файлы, когда вы запускаете соответствующие исполняемые файлы на внешней среде. Для списка таких объектов и блоков и для получения информации о том, как запустить те исполняемые файлы вне MATLAB, смотрите, Как Запустить Сгенерированный Исполняемый файл Вне MATLAB.
И Simulink Coder и MATLAB Coder обеспечивают функции, чтобы помочь вам настроить и управлять информацией о сборке для своих моделей. Например, одна из функций, которые Simulink Coder обеспечивает, getNonBuildFiles
, позволяет вам идентифицировать разделяемые библиотеки, требуемые блоками в вашей модели. Если ваша модель содержит какие-либо блоки, которые пользуются предварительно скомпилированными разделяемыми библиотеками, можно установить те библиотеки по целевой системе. Папка, в которой вы устанавливаете разделяемые библиотеки, должна быть на системном пути. Целевой системе не должны были устанавливать MATLAB, но это действительно должно поддерживаться MATLAB. Для получения дополнительной информации смотрите Индивидуальную настройку Процесса сборки (Simulink Coder). Функциональный getNonBuildFiles
может также примениться к алгоритмам MATLAB. Для получения дополнительной информации смотрите Индивидуальную настройку Процесса сборки (MATLAB Coder).
DSP System Toolbox поддерживает оптимизированную генерацию кода C для популярных алгоритмов как КИХ-фильтрация и БПФ на ARM Cortex-M и процессоры ARM Cortex-A. Чтобы сгенерировать этот оптимизированный код, необходимо установить Пакет Поддержки Embedded Coder для процессоров ARM Cortex-M или Пакет Поддержки Embedded Coder для процессоров ARM Cortex-A. Кроме того, у вас должны быть следующие продукты: DSP System Toolbox, MATLAB Coder, Embedded Coder, Simulink и Simulink Coder для основанных на Simulink рабочих процессов.
Используя эти пакеты поддержки Embedded Coder, можно сгенерировать код С, который может соединиться с библиотекой CMSIS или вызывает библиотечные функции Ne10. Этот сгенерированный код может быть скомпилирован, чтобы обеспечить оптимизированные исполняемые файлы, которые работают на ARM Cortex-M или процессоры ARM Cortex-A.
Можно также портировать сгенерированный ARM код CRL Cortex-M от MATLAB до KEIL μVision IDE и IAR Встроенные Инструментальные средства. Для получения дополнительной информации смотрите Порт Сгенерированный ARM Код CRL Cortex-M от MATLAB до KEIL μVision IDE и Портируйте Сгенерированный ARM Код CRL Cortex-M от MATLAB до IAR Встроенные Инструментальные средства.
Чтобы загрузить пакеты поддержки Embedded Coder для процессоров ARM Cortex, см. https://www.mathworks.com/hardware-support.html.
Для получения дополнительной информации о пакетах поддержки и инструкциях для загрузки их, смотрите Пакет Поддержки Embedded Coder для процессоров ARM Cortex-M и Пакет Поддержки Embedded Coder для процессоров ARM Cortex-A.
Используя Пакет Поддержки Simulink для устройств на iOS Apple, можно создать и запустить модели Simulink на iPhone, iPod Touch и iPad. Можно также контролировать и настроить алгоритмы, работающие на устройствах Apple. Для примера см. График Массивов с устройствами на iOS Apple (Пакет Поддержки Simulink для устройств на iOS Apple).
Используя Пакет Поддержки Simulink для Устройств Android™, можно создать и запустить модели Simulink на поддерживаемых устройствах на базе Android. Для примера см. График Массивов с устройствами на базе Android.