Генерация кода Advisor рассматривает вашу модель на основе заданных вами целей. Если предопределенная эффективность, трассируемость, меры безопасности и отладка не соответствуют вашим требованиям, можно создать пользовательские цели.
Чтобы создать пользовательские цели:
Создайте цель и добавьте параметры и проверки к этой новой цели.
Создайте цель на основе существующей цели, затем добавьте, измените и удалите параметры и проверки в рамках этой новой цели.
Когда вы создаете пользовательскую цель, вы задаете значения параметров конфигурации, которые просматривает Генерация кода Advisor. Можно использовать следующие методы:
addParam
- Добавьте параметры и укажите значения, которые Code Generation Advisor рассматривает в Check model configuration settings against code generation objectives.
modifyInheritedParam
- Изменение унаследованных значений параметров, которые анализирует Code Generation Advisor в Check model configuration settings against code generation objectives.
removeInheritedParam
- Удаление унаследованных параметров из новой цели, основанной на существующей цели. Когда вы выбираете несколько целей, если другой выбранный объект включает этот параметр, Генерация кода Advisor рассматривает значение параметров в Check model configuration settings against code generation objectives.
Цели включают проверку Check model configuration settings against code generation objectives по умолчанию. Когда вы создаете пользовательский объект, вы задаете список дополнительных проверок, связанных с пользовательским объектом. Можно использовать следующие методы:
addCheck
- Добавить проверки в Code Generation Advisor. При выборе пользовательской цели в Генерации кода Advisor отображается проверка, если только вы не задаете дополнительную цель с более высоким приоритетом, исключающим проверку.
Например, добавьте проверку в Генерация Кода Advisor, чтобы включить собственную проверку в процесс автоматической проверки модели.
excludeCheck
- Исключить проверки из Code Generation Advisor. Когда вы выбираете несколько целей, если вы задаете дополнительную цель, которая включает эту проверку в качестве цели более высокого приоритета, Генерация Кода Advisor отображает эту проверку.
Для примера исключить проверку из Генерации кода Advisor, когда проверка занимает много времени.
removeInheritedCheck
- Удаление унаследованных чеков из новой цели, основанной на существующей цели. Когда вы выбираете несколько целей, если другая выбранная цель включает эту проверку, Генерация кода Advisor отображает проверку.
Например, удаление унаследованного чека, а не исключение чека, когда чек обрабатывается долго, но чек важен для другой цели.
Когда вы основываете новую цель на существующей цели, можно определить, какие проверки и параметры содержит существующая цель. Советник по Генерации кода содержит список проверок в каждой цели.
Для примера, Efficiency
цель включает проверки, которые можно увидеть в Генерацию кода Advisor.
Откройте rtwdemo_rtwecintro
модель.
Задайте конечный объект на основе ERT.
На C Code вкладке нажмите C/C++ Code Advisor.
В окне Системный селектор выберите модель или подсистему, которую вы хотите просмотреть, и нажмите OK.
В Code Generation Advisor на панели Code Generation Objectives выберите цели генерации кода. Когда вы выбираете цели, на левой панели Генерации кода Advisor обновляет список проверок, выполняемых в вашей модели. В данном примере выберите Execution efficiency
. В Available objectives дважды кликните мышью Execution efficiency
. Execution efficiency
добавляется к Selected objectives - prioritized.
На левой панели Генерации кода Advisor перечисляет проверки Execution efficiency
цель. Первая проверка, Check model configuration settings against code generation objectives, список параметров и значений, заданных целью. Для примера в Генерацию кода Advisor отображается список параметров и рекомендуемых значений в Execution efficiency
цель. Чтобы увидеть список параметров и значений:
Запуск Check model configuration settings against code generation objectives.
Нажмите Modify Parameters.
Повторите проверку.
В результатах проверки Генерации кода Advisor отображает список параметров и рекомендуемых значений для Execution efficiency
цель.
Чтобы создать пользовательскую цель:
Создайте sl_customization.m
файл.
Задайте пользовательские цели в одной sl_customization.m
только файл или программа генерирует ошибку. Эта проблема верна, даже если у вас есть несколько sl_customization.m
файл на вашем MATLAB® путь.
Кроме
папка, не помещать matlabroot
/ работаsl_customization.m
файл в корневой папке MATLAB или ее подпапках. В противном случае программа игнорирует индивидуальные настройки, заданные в файле.
Создайте sl_customization
функция, которая принимает один аргумент. Когда программное обеспечение вызывает функцию, значение этого аргумента является Simulink® менеджер индивидуальной настройки. В функции:
Чтобы создать указатель на цель генерации кода, используйте ObjectiveCustomizer
конструктор.
Чтобы зарегистрировать функцию обратного вызова для пользовательских целей, используйте ObjectiveCustomizer.addCallbackObjFcn
способ.
Чтобы добавить вызов для выполнения функции обратного вызова, используйте ObjectiveCustomizer.callbackFcn
способ.
Для примера:
function sl_customization(cm) %SL_CUSTOMIZATION objective customization callback objCustomizer = cm.ObjectiveCustomizer; index = objCustomizer.addCallbackObjFcn(@addObjectives); objCustomizer.callbackFcn{index}(); end
Создайте функцию обратного вызова MATLAB, которая:
Создает целевые объекты генерации кода при помощи rtw.codegenObjectives.Objective
конструктор.
Добавляет, изменяет и удаляет параметры конфигурации для каждой цели с помощью addParam
, modifyInheritedParam
, и removeInheritedParam
методы.
Включает и исключает проверки для каждой цели при помощи addCheck
, excludeCheck
, и removeInheritedCheck
методы.
Регистрирует цели с помощью register
способ.
В следующем примере показано, как создать цель Reduce RAM Example
. Reduce RAM Example
включает пять параметров и три проверки, которые рассматривает Генерация кода Advisor.
function addObjectives % Create the custom objective obj = rtw.codegenObjectives.Objective('ex_ram_1'); setObjectiveName(obj, 'Reduce RAM Example'); % Add parameters to the objective addParam(obj, 'DefaultParameterBehavior', 'Inlined'); addParam(obj, 'BooleanDataType', 'on'); addParam(obj, 'OptimizeBlockIOStorage', 'on'); addParam(obj, 'EnhancedBackFolding', 'on'); addParam(obj, 'BooleansAsBitfields', 'on'); % Add additional checks to the objective % The Code Generation Advisor automatically includes 'Check model % configuration settings against code generation objectives' in every % objective. addCheck(obj, 'mathworks.design.UnconnectedLinesPorts'); addCheck(obj, 'mathworks.design.Update'); %Register the objective register(obj); end
В следующем примере показано, как создать цель My Traceability Example
на основе существующей цели трассируемости. Пользовательская цель изменяет, удаляет и добавляет параметры, которые просматривает Генерация кода Advisor. Он также добавляет и удаляет проверки из Генерации кода Advisor.
function addObjectives % Create the custom objective from an existing objective obj = rtw.codegenObjectives.Objective('ex_my_trace_1', 'Traceability'); setObjectiveName(obj, 'My Traceability Example'); % Modify parameters in the objective modifyInheritedParam(obj, 'GenerateTraceReportSf', 'Off'); removeInheritedParam(obj, 'ConditionallyExecuteInputs'); addParam(obj, 'MatFileLogging', 'On'); % Modify checks in the objective addCheck(obj, 'mathworks.codegen.SWEnvironmentSpec'); removeInheritedCheck(obj, 'mathworks.codegen.CodeInstrumentation'); %Register the objective register(obj); end
Если вы ранее открыли Генерация Кода Advisor, закройте модель, из которой вы открыли Генерация Кода Advisor.
Обновите диспетчер индивидуальной настройки. В командной строке MATLAB введите sl_refresh_customizations
.
Откройте модель и проверьте новые цели.