Запустите Polyspace на коде, сгенерированном использованием предыдущих релизов Simulink

Можно использовать более свежий релиз Polyspace® не меняя Simulink® релиз. Смотрите Поддержку Polyspace MATLAB и Simulink из различных релизов.

В таком перекрестном строении используйте функцию pslinkrunCrossRelease чтобы запустить анализ Polyspace на коде, сгенерированном при помощи Embedded Coder®. Если вы используете Polyspace и Simulink из того же релиза, см. «Запуск анализа Polyspace на коде, сгенерированном из модели Simulink».

Необходимое условие

При запуске анализа Polyspace из другого релиза MATLAB® или Simulink:

  • Релиз Polyspace должен быть более свежим по сравнению с релизом Simulink.

  • Ваш релиз Simulink должен быть R2020b или более поздним.

  • Необходимо интегрировать Polyspace с Simulink. См. «Интеграция Polyspace с MATLAB и Simulink».

Это перекрестное строение не поддерживает анализ пользовательского кода в вашей модели Simulink.

Запуск кросс-релизного полипространственного анализа

Чтобы запустить Polyspace анализ кода, сгенерированного при помощи более раннего релиза Simulink, сгенерируйте архив кода из модели Simulink и затем вызовите функцию pslinkrunCrossRelease. Создайте и настройте pslinkoptions объект для изменения строения модели. Список опций строения, которые можно изменить, см. в разделе pslinkrunCrossRelease. Чтобы применить опции анализа Polyspace, используйте файл параметров.

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

    % 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);
    
    Кроме того, создайте папку в расположении с возможностью записи и установите директорию MATLAB на созданную папку.
    mkdir CodeGenFolder;
    cd CodeGenFolder;

  4. Чтобы задать строение модели для анализа Polyspace, используйте 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';
    

  5. Чтобы задать опции анализа Polyspace, создайте файл опций. Файл параметров является текстовым файлом, который содержит опции Polyspace в плоском списке, по одной линии для каждой опции. Например, чтобы включить все проверки и правила кодирования CERT C, создайте текстовый файл в текущей папке, содержащий соответствующие опции.

    % Create Options file
    optFile = 'Options.txt';
    fid = fopen(optFile,'wt');
    option1 = '-checkers all';
    option2 = '-cert-c all';
    fprintf(fid, '%s\n%s', option1, option2);
    fclose(fid);
    См. Опции анализа в Polyspace Code Prover.

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

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

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

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

    %  Locate options file in the current folder
    optionsPath = fullfile(pwd,optFile);
    % Run Polyspace analysis
    [~,resultsFolder] = pslinkrunCrossRelease(model,psOpts,false,optionsPath);
    bdclose(model);
    
    Следите за прогрессом анализа в Командном Окне MATLAB.

Просмотр результатов

В кросс-release рабочем процессе прямые вызовы таких функций, как polyspaceBugFinder или polyspaceCodeProver недоступны. Чтобы открыть результаты, используйте функцию pslinkfun.

  1. Чтобы открыть результаты в пользовательском интерфейсе Polyspace, используйте функцию pslinkfun. Вектор символов resultsFolder содержит полный путь к папке результатов.

    pslinkfun('openresults', '-resultsfolder',resultsFolder);

    Кроме того, загрузите результаты в Polyspace Access. Смотрите Загрузку результатов в Polyspace Access (Polyspace Code Prover Access).

  2. Адресовать результаты. Для получения дополнительной информации смотрите Адрес Polyspace Результаты через исправления ошибок или обоснования.

См. также

| | | (Embedded Coder) | (Simulink)

Похожие темы