Генератор кода поддерживает эти подходы для создания (компиляция и соединение) код, который вы генерируете из моделей Simulink®:
Toolchain — Процесс сборки, который генерирует make-файлы и поддерживает пользовательские наборы инструментальных средств. Этот подход:
Предоставляет управлению вашего процесса сборки с информационными объектами набора инструментальных средств. Можно задать эти объекты с помощью скриптов MATLAB.
Ссылка модели поддержек, SIL и PIL.
Поддержки Simulink Coder™, Embedded Coder® и MATLAB® Coder.
Template makefile — Процесс сборки, который использует make-файл шаблона с набором инструментальных средств, который вы задаете. Этот подход:
Опционально использует информационный объект набора инструментальных средств.
Ссылка модели поддержек, SIL и PIL.
Simulink Coder поддержек и Embedded Coder.
Системный конечный файл (Simulink Coder) параметр, расположенный в Configuration Parameters> панель Code Generation, позволяет вам выбрать процесс сборки для модели. Когда вы устанавливаете System target file на:
ert.tlc
, ert_shrlib.tlc
, grt.tlc
или любой совместимый набором инструментальных средств системный конечный файл, процесс сборки использует подход набора инструментальных средств по умолчанию.
Любой не набор инструментальных средств совместимый системный конечный файл, процесс сборки использует подход make-файла шаблона.
Можно переключиться от подхода набора инструментальных средств до подхода 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),
Для получения дополнительной информации о совместимых набором инструментальных средств системных конечных файлах, смотрите Подход Набора инструментальных средств Поддержки с Пользовательской Целью (Simulink Coder).
Toolchain settings включает:
Набор инструментальных средств (Simulink Coder), параметр задает набор сторонних программных инструментов, который создает сгенерированный код. Набор инструментальных средств может включать компилятор, компоновщика, archiver, и другую предварительную сборку или постсоздать инструменты, которые загружают и запускают исполняемый файл на целевом компьютере.
Значением по умолчанию Toolchain является Automatically locate an installed toolchain
. Параметр Toolchain отображает имя расположенного набора инструментальных средств чуть ниже Automatically locate an installed toolchain
.
Нажмите кнопку Validate для Configuration Parameters> Code Generation> Build process> параметр Toolchain settings, чтобы проверять, что набор инструментальных средств присутствует, и подтвердите это, генератору кода потребовали, чтобы информация использовала набор инструментальных средств. Получившийся Отчет Валидации дает передачу/сбой для выбранного набора инструментальных средств и идентифицирует проблемы, чтобы решить.
Конфигурация сборки (Simulink Coder) параметр позволяет вам выбрать или настроить настройки оптимизации. По умолчанию 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
Чтобы видеть, была ли модель обновлена:
Откройте образцовые параметры конфигурации путем нажатия Ctrl+E.
Выберите Configuration Parameters> Code Generation.
Если подпанель Build process содержит Toolchain и параметры Build configuration, модель была уже обновлена.
Если область Build process отображает параметры Makefile configuration, такие как Generate makefile, Make command и Template makefile, программное обеспечение не обновило модель.
Запустите путем создания рабочей копии модели с помощью File> Save As. Это действие сохраняет исходные параметры модели и параметры конфигурации для ссылки.
Попытайтесь обновить модель с помощью Советника по вопросам Обновления:
В вашей модели выберите Analysis> Model Advisor> Upgrade Advisor.
В Советнике по вопросам Обновления выберите Check and update model to use toolchain approach to build generated code и нажмите Run This Check.
Выполните предлагаемые действия и/или нажмите Update Model.
Когда вы не можете обновить модель с помощью Советника по вопросам Обновления, один или несколько следующих параметров не установлен в его значение по умолчанию, показанное здесь:
Compiler optimization level — Optimizations off (faster builds)
Generate makefile — Enabled
Template makefile — Система специфичный для конечного файла make-файл шаблона
Make command — make_rtw
без аргументов
Иногда, модель не может быть обновлена. Попробуйте следующую процедуру:
Если Generate makefile отключен, этот случай не может быть обновляемым. Однако можно попытаться включить его и попытаться обновить модель с помощью Советника по вопросам Обновления.
Если Compiler optimization level установлен в Optimizations on (faster runs)
:
Набор Compiler optimization level к Optimizations off (faster builds)
.
Обновите модель с помощью Советника по вопросам Обновления.
Установите Build configuration на Faster Runs
.
Если Compiler optimization level установлен в Custom
:
Скопируйте Custom compiler optimization flags в текстовый файл.
Установите Compiler optimization level на Optimizations off (faster builds)
.
Обновите модель с помощью Советника по вопросам Обновления.
Установите Build configuration на Specify
.
Чтобы выполнить ту же оптимизацию, отредактируйте параметры компилятора.
Если Template makefile использует индивидуально настраиваемый make-файл шаблона, этот случай не может быть обновляемым. Однако можно попробовать следующее:
Обновите Template makefile, чтобы использовать make-файл по умолчанию для системного конечного файла.
Чтобы получить имя make-файла по умолчанию, измените System target file, нажмите Apply, возвратите его и нажмите Apply снова.
Обновите модель с помощью Советника по вопросам Обновления.
Если make-файл шаблона содержит опции инструмента сборки, такие как компиляторная оптимизация отмечает, устанавливает Build configuration на Specify
и обновляют опции.
Если make-файл шаблона использует сделанные на заказ инструменты, создайте и укажите пользовательский набор инструментальных средств, как описано в Пользовательской Регистрации Набора инструментальных средств (MATLAB Coder). Затем установите параметр Toolchain, чтобы использовать пользовательский набор инструментальных средств.
После регистрации пользовательского набора инструментальных средств обновите Toolchain, чтобы использовать пользовательский набор инструментальных средств.
Если make-файл шаблона содержит пользовательские правила и логику, эти индивидуальные настройки не могут быть применены к обновленной модели.
Когда System target file установлен в файл tlc
, который использует подход make-файла шаблона, программное обеспечение отображает Compiler optimization level, Generate makefile, Make command и параметры Template makefile.
Опция Generate makefile задает, должен ли процесс сборки сгенерировать make-файл для модели. По умолчанию процесс сборки генерирует make-файл. Подавите генерацию make-файла, например, в поддержку сделанной на заказ обработки, которая не основана на make-файлах путем очистки Generate makefile. Когда вы очищаете этот параметр:
Make command и опции Template makefile недоступны.
Настройте обработку сборки генерации кода сообщения с помощью пользовательской команды, как объяснено в Настраивают Обработку Сборки Постгенерации кода (Simulink Coder).
Каждый шаблон основанный на make-файле системный конечный файл имеет связанную команду make
. Генератор кода использует эту внутреннюю команду MATLAB, чтобы управлять процессом сборки. Команда появляется в поле Make command и запускается, когда вы запускаете сборку.
Большинство системных конечных файлов использует команду по умолчанию, make_rtw
. Сторонние системные конечные файлы могли предоставить другую команду make
. См. документацию от поставщика.
В дополнение к имени команды make
можно предоставить опции make-файла в поле Make command. Эти опции могли включать специфичные для компилятора опции, включать пути и другие параметры. То, когда процесс сборки вызывает утилиту make
, эти опции передаются командной строке make
, которая добавляет их в полные флаги, передало компилятору.
Обработайте Make-файлы по шаблону и Составьте списки Опций опции Make command, которые можно использовать с каждым поддерживаемым компилятором.
Поле Template makefile имеет эти функции:
Если вы выбрали системный конечный файл с Системным Браузером Конечного файла, это поле отображает имя файла языка MATLAB, который выбирает make-файл шаблона для вашей среды разработки. Например, в Образцовых Параметрах конфигурации: Генерация кода (Simulink Coder), поле 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-файлом шаблона, который является копией 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-файлом шаблона.
Запустите файл определения набора инструментальных средств, который генерирует объект ToolchainInfo
, tc
.
tc = minimalToolchainForTMF;
Сохраните объект ToolchainInfo
в файл MAT.
save('tcMinimal','tc')
Укажите набор инструментальных средств в RTW.TargetRegistry
.
Поместите этот код в файл 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
Сохраните файл в текущей рабочей папке или в папке, которая находится на пути поиска файлов MATLAB.
Сбросьте TargetRegistry
.
RTW.TargetRegistry.getInstance('reset');
Сопоставьте make-файл шаблона со своей моделью и создайте модель.
set_param(model, 'TemplateMakefile', 'ert_copy.tmf'); rtwbuild(model);
Компилятор выходного языка (TLC) является неотъемлемой частью генератора кода. Это позволяет вам настроить сгенерированный код. Посредством индивидуальной настройки можно произвести специфичный для платформы код, или можно включить собственные алгоритмические изменения для скорости выполнения, размера кода или совместимости с существующими методами, которые вы предпочитаете поддерживать. Для получения дополнительной информации см. Обзор Компилятора Выходного языка (Simulink Coder).
Опции 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, обрабатывающего (например, при отладке)