Генератор кода поддерживает эти подходы для создания (компиляция и соединение) код, который вы генерируете из моделей Simulink®:
Toolchain — Процесс сборки, который генерирует make-файлы и поддерживает пользовательские наборы инструментальных средств. Этот подход:
Предоставляет управлению вашего процесса сборки с информационными объектами набора инструментальных средств. Можно задать эти объекты с помощью скриптов MATLAB.
Ссылка модели поддержек, SIL и PIL.
Поддержки Simulink Coder™, Embedded Coder® и MATLAB® Coder.
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 включает эти параметры конфигурации:
Набор инструментальных средств – Задает набор сторонних программных инструментов, который создает сгенерированный код. Набор инструментальных средств может включать компилятор, компоновщика, и archiver и другую предварительную сборку или постсоздать инструменты.
Значением по умолчанию Toolchain является Automatically locate an installed toolchain
. Параметр Toolchain отображает имя расположенного набора инструментальных средств чуть ниже Automatically locate an installed toolchain
.
Нажмите кнопку 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
Чтобы видеть, была ли модель обновлена:
Если Toolchain и параметры конфигурации Build configuration заданы, модель была обновлена.
Если параметры конфигурации make-файла, такие как Generate makefile, Make command и Template makefile заданы, модель не была обновлена.
Запустите путем создания рабочей копии модели с помощью File> Save As. Это действие сохраняет исходные параметры модели и параметры конфигурации для ссылки.
Попытайтесь обновить модель с помощью Советника по вопросам Обновления:
На вкладке Modeling, в разделе Evaluate & Manage, выбирают 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 недоступны.
Настройте обработку сборки генерации кода сообщения с помощью пользовательской команды, как объяснено в Настраивают Обработку Сборки Постгенерации кода.
Каждый шаблон основанный на make-файле системный конечный файл имеет связанный make
команда. Генератор кода использует эту внутреннюю команду MATLAB, чтобы управлять процессом сборки. Команда появляется в поле Make command и запускается, когда вы запускаете сборку.
Большинство системных конечных файлов использует команду по умолчанию, make_rtw
. Сторонние системные конечные файлы могли предоставить другой make
команда. См. документацию от поставщика.
В дополнение к имени make
команда, можно предоставить опции make-файла в поле Make command. Эти опции могли включать специфичные для компилятора опции, включать пути и другие параметры. Когда процесс сборки вызывает make
утилита, эти опции передаются make
командная строка, которая добавляет их в полные флаги, передала компилятору.
Обработайте Make-файлы по шаблону и Составьте списки Опций опции Make command, которые можно использовать с каждым поддерживаемым компилятором.
Поле 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-файлом шаблона, который является копией 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) является неотъемлемой частью генератора кода. Это позволяет вам настроить сгенерированный код. Посредством индивидуальной настройки можно произвести специфичный для платформы код, или можно включить собственные алгоритмические изменения для скорости выполнения, размера кода или совместимости с существующими методами, которые вы предпочитаете обеспечивать. Для получения дополнительной информации см. Обзор Компилятора Выходного языка.
Опции 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, обрабатывающего (например, при отладке)
Когда вы создаете модель с GenerateMakefile
установите на 'on'
и GenCodeOnly
установите на 'off'
, программное обеспечение генерирует make-файл и запускает make-файл, чтобы скомпилировать сгенерированный код. Когда компиляция завершена, программное обеспечение создает и сохраняет контрольные суммы для исходных файлов и данных конфигурации.
Если контрольные суммы от предыдущей сборки доступны, когда вы создаете модель:
Программное обеспечение использует контрольные суммы, чтобы определить, отличаются ли исходные файлы и данные конфигурации от предыдущей сборки.
Если программное обеспечение обнаруживает различие, программное обеспечение:
Регенерирует make-файл.
Перекомпилировал сгенерированный код.
Если процесс сборки использует make-файл шаблона, можно отключить использование контрольных сумм путем добавления этого текста в make-файл шаблона:
DO_NOT_USE_CHECKSUMS=1