exponenta event banner

Развернуть созданный код

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

Основная функция

Для создания приложения создайте или используйте основную функцию C/C + + для вызова функций начального уровня C/C + +, созданных из функций MATLAB. Основная функция определяет входные, выходные и другие функции, которые не задаются алгоритмами MATLAB. Генератор кода по умолчанию создает пример основной функции. Используйте созданный пример main в качестве отправной точки для создания новой основной функции. В примере main приведен наглядный пример передачи входных и выходных данных сгенерированного кода. Дополнительные сведения и примеры см. в следующих разделах:

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

Сгенерированные функциональные интерфейсы

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

Типы данных

Созданные прототипы функций C/C + + используют типы данных, соответствующие типам, используемым в коде MATLAB. См. раздел Сопоставление типов MATLAB типам в сгенерированном коде. Embedded Coder ® позволяет настраивать внешний вид и стиль создаваемых типов данных. См. Внешний вид кода (встроенный кодер).

Поведение передачи аргументов

Исходные функции C/C + +, сгенерированные в MATLAB, Coder™ следовать следующим соглашениям:

  • Передайте входные массивы по ссылке.

  • Возвращает выходные массивы по ссылке.

  • Передать входные скаляры по значению.

  • Возвращает скаляры по значению для функций с одним выходом.

  • Возвращать скаляры по ссылке:

    • Для функций с несколькими выходами.

    • При использовании той же переменной, что и при вводе и выводе.

Если в коде MATLAB используется та же переменная, что и при вводе и выводе, созданный код передает скаляр по ссылке. См. раздел Избегание копирования данных входов функций в сгенерированном коде.

Определение массива

Массивы фиксированного и переменного размера представлены различными типами данных в сгенерированном коде C/C + +. Дополнительные сведения см. в разделе Использование массивов C в генерируемых интерфейсах функций.

Исполняемые приложения

После создания кода и записи основного файла, в котором используется созданный код, необходимо создать код в исполняемый файл с помощью программы MATLAB Coder или других инструментов сборки. Можно запустить исполняемое приложение на платформе MATLAB, хост-платформе или на другой платформе, целевой платформе. Чтобы упаковать необходимые элементы созданного кода в экспортируемый zip-файл, который можно вручную перенести на целевую платформу, используйте packNGo функция.

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

Двоичное развертывание

Можно создать двоичные файлы непосредственно с помощью codegen или приложение MATLAB Coder путем выбора типа сборки статической библиотеки, динамической библиотеки или исполняемого файла (lib, dll или exe). По умолчанию созданные двоичные файлы являются функциональными для аппаратных средств платформы хоста и операционной системы. Для создания исполняемого файла необходимо указать или предоставить основной файл. Пример см. в разделе Создание автономных исполняемых файлов C/C + + из кода MATLAB. Если установить GenerateExampleMain свойство объекта конфигурации для 'GenerateCodeAndCompile'генератор кода строит исполняемый файл, используя созданный пример основного файла.

Если вы хотите развернуть свой код на другой платформе, вы можете использовать пакеты поддержки оборудования, которые поддерживают создание и создание двоичного кода для этой платформы. Эта поддержка включает определенные схемы инструментов и параметры конфигурации генерации кода, необходимые целевому оборудованию. Список пакетов поддержки, предоставляемых для кодера MATLAB, см. в разделе Аппаратное обеспечение, поддерживаемое кодером MATLAB. Для Embedded Coder доступно множество дополнительных пакетов аппаратной поддержки. См. раздел Аппаратное обеспечение, поддерживаемое встроенным кодером (Embedded Coder). Если требуется указать пользовательскую цепочку инструментов для сборки, недоступную из пакета поддержки оборудования, можно зарегистрировать собственную цепочку инструментов. См. раздел Регистрация пользовательской цепочки инструментов.

В приложении MATLAB Coder выберите пакет аппаратной поддержки на шаге Generate Code в раскрывающемся списке Hardware Board. В командной строке укажите пакет поддержки оборудования с помощью coder.hardware функция.

Развертывание исходного кода

В некоторых случаях можно создать исходный код, а затем вручную создать исходный код для проекта. Создайте исходный код вручную, если:

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

  • Вы хотите создать исполняемый файл для пользовательского оборудования, для которого у вас нет пакета поддержки оборудования.

  • Вы умеете создавать исходный код C/C + + или система сборки для целевой платформы уже настроена.

Генератор кода создает buildInfo объект, позволяющий просматривать и изменять информацию о построении, которую MATLAB Coder использует для создания двоичных выходных данных. Эта информация позволяет понять, как создать созданный код вручную. См. раздел Настройка процесса построения и RTW.BuildInfo (Встроенный кодер).

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

Сведения о том, как вручную настроить генерацию кода и сборку для целевой платформы, см. в разделе Развертывание сгенерированного кода C на внешнем оборудовании: примеры Raspberry Pi.

Статические и динамические библиотеки

При необходимости использования функций сгенерированного кода в существующем проекте C/C + + можно создать статическую библиотеку или динамическую библиотеку. Библиотеки могут обеспечивать более модульный интерфейс, чем сгенерированный исходный код. Когда кодер MATLAB создает статическую библиотеку или динамическую библиотеку:

  • Библиотека подходит для платформы, на которой вы работаете, если вы не указываете альтернативную платформу через пакет поддержки оборудования.

  • Созданные файлы заголовков для кода C явно объявляют экспортированные функции как extern "C" для упрощения интеграции библиотеки в приложения C++.

  • Созданные расширения файлов библиотеки соответствуют операционной системе основной платформы MATLAB.

    Операционная системаСтатическая библиотекаДинамическая библиотека
    Windows ®.lib.dll и .lib для соответствующей библиотеки импорта
    macOS.a.dylib
    Linux ®.a.so

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

Загрузка созданных динамических библиотек в MATLAB с помощью loadlibrary функция не рекомендуется и может привести к неправильному поведению или сбоям.

Сформированная структура файла

По умолчанию кодер MATLAB создает один файл кода C для каждого файла кода MATLAB. Можно разделить созданный код на один файл и создать код с настраиваемыми папками вывода и двоичными именами. См. раздел Как генерируется код разделов кодера MATLAB.

С помощью встроенного кодера можно настроить созданные имена файлов. См. раздел Настройка имен файлов C/C + +, созданных из кода MATLAB (встроенный кодер).

Проверка кода

Перед развертыванием созданного кода для выполнения вне среды MATLAB его можно проверить в среде MATLAB. Основным потоком операций для проверки с помощью кодера MATLAB является создание и выполнение функций C/C + + MEX. Функции MEX выполняются в среде MATLAB и обеспечивают проверку и диагностику ошибок во время выполнения. См. раздел Проверка кода.

Embedded Coder предоставляет глубокие дополнительные функциональные возможности для проверки и тестирования кода. Для проверки поведения сгенерированного кода на программном и аппаратном обеспечении вне среды MATLAB можно использовать выполнение программного обеспечения в цикле (SIL) и процессора в цикле (PIL). См. раздел Проверка (встроенный кодер).

Особенности пользовательского оборудования

Если целевой объект поддерживает только single типы данных и не double типы данных, вы можете создать код с одной точностью с помощью codegen -singleC вариант. Для этого параметра требуется Designer™ Fixed-Point. Если целевой объект поддерживает только целочисленные типы данных, используйте -float2fixed вариант. Посмотрите codegen.

Другие стратегии развертывания

Кодер MATLAB генерирует считываемый и переносимый код C/C + + для подмножества языка MATLAB. Если требуется создать автономное исполняемое приложение для хост-платформы, использующей библиотеки MATLAB Runtime, но работающей без лицензии MATLAB, используйте MATLAB Compiler SDK™. Сравнение продуктов см. в разделе https://www.mathworks.com/matlabcentral/answers/223937-should-i-use-matlab-compiler-sdk-or-matlab-coder-to-integrate-my-matlab-applications-with-c-c

См. также

|

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

Внешние веб-сайты