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

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

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

    • Обеспечивает управление процессом сборки с помощью информационных объектов набора инструментальных средств. Определить эти объекты можно с помощью скриптов MATLAB.

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

    • Поддерживает Simulink Coder™, Embedded Coder®, и MATLAB® Кодер.

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

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

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

    • Поддерживает Simulink Coder и Embedded Coder.

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

  • ert.tlc, ert_shrlib.tlc, grt.tlcили любой системный целевой файл, совместимый с набором инструментальных средств, процесс сборки по умолчанию использует подход набора инструментальных средств.

  • Любой несоответствующий набору инструментальных средств системный целевой файл, процесс сборки использует подход make-файла шаблона (Embedded Coder).

Переключаться с подхода набора инструментальных средств на подход с шаблоном 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 -- Задает набор сторонних программных инструментов, который создает сгенерированный код. Набор инструментальных средств может включать компилятор, линкер и архиватор, а также другой предварительный сборник или инструменты пост-сборки.

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

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

  • Build configuration -- Задает параметры оптимизации. По умолчанию 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

Примечание

Чтобы обновить модели с помощью пользовательского системного целевого файла для использования подхода набора инструментальных средств, смотрите Support Toolchain Approach with Custom 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. В окне Upgrade Advisor выберите Check and update model to use toolchain approach to build generated code и нажмите Run This Check.

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

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

  • Compiler optimization levelOptimizations off (faster builds)

  • Generate makefile - Включено

  • Template makefile - шаблон make-файла целевого системного файла

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

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

  • Если Generate makefile отключен, это дело невозможно обновить. Однако можно попробовать включить ее и обновить модель с помощью Upgrade Advisor.

  • Если для Compiler optimization level задано значение Optimizations on (faster runs):

    1. Установите Compiler optimization level, чтобы Optimizations off (faster builds).

    2. Обновите модель с помощью Upgrade Advisor.

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

  • Если для Compiler optimization level задано значение Custom:

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

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

    3. Обновите модель с помощью Upgrade Advisor.

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

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

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

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

      Примечание

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

    2. Обновите модель с помощью Upgrade Advisor.

    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 командная строка, которая добавляет их к общим флагам, переданным компилятору.

В Template MakeFiles и Make Options перечислены опции Make command, которые можно использовать с каждым поддерживаемым компилятором.

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

Поле Template makefile имеет следующие функции:

  • Если вы выбрали системный целевой файл с System Target File Browser, в этом поле отображается имя языкового файла MATLAB, который выбирает шаблон make-файла для вашей среды разработки. Например, в Model Configuration Parameters: Code Generation, в Template makefile поле отображается grt_default_tmf, что указывает на то, что процесс сборки вызывает grt_default_tmf.m.

    В шаблонах MakeFiles и Make Options приведено подробное описание логики, с помощью которой процесс сборки выбирает файл makeFile шаблона.

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

Если вы задаете свой собственный шаблон make-файла, обязательно включите расширение имени файла. Если вы опускаете расширение, процесс сборки пытается найти и выполнить файл с расширением .m (то есть языковой файл MATLAB). Файл создания шаблона (или файл языка MATLAB, который возвращает файл создания шаблона) должен быть в пути 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"

Связать набор инструментов с файлом создания шаблона.

  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 для генерации кода

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

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

Примечание

Установка опций командной строки TLC не добавляет флаги в командную строку make.

Можно задать опции командной строки Target Language Compiler (TLC) и аргументы для генерации кода, используя параметр модели TLCOptions в 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
В этом случае программное обеспечение использует метки времени файла, чтобы определить, следует ли ему перекомпилировать сгенерированный код.

Похожие темы