pslinkrunCrossRelease

Анализируйте код C/C + +, сгенерированный R2020b или новыми версиями Embedded Coder, используя другую версию Polyspace, которая является более новой, чем версия Simulink

Описание

пример

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem) запускает Polyspace® анализ кода, сгенерированного из ModelOrSubsystem при помощи Embedded Coder® из более раннего релиза Simulink®.

пример

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem,psOpt) запускает анализ Polyspace кода, сгенерированного из ModelOrSubsystem через более ранний релиз Simulink. В анализе используются опции строения модели, которые заданы в pslinkoptions psOpt объекта.

пример

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem,psOpt,asModelRef) запускает анализ Polyspace кода, сгенерированного как модель-ссылка из ModelOrSubsystem с помощью более раннего релиза Simulink. В анализе используются asModelRef для определения типа сгенерированного кода для анализа - автономного кода или модели-ссылки кода.

пример

[polyspaceFolder, resultsFolder] = pslinkrunCrossRelease(ModelOrSubsystem,psOpt,asModelRef,OptionsFile) запускает анализ Polyspace кода, сгенерированного из ModelOrSubsystem через более ранний релиз Simulink. В анализе используются опции анализа Polyspace, заданные в файле опций OptionsFile.

Примеры

свернуть все

Чтобы запустить анализ Polyspace на коде, сгенерированном при помощи более раннего релиза Simulink, используйте функцию pslinkrunCrossRelease. В анализе используются опции строения, связанные с ModelOrSubsystem. Значение релиза Simulink должно быть R2020b или более поздним. Прежде чем вы запустите анализ, необходимо интегрировать Polyspace с Simulink. См. раздел Интеграция Polyspace с MATLAB или Simulink Installation из более раннего релиза.

  1. Откройте модель Simulink rtwdemo_roll и сконфигурируйте модель для генерации кода.

    % Load the model
    model = 'rtwdemo_roll';
    load_system(model);
    % Configure the Solver
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');

  2. Чтобы включить упаковку сгенерированного кода в архив, установите опцию PackageGeneratedCodeAndArtifacts на true.

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. Создайте временные папки для генерации кода и сгенерируйте код.

    [TEMPDIR, CGDIR] = rtwdemodir();
    slbuild(model);
    

  4. Запустите анализ Polyspace.

    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model);
    bdclose(model);
    
    Вектор символов resultsFolder содержит полный путь к папке результатов.

Чтобы запустить анализ Polyspace с изменёнными строениями модели, используйте pslinkoptions объект. Список строений модели, связанных с анализом Polyspace, который можно изменить, см. в таблице Polyspace Configuration Parameters Поддерживаемые pslinkrunCrossRelease на этой странице. Прежде чем вы запустите анализ, необходимо интегрировать Polyspace с Simulink. См. раздел Интеграция Polyspace с MATLAB или Simulink Installation из более раннего релиза.

  1. Откройте модель Simulink rtwdemo_roll и сконфигурируйте модель для генерации кода.

    % Load the model
    model = 'rtwdemo_roll';
    load_system(model);
    % Configure the Solver
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');

  2. Чтобы включить упаковку сгенерированного кода в архив, установите опцию PackageGeneratedCodeAndArtifacts на true.

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. Создайте временные папки для генерации кода и сгенерируйте код.

    [TEMPDIR, CGDIR] = rtwdemodir();
    slbuild(model);
    

  4. Чтобы задать строения модели для анализа Polyspace, используйте pslinkoptions объект. Создайте этот объект с помощью функции pslinkoptions. Чтобы запустить анализ Bug Finder, установите psOpt.VerificationMode на 'BugFinder'. Чтобы утвердить области значений, заданные в блоке на его переменных входах, задайте psOpts.InputRangeMode как 'DesignMinMax'.

    % Create a Polyspace options object from the model. 
    psOpts = pslinkoptions(model);
    
    % Set model configurtion for the Polyspace analysis.
    psOpts.VerificationMode = 'BugFinder';
    psOpts.InputRangeMode = 'DesignMinMax';
    
    

  5. Запустите анализ Polyspace. Чтобы задать строение модели для анализа Polyspace, установите объект psOpt как необязательный второй аргумент в pslinkrunCrossRelease.

    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpt);
    bdclose(model);
    
    Вектор символов resultsFolder содержит полный путь к папке результатов.

Чтобы ускорить симуляции модели, активируйте ссылочные модели Simulink в качестве целей симуляции. Чтобы сгенерировать модель-ссылку симуляции цели из модели Simulink, сгенерируйте код из ModelOrSubsystem при помощи slbuild с процессом сборки, заданным как ModelReferenceCoderTargetOnly. Упаковать сгенерированный код при помощи packNGo (Embedded Coder). Затем проанализируйте сгенерированный код, запустив перекрестный анализ Polyspace. Прежде чем вы запустите анализ, необходимо интегрировать Polyspace с Simulink. См. раздел Интеграция Polyspace с MATLAB или Simulink Installation из более раннего релиза.

  1. Откройте модель Simulink rtwdemo_roll и сконфигурируйте модель для генерации кода.

    % Load the model
    model = 'rtwdemo_roll';
    load_system(model);
    % Configure the Solver
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');
    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)

  2. Создайте временные папки для генерации кода и сгенерируйте код. Задайте опцию ModelReferenceCoderTargetOnly. Посмотрите slbuild (Simulink).

    [TEMPDIR, CGDIR] = rtwdemodir();
    slbuild(model,'ModelReferenceCoderTargetOnly');
    Сгенерированный код хранится в папке slprj

  3. Чтобы упаковать код, который генерируется как модель-ссылка, используйте функцию packNGo. Найдите файл buildinfo.mat в <working folder>/ slprj/ert/rtwdemo_counter и используйте полный путь к нему в качестве входов packNGo. Эта команда генерирует архив, содержащий сгенерированный код и объект buildinfo.mat. Посмотрите packNGo (Embedded Coder).

    % Locate buildinfo and generate code archive
    buildinfo = fullfile(pwd,'slprj','ert',model,'buildinfo.mat');
    packNGo(buildinfo)

  4. Чтобы задать опции анализа Polyspace, используйте pslinkoptions объект. Создайте этот объект с помощью функции pslinkoptions. Чтобы запустить анализ Bug Finder, установите psOpt.VerificationMode на 'BugFinder'.

    % Create a Polyspace options object from the model. 
    psOpts = pslinkoptions(model);
    
    % Set properties that define the Polyspace analysis.
    psOpts.VerificationMode = 'BugFinder';
    psOpts.InputRangeMode = 'DesignMinMax';
    
    

  5. Запустите анализ Polyspace. Чтобы задать опции анализа Polyspace, установите объект psOpt как необязательный второй аргумент в pslinkrunCrossRelease. Чтобы проанализировать код как модель-ссылку, установите необязательный третий аргумент asModelRef к true.

    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpt,true);
    bdclose(model);
    
    Вектор символов resultsFolder содержит полный путь к папке результатов.

  1. Откройте модель Simulink rtwdemo_roll и сконфигурируйте модель для генерации кода.

    % Load the model
    model = 'rtwdemo_roll';
    load_system(model);
    % Configure the Solver
    configSet = getActiveConfigSet(model);
    set_param(configSet,'Solver','FixedStepDiscrete');
    set_param(configSet, 'SystemTargetFile', 'ert.tlc');

  2. Чтобы включить упаковку сгенерированного кода в архив, установите опцию PackageGeneratedCodeAndArtifacts на true.

    set_param(configSet, 'PackageGeneratedCodeAndArtifacts', true)
    

  3. Создайте временные папки для генерации кода и сгенерируйте код.

    [TEMPDIR, CGDIR] = rtwdemodir();
    slbuild(model);
    

  4. Чтобы задать строение модели для анализа Polyspace, используйте pslinkoptions объект. Создайте этот объект с помощью функции pslinkoptions. Чтобы запустить анализ Bug Finder, установите psOpt.VerificationMode на 'BugFinder'.

    % Create a Polyspace options object from the model. 
    psOpts = pslinkoptions(model);
    
    % Set properties that define the Polyspace analysis.
    psOpts.VerificationMode = 'BugFinder';
    psOpts.InputRangeMode = 'DesignMinMax';
    

  5. Чтобы задать опции анализа Polyspace, создайте файл опций. Файл параметров является текстовым файлом, который содержит опции Polyspace в плоском списке, по одной линии для каждой опции. Например, чтобы включить все шашки Bug Finder и правила кодирования AUTOSAR C++ 14, создайте текстовый файл с именем OptionFile.txt. В текстовом файле введите:

    -checkers all
    -autosarcpp14 all
    Сохраните файл опций. Можно сохранить предыдущие опции в файле параметров с именем Options.txt в рабочей папке по умолчанию.

    См. Опции анализа в Polyspace Bug Finder.

  6. Запустите анализ Polyspace.

    • Чтобы задать строения модели для запуска анализа Polyspace, установите объект psOpt как необязательный второй аргумент в pslinkrunCrossRelease.

    • Поскольку код генерируется как автономный код, задайте третий аргумент asModelRef на false.

    • Чтобы задать опции анализа Polyspace, укажите относительный путь к созданному файлу опций в качестве четвертого аргумента.

    %  Locate options file
    optionsPath = fullfile(userpath,'Options.txt');
    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpts,false,optionsPath);
    bdclose(model);
    
    Вектор символов resultsFolder содержит полный путь к папке результатов.

Входные параметры

свернуть все

Цель анализа, заданная как вектор символов с моделью или системой в одинарных кавычках. Значение по умолчанию является системой, возвращаемой bdroot (Simulink).

Пример: resultsDir = pslinkrunCrossRelease('rtwdemo_roll') где rtwdemo_roll - имя модели.

Типы данных: char

Задает строение модели для анализа Polyspace при помощи pslinkoptions объект. Можно изменить определенные опции анализа путем изменения psOpt, который является объектом, где отдельные поля представляют опции строения модели. Полный список опций, которые можно изменить, см. в этой таблице.

Параметры конфигурации Polyspace поддерживаются pslinkrunCrossRelease

СвойствоОписаниеЗначениеОписание
EnableAdditionalFileListВключите анализ дополнительного списка файлов, заданный как true или false. Используйте с AdditionalFileList опция. truePolyspace проверяет дополнительные файлы, указанные в AdditionalFileList опция.
false (по умолчанию)Polyspace не проверяет дополнительные файлы.
AdditionalFileListСписок дополнительных файлов, подлежащих анализу, задается как массив ячеек файлов. Чтобы добавить эти файлы к анализу, используйте EnableAdditionalFileList опция.массив ячеекPolyspace рассматривает перечисленные файлы для верификации.
VerificationModeРежим анализа Polyspace задается как 'BugFinder', для анализа Bug Finder, или 'CodeProver', для верификации Code Prover.'BugFinder'Polyspace запускает анализ Bug Finder.
CodeProver (по умолчанию)Polyspace запускает анализ Code Prover.
InputRangeModeЗадает область значений входных переменных.'DesignMinMax' (по умолчанию)Polyspace использует входную область значений, заданный в рабочей области или блоке.
'Fullrange'Polyspace использует входы полной области значений.
ParamRangeModeЗадает область значений постоянных параметров.'DesignMinmax'Polyspace использует постоянный параметр области значений заданный в рабочей области или в блоке.
'None' (по умолчанию)Polyspace использует значение параметров, заданных в коде.
OutputRangeModeЗадает выходные значения.'DesignMinMax'Polyspace применяет утверждения к выходам с помощью области значений, заданной в блоке или рабочей области.
'None' (по умолчанию)Polyspace не применяет утверждения к переменным выходам.
ModelRefVerifDepthЗадайте глубину для анализа моделей, на которые ссылается текущая модель.'Current model Only' (по умолчанию)Polyspace анализирует только модель верхней части, не анализируя ссылку на модели. Используйте эту опцию, когда вы ссылаетесь на модели, которые не нужно анализировать, такие как модели библиотеки.
'1'|'2'|'3'Polyspace анализирует ссылки на модели до заданной глубины в иерархии ссылок. Чтобы проанализировать модели, на которые ссылается верхняя часть, задайте свойство ModelRefVerifDepth как '1'. Чтобы анализировать модели, на которые ссылается первый уровень ссылок, задайте это свойство как '2'.
'All'Polyspace проверяет все ссылочные модели.
ModelRefByModelRefVerifУкажите, нужно ли анализировать все ссылочные модели вместе или по отдельности.truePolyspace анализирует верхнюю модель и ссылочные модели вместе. Используйте эту опцию для проверки проблем интегрирования или масштабирования.
false (по умолчанию)Polyspace анализирует верхнюю модель и ссылочные модели индивидуально.
AutoStubLUTОпределяет, как используются интерполяционные таблицы.true (по умолчанию)Polyspace заглушает интерполяционные таблицы и проверяет модель, не анализируя код интерполяционной таблицы.
falsePolyspace включает код интерполяционной таблицы в анализ.
CheckConfigBeforeAnalysisЗадает уровень проверки строения, выполненной до начала анализа Polyspace.'Off'Polyspace проверяет только на ошибки. Анализ останавливается, если обнаружены ошибки.
'OnWarn' (по умолчанию)Polyspace останавливает анализ при обнаружении ошибок и отображает сообщение при обнаружении предупреждений.
'OnHalt'Polyspace останавливает анализ при обнаружении ошибок или предупреждений.

Пример: pslinkrunCrossRelease('rtwdemo_roll', psOpt), где psOpt - объект опций, созданный вызовом pslinkoptions

Индикатор для модели-ссылки анализа, заданный как true или false.

  • Если asModelRef является false (по умолчанию), функция генерирует файлы опций, так что Polyspace анализирует сгенерированный код как автономный код.

  • Если asModelRef является true, функция генерирует файлы опций, так что Polyspace анализирует сгенерированный код как модель-ссылка код.

Пример: pslinkrunCrossRelease('rtwdemo_roll', psOpt,true)

Типы данных: logical

Относительный путь к текстовому файлу, который содержит список опций анализа Polyspace. Файл опций должен иметь каждую опцию в отдельной линии.

Пример: pslinkrunCrossRelease('rtwdemo_roll', psOpt,true,'OptionsFile.txt')

Типы данных: char

Выходные аргументы

свернуть все

Имя папки, содержащей проекты и результаты Polyspace, заданное как вектор символов. Значение по умолчанию этой переменной results_$ModelName$.

Чтобы изменить это значение, смотрите Выходную папку.

Полный путь к подпапке, содержащей результаты Polyspace, заданный как вектор символов.

Папка results_$ModelName$ содержит ваш проект Polyspace и подпапку $ModelName$ содержащие результаты анализа. Эта переменная предоставляет полный путь к подпапке.

Как изменить родительскую папку results_$ModelName$, см. «Выходная папка».

Введенный в R2021a