exponenta event banner

pslinkrunCrossRelease

Анализ кода C/C + +, созданного R2020b или более новыми версиями встроенного кодера, с использованием другой версии 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.The анализ использует 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, поддерживаемые 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. Чтобы выполнить анализ поиска ошибок, установите 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 (Встроенный кодер). Затем проанализируйте созданный код, выполнив перекрестный анализ 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 (Симулинк).

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

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

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

  4. Чтобы задать опции анализа Polyspace, используйте pslinkoptions объект. Создать этот объект с помощью функции pslinkoptions. Чтобы выполнить анализ поиска ошибок, установите 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. Чтобы выполнить анализ поиска ошибок, установите 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.

  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 (Симулинк).

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

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

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

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

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

Пример: 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