Выберите подход к сборке и настройки процесс сборки

Генератор кода поддерживает эти подходы для создания (компиляция и соединение) код, который вы генерируете из моделей Simulink®:

  • Toolchain — Процесс сборки, который генерирует make-файлы и поддерживает пользовательские наборы инструментальных средств. Этот подход:

    • Предоставляет управлению вашего процесса сборки с информационными объектами набора инструментальных средств. Можно задать эти объекты с помощью скриптов MATLAB.

    • Поддерживает ссылки на модели, SIL и PIL.

    • Поддержки Simulink Coder™, Embedded Coder® и MATLAB® Coder.

  • Template makefile — Процесс сборки, который использует make-файл шаблона с набором инструментальных средств, который вы задаете. Этот подход:

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

    • Поддерживает ссылки на модели, SIL и PIL.

    • Simulink Coder поддержек и Embedded Coder.

Можно использовать Системный параметр конфигурации конечного файла, чтобы выбрать процесс сборки для модели. Когда вы устанавливаете System target file на:

Можно переключиться от подхода набора инструментальных средств до подхода make-файла шаблона с этой командой:

set_param(model, 'MakeCommand', 'make_rtw TMF=1')

Подход набора инструментальных средств

Toolchain settings появляется под Build process, когда вы устанавливаете System target file на:

  • grt.tlc — Generic Real-Time Target

  • ert.tlc — Embedded Coder (требует продукта Embedded Coder),

  • ert_shrlib.tlc — Embedded Coder (host-based shared library target) (требует Embedded Coder),

  • Любой совместимый набором инструментальных средств системный конечный файл (Если основанный на ERT, требует Embedded Coder),

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

Toolchain settings включает эти параметры конфигурации:

  • Набор инструментальных средств – Задает набор сторонних программных инструментов, который создает сгенерированный код. Набор инструментальных средств может включать компилятор, компоновщика, и архиватор, и другую предварительную сборку или инструменты пост-сборки.

    Значением по умолчанию Toolchain является Automatically locate an installed toolchain. Параметр Toolchain отображает имя расположенного набора инструментальных средств чуть ниже Automatically locate an installed toolchain.

    Чтобы проверять, что набор инструментальных средств присутствует и подтверждает это, генератору кода потребовали, чтобы информация использовала набор инструментальных средств, в разделе Advanced Parameters, нажала Validate Toolchain. Получившийся Отчет Валидации дает значение передачи/сбоя для выбранного набора инструментальных средств и показывает проблемы, которые требуют разрешения.

  • Конфигурация сборки – Задает настройки оптимизации. По умолчанию Build Configuration установлен в Faster Builds. Можно также выбрать Faster Runs, Debug, и Specify. Если вы выбираете Specify, можно настроить опции для набора инструментальных средств. Когда вы нажимаете Apply, пользовательские настройки набора инструментальных средств применяются к текущей модели.

Примечание

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

  • ert.tlc — Create Visual C/C++ Solution File for Embedded Coder

  • grt.tlc — Create Visual C/C++ Solution File for Simulink Coder

Чтобы избежать беспорядка, нажмите Browse, чтобы выбрать системный конечный файл и посмотреть на описание каждого файла.

Обновите модель, чтобы использовать подход набора инструментальных средств

Когда вы открываете модель, созданную перед R2013b, который использует следующие системные конечные файлы, программное обеспечение пытается обновить модель. Обновление изменяет настройку от использования настроек make-файла шаблона к использованию настроек набора инструментальных средств:

  • ert.tlc — Embedded Coder

  • ert_shrlib.tlc — Embedded Coder (host-based shared library target)

  • grt.tlc — Generic Real-Time Target

Примечание

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

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

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

Примечание

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

  • ert.tlc — Create Visual C/C++ Solution File for Embedded Coder

  • grt.tlc — Create Visual C/C++ Solution File for Simulink Coder

Чтобы видеть, была ли модель обновлена:

  1. Если Toolchain и параметры конфигурации Build configuration заданы, модель была обновлена.

    Если параметры конфигурации make-файла, такие как Generate makefile, Make command и Template makefile заданы, модель не была обновлена.

Запустите путем создания рабочей копии модели с помощью File> Save As. Это действие сохраняет исходные параметры модели и параметры конфигурации для ссылки.

Попытайтесь обновить модель с помощью Upgrade Advisor:

  1. На вкладке Modeling, в разделе Evaluate & Manage, выбирают Upgrade Advisor.

  2. В Советнике по вопросам Обновления выберите Check and update model to use toolchain approach to build generated code и нажмите Run This Check.

  3. Выполните предлагаемые действия и/или нажмите Update Model.

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

  • Compiler optimization levelOptimizations off (faster builds)

  • Generate makefile — Enabled

  • Template makefile — Система специфичный для конечного файла make-файл шаблона

  • Make commandmake_rtw без аргументов

Иногда, модель не может быть обновлена. Попробуйте следующую процедуру:

  • Если Generate makefile отключен, этот случай не может быть обновляемым. Однако можно попытаться включить его и попытаться обновить модель с помощью Советника по вопросам Обновления.

  • Если Compiler optimization level установлен в Optimizations on (faster runs):

    1. Набор Compiler optimization level к Optimizations off (faster builds).

    2. Обновите модель с помощью Советника по вопросам Обновления.

    3. Установите Build configuration на Faster Runs.

  • Если Compiler optimization level установлен в Custom:

    1. Скопируйте Custom compiler optimization flags в текстовый файл.

    2. Установите Compiler optimization level на Optimizations off (faster builds).

    3. Обновите модель с помощью Советника по вопросам Обновления.

    4. Установите Build configuration на Specify.

    5. Чтобы выполнить ту же оптимизацию, отредактируйте параметры компилятора.

  • Если Template makefile использует индивидуально настраиваемый make-файл шаблона, этот случай не может быть обновляемым. Однако можно попробовать следующее:

    1. Обновите Template makefile, чтобы использовать make-файл по умолчанию для системного конечного файла.

      Примечание

      Чтобы получить имя make-файла по умолчанию, измените System target file, нажмите Apply, возвратите его и нажмите Apply снова.

    2. Обновите модель с помощью Советника по вопросам Обновления.

    3. Если make-файл шаблона содержит опции инструмента сборки, такие как компиляторная оптимизация отмечает, установите Build configuration на Specify и обновите опции.

    4. Если make-файл шаблона использует сделанные на заказ инструменты, создайте и укажите пользовательский набор инструментальных средств, как описано в Пользовательской Регистрации Набора инструментальных средств. Затем установите параметр Toolchain, чтобы использовать пользовательский набор инструментальных средств.

      Примечание

      После регистрации пользовательского набора инструментальных средств обновите Toolchain, чтобы использовать пользовательский набор инструментальных средств.

    5. Если make-файл шаблона содержит пользовательские правила и логику, эти индивидуальные настройки не могут быть применены к обновленной модели.

Подход с шаблоном make-файла

Когда System target file установлен в tlc файл, который использует подход make-файла шаблона, программное обеспечение, отображает Compiler optimization level, Generate makefile, Make command и параметры Template makefile.

Задайте, сгенерировать ли make-файл

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

Задайте команду сборки

Каждый шаблон основанный на make-файле системный конечный файл имеет связанное make команда. Генератор кода использует эту внутреннюю команду MATLAB, чтобы управлять процессом сборки. Команда появляется в поле Make command и запускается, когда вы запускаете сборку.

Большинство системных конечных файлов использует команду по умолчанию, make_rtw. Сторонние системные конечные файлы могли предоставить другого make команда. См. документацию от поставщика.

В дополнение к имени make команда, можно предоставить опции make-файла в поле Make command. Эти опции могли включать специфичные для компилятора опции, включать пути и другие параметры. Когда процесс сборки вызывает make утилита, эти опции передаются make командная строка, которая добавляет их в полные флаги, передала компилятору.

Обработайте Make-файлы по шаблону и Составьте списки Опций опции Make command, которые можно использовать с каждым поддерживаемым компилятором.

Задайте make-файл шаблона

Поле Template makefile имеет эти функции:

  • Если вы выбрали системный конечный файл с Системным Браузером Конечного файла, это поле отображает имя файла языка MATLAB, который выбирает make-файл шаблона для вашей среды разработки. Например, в Параметрах конфигурации Модели: Генерация кода, поле Template makefile отображает grt_default_tmf, указание, что процесс сборки вызывает grt_default_tmf.m.

    Обработайте Make-файлы по шаблону и Сделайте Опции, дает подробное описание логики, которой процесс сборки выбирает make-файл шаблона.

  • В качестве альтернативы можно явным образом ввести имя определенного make-файла шаблона (включая расширение) или файл языка MATLAB, который возвращает make-файл шаблона в этом поле. Используйте этот подход, если вы используете системный конечный файл, который не появляется в Системном Браузере Конечного файла. Например, используйте этот подход, если вы записали свой собственный make-файл шаблона для пользовательского системного конечного файла.

Если вы задаете свой собственный make-файл шаблона, несомненно, будут включать расширение файла. Если вы не используете расширение, процесс сборки пытается найти и выполнить файл с дополнительным .m (то есть, файл языка MATLAB). Make-файл шаблона (или файл языка MATLAB, который возвращает make-файл шаблона) должен быть на пути MATLAB. Чтобы определить, является ли файл на пути MATLAB, введите следующую команду в командное окно MATLAB:

which tmf_filename

Сопоставьте make-файл шаблона с набором инструментальных средств

Задайте набор инструментальных средств для процесса сборки make-файла шаблона. Этот пример предоставляет определение для минимального набора инструментальных средств и показывает, как можно сопоставить набор инструментальных средств с make-файлом шаблона, который является копией ert_unix.tmf или ert_vcx64.tmf.

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

function tc = minimalToolchainForTMF
% Create a toolchain object
tc = coder.make.ToolchainInfo('Name', 'Minimal Toolchain for TMF Build');

% Specify that the linker requires a response file instead of 
% including all object file modules on the linker command line
tc.addAttribute('RequiresCommandFile', true);

if ispc
    objExt = '.obj';
else
    objExt = '.o';
end

% Specify source file and object file extension used by the C compiler
tool = tc.getBuildTool('C Compiler');
tool.setFileExtension(  'Source', '.c');
tool.setFileExtension(  'Header', '.h');
tool.setFileExtension(  'Object',   objExt);

% Specify source file and object file extension used by the C++ compiler
tool = tc.getBuildTool('C++ Compiler');
tool.setFileExtension(  'Source', '.cpp');
tool.setFileExtension(  'Header', '.hpp');
tool.setFileExtension(  'Object',   objExt);

Используйте копию ert_unix.tmf или ert_vcx64.tmf как make-файл шаблона.

copyfile(fullfile(matlabroot, 'toolbox', 'coder', ...
                  'compile', 'tmf', 'ert_vcx64.tmf'), ...
                  'ert_copy.tmf')

В make-файле шаблона, т.е. ert_copy.tmf, отредактируйте TOOLCHAIN_NAME макрос.

TOOLCHAIN_NAME = "Minimal Toolchain for TMF Build"

Сопоставьте набор инструментальных средств с make-файлом шаблона.

  1. Запустите файл определения набора инструментальных средств, который генерирует ToolchainInfo объект, tc.

    tc = minimalToolchainForTMF;

  2. Сохраните ToolchainInfo возразите против файла MAT.

    save('tcMinimal','tc')

  3. Укажите набор инструментальных средств в RTW.TargetRegistry.

    1. Поместите этот код в rtwTargetInfo.m файл.

      function rtwTargetInfo(tr)
      tr.registerTargetInfo(@loc_createToolchain);
      end
      
      function config = loc_createToolchain
      config(1) = coder.make.ToolchainInfoRegistry;
      config(1).Name = 'Minimal Toolchain for TMF Build';
      config(1).FileName = fullfile(fileparts(mfilename('fullpath')),...
          'tcMinimal.mat');
      config(1).TargetHWDeviceType = {'*'};
      config(1).Platform =  {computer('arch')};
      end

    2. Сохраните файл в текущей рабочей папке или в папке, которая находится на пути поиска файлов MATLAB.

    3. Сбросьте TargetRegistry.

      RTW.TargetRegistry.getInstance('reset');

Сопоставьте make-файл шаблона со своей моделью и создайте модель.

set_param(model, 'TemplateMakefile', 'ert_copy.tmf');
slbuild(model);

Задайте TLC для генерации кода

Компилятор выходного языка (TLC) является неотъемлемой частью генератора кода. Это позволяет вам настроить сгенерированный код. Посредством индивидуальной настройки можно произвести специфичный для платформы код, или можно включить собственные алгоритмические изменения для скорости выполнения, размера кода или совместимости с существующими методами, которые вы предпочитаете обеспечивать. Для получения дополнительной информации см. Обзор Компилятора Выходного языка.

Опции TLC, которые вы задаете для генерации кода, появляются в итоговом разделе сгенерированного отчета генерации кода HTML.

Примечание

Параметры командной строки Specifying TLC не добавляют флаги в сделать командную строку.

Можно задать параметры командной строки Target Language Compiler (TLC) и аргументы для генерации кода, использующей параметр модели TLCOptions в a set_param вызов функции. Например,

>> set_param(gcs,'TLCOptions','-p0 -aWarnNonSaturatedBlocks=0')

Некоторое общее использование опций TLC включает следующее:

  • -aVarName=1 объявить переменную TLC и/или присвоить значение ему

  • -IC:\Work задавать включать путь

  • -v получить многословный выход из TLC, обрабатывающего (например, при отладке)

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

Когда вы создаете модель с GenerateMakefile установите на 'on' и GenCodeOnly установите на 'off', программное обеспечение генерирует make-файл и запускает make-файл, чтобы скомпилировать сгенерированный код. Когда компиляция завершена, программное обеспечение создает и сохраняет контрольные суммы для исходных файлов и данных конфигурации.

Если контрольные суммы от предыдущей сборки доступны, когда вы создаете модель:

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

  2. Если программное обеспечение обнаруживает различие, программное обеспечение:

    • Регенерирует make-файл.

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

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

DO_NOT_USE_CHECKSUMS=1
В этом случае программное обеспечение использует метки времени файла, чтобы определить, должно ли оно перекомпилировать сгенерированный код.

Похожие темы