Создайте пользовательские цели генерации кода

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

  1. Откройте rtwdemo_rtwecintro модель.

  2. Задайте конечный объект на основе ERT.

  3. На C Code вкладке нажмите C/C++ Code Advisor.

  4. В окне Системный селектор выберите модель или подсистему, которую вы хотите просмотреть, и нажмите OK.

  5. В 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 цель. Чтобы увидеть список параметров и значений:

  1. Запуск Check model configuration settings against code generation objectives.

  2. Нажмите Modify Parameters.

  3. Повторите проверку.

В результатах проверки Генерации кода Advisor отображает список параметров и рекомендуемых значений для Execution efficiency цель.

Шаги по созданию пользовательских целей

Чтобы создать пользовательскую цель:

  1. Создайте sl_customization.m файл.

    • Задайте пользовательские цели в одной sl_customization.m только файл или программа генерирует ошибку. Эта проблема верна, даже если у вас есть несколько sl_customization.m файл на вашем MATLAB® путь.

    • Кроме matlabroot/ работа папка, не помещать sl_customization.m файл в корневой папке MATLAB или ее подпапках. В противном случае программа игнорирует индивидуальные настройки, заданные в файле.

  2. Создайте 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

  3. Создайте функцию обратного вызова MATLAB, которая:

    В следующем примере показано, как создать цель 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

  4. Если вы ранее открыли Генерация Кода Advisor, закройте модель, из которой вы открыли Генерация Кода Advisor.

  5. Обновите диспетчер индивидуальной настройки. В командной строке MATLAB введите sl_refresh_customizations.

  6. Откройте модель и проверьте новые цели.

Похожие темы