Выберите Build Approach и Configure Build Process

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

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

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

    • Ссылка модели поддержек, SIL и PIL.

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

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

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

    • Ссылка модели поддержек, SIL и PIL.

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

Системный параметр конечного файла, расположенный в Configuration Parameters> панель Code Generation, позволяет вам выбрать процесс сборки для модели. Когда вы устанавливаете 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 включает:

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

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

    Нажмите кнопку Validate для Configuration Parameters> Code Generation> Build process> параметр Toolchain settings, чтобы проверять, что набор инструментальных средств присутствует, и подтвердите это, генератору кода потребовали, чтобы информация использовала набор инструментальных средств. Получившийся Отчет Валидации дает передачу/сбой для выбранного набора инструментальных средств и идентифицирует проблемы, чтобы решить.

  • Параметр Конфигурации сборки позволяет вам выбрать или настроить настройки оптимизации. По умолчанию 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. Откройте образцовые параметры конфигурации путем нажатия Ctrl+E.

  2. Выберите Configuration Parameters> Code Generation.

  3. Если подпанель Build process содержит Toolchain и параметры Build configuration, модель была уже обновлена.

    Если область Build process отображает параметры Makefile configuration, такие как Generate makefile, Make command и Template makefile, программное обеспечение не обновило модель.

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

Попытайтесь обновить модель с помощью Советника по вопросам Обновления:

  1. В вашей модели выберите Analysis> Model Advisor> 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-файл шаблона использует сделанные на заказ инструменты, создайте и укажите пользовательский набор инструментальных средств, как описано в Пользовательской Регистрации Набора инструментальных средств (MATLAB Coder). Затем установите параметр 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,'rtw','c','ert','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');
rtwbuild(model);

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

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

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

Примечание

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

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

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

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

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

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

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

Похожие темы