exponenta event banner

Выполнение анализа Polyspace для кода, созданного с помощью встроенного кодера

При создании кода из модели Simulink ® с помощью Embedded Coder ® или TargetLink ® можно проанализировать сгенерированный код на наличие ошибок или ошибок во время выполнения с помощью Polyspace ® из среды Simulink. Нет необходимости настраивать проект Polyspace вручную.

В этом разделе для создания кода используется встроенный кодер. Анализ кода, созданного TargetLink, см. в разделе Выполнение анализа Polyspace для кода, созданного с помощью TargetLink.

Учебное пособие по конкретной модели см. в разделе Выполнение анализа полиспейса для кода, созданного на основе модели Simulink.

Предпосылки

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

Создание и анализ кода

Настройка создания кода и создание кода

Чтобы настроить создание кода и создать код из модели, выполните одно из следующих действий.

  • На вкладке Приложения выберите Встроенный кодер. Затем на вкладке C Code выберите Quick Start. Следуйте инструкциям на экране.

  • На вкладке C Code щелкните Settings и настройте генерацию кода с помощью параметров конфигурации Simulink. Главные параметры для установки:

    • Тип (Simulink): Выбрать фиксированный шаг.

    • Решатель (Simulink): Выберите автоматический (Automatic solver selection) или дискретный (без непрерывных состояний).

    • Системный целевой файл (Simulink Coder): Ввод ert.tlc или autosar.tlc. При выводе целевых файлов из ert.tlc, их также можно указать.

    • Code-to-model (Embedded Coder): выберите этот параметр, чтобы включить ссылки из кода в модель.

    Полный список устанавливаемых параметров см. в разделе Рекомендуемые параметры конфигурации модели для анализа в пространстве.

    Либо запустите помощник по созданию кода с целью Polyspace и проверьте, установлены ли уже требуемые параметры. См. раздел Настройка модели для целей создания кода с помощью помощника по созданию кода (Embedded Coder).

    Чтобы создать код из модели, на вкладке Код C (C Code) выберите Создать код (Generate Code). За ходом создания кода можно следить в программе Diagnostic Viewer.

Настройка анализа кода

На вкладке «Приложения» выберите «Верификатор кода Polyspace». На вкладке «Полиспейс»:

  1. Выберите продукт для запуска: поиск ошибок или проверка кода.

  2. Выберите Параметры. При необходимости измените значения этих параметров по умолчанию.

    Полный список параметров для установки см. в разделе Анализ полиспейса в Simulink.

Анализ кода

Чтобы проанализировать код, созданный в модели, щелкните в любом месте холста. В поле Analyze Code from отображается имя модели. Выберите Выполнить анализ (Run Analysis).

При использовании встроенного кодера при нажатии кнопки «Выполнить анализ» программа Polyspace проверяет наличие созданного кода. Если созданный код отсутствует, Polyspace сначала запускает процесс создания кода, а затем начинает анализ.

Если на текущую модель ссылаются в другой модели и требуется проверить созданный код в контексте, на который ссылается модель, вместо параметра Код, созданный как верхняя модель (Code Generated as Top Model) используйте параметр Код, созданный как ссылка на модель (Code Generated as Model Reference). В последнем случае Polyspace не запускает автоматическое создание кода при отсутствии сгенерированного кода. При анализе кода, созданного как ссылка на модель, создайте код перед выполнением анализа Polyspace.

За ходом анализа можно следить в окне команд MATLAB.

Результаты открываются автоматически, если явно не отключено. По умолчанию результаты сохраняются в папке results_ModelName в текущей папке. Каждый новый прогон перезаписывает предыдущие результаты. Можно изменить папки по умолчанию или сохранить результаты в проекте Simulink. Чтобы внести эти изменения, на вкладке «Полиспейс» выберите «Параметры».

Если результаты закрыты и их нужно открыть позже, на вкладке Полиспейс (Polyspace) выберите Результаты анализа (Analysis Results). Чтобы открыть результат перед последним выполнением, выберите Открыть предыдущие результаты и перейдите в папку, содержащую предыдущие результаты.

Обзор результатов анализа

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

Результаты отображаются в интерфейсе пользователя Polyspace на панели Список результатов (Results List). Щелкните каждый результат, чтобы увидеть исходный код на панели Источник (Source) и сведения на панели Сведения о результате (Result Details). См. также:

Переход от кода к модели

Ссылки в комментариях кода показывают блоки, которые формируют последующие строки кода. Чтобы увидеть блоки в модели, щелкните имена блоков в ссылках. При возникновении проблем см. раздел Устранение неполадок при переходе от кода к модели.

Можно также щелкнуть правой кнопкой мыши имя переменной и выбрать Перейти к модели (Go to Model). Этот параметр доступен не для всех переменных. Непосредственно в блок Simulink можно проследить только подмножество переменных исходного кода. Для такой переменной доступны опции Перейти к модели (Go to Model). Дополнительные сведения о том, какие переменные в сгенерированном коде можно отслеживать в блоках Simulink, см. в разделе Элементы модели Trace Simulink в сгенерированном коде (встроенный кодер).

Устранить проблему

Выясните, связаны ли проблемы в коде с недостатками конструкции в модели.

Недостатки конструкции в модели могут привести к проблемам в созданном коде. Например:

  • Созданный код может быть свободен от определенных ошибок времени выполнения только для определенного диапазона параметра блока. Чтобы устранить эту проблему, можно изменить класс хранения этого параметра блока или использовать данные калибровки для анализа с помощью параметра конфигурации Tunable parameters.

  • Сгенерированный код может быть свободен от определенных ошибок времени выполнения только для определенного диапазона входных данных. Чтобы определить этот безошибочный диапазон, можно указать минимальное и максимальное значения для сигналов блока Inport. В анализе Polyspace используется этот ограниченный диапазон. См. раздел Работа с диапазонами сигналов в блоках (Simulink).

  • Некоторые переходы в диаграммах Stateflow ® могут быть недоступны.

При включении рукописного кода C/C + + в S-функциональные блоки анализ Polyspace может выявить возможные проблемы интеграции между рукописным и сгенерированным кодом. Также можно анализировать рукописный код изолированно. См. раздел Выполнение анализа полиспейса по коду S-функции.

Аннотирование блоков для выравнивания проблем

Если не требуется вносить изменения в модель в ответ на результат Polyspace, аннотируйте соответствующие блоки. После аннотирования блока операции с кодом, созданные из блока, показывают результаты, предварительно заполненные комментариями. При аннотировании блока подсистемы или блока, который приводит к вызову функции, операции с кодом, созданные из блока, не отображают ваши комментарии в результатах анализа. Если блок является таблицей подстановки, включите Stub lookup tables вместо использования аннотаций. Посмотрите Stub lookup tables

В коде, созданном с помощью встроенного кодера, известны отклонения от MISRA C ®: 2012. См. обоснование отклонений для MISRA C:2012 Compliance (Embedded Coder). Выравнивание известных проблем путем аннотирования блоков.

Аннотации в блоках Simulink или в сгенерированном коде не учитывают историю анализа. При обновлении модели результаты Polyspace могут измениться, в то время как аннотации остаются без изменений. Обновление модели может привести к устареванию существующих аннотаций. Проверьте аннотации при обновлении модели или созданного кода.

Аннотирование блоков через пользовательский интерфейс пространства

При использовании встроенного кодера для создания кода можно аннотировать блоки Simulink непосредственно через интерфейс пользователя Polyspace. Найдите проблему, которую необходимо аннотировать, а затем введите сведения о проверке, добавив сведения о серьезности, состоянии и дополнительные примечания на панели Сведения о результатах. Например, в интерфейсе пользователя Polyspace:

  • Установите в поле Статус проблемы значение To Investigate

  • Задайте для комментария к проблеме значение Might Impact "Module"

В исходном коде щелкните правой кнопкой мыши переменную, показывающую проблему, и в контекстном меню выберите «Аннотировать блок».

Информация проверки передается в редактор Simulink в виде аннотации блока, где выделен аннотированный блок.

Блок Simulink можно аннотировать несколько раз. Последующие аннотации блока добавляются к предыдущим аннотациям. Эти аннотации невозможно просмотреть в редакторе Simulink. При анализе созданного кода с помощью функции «Полиспейс» (Polyspace) эти аннотации отображаются в виде сведений о проверке на панели «Сведения о результатах» (Result details) пользовательского интерфейса «Полиспейс» (Polyspace).

Polyspace использует предоставленную пользователем информацию для предварительного заполнения аннотаций в Simulink. Комментарии, заданные в интерфейсе пользователя Polyspace, отображаются в двойных кавычках в поле Комментарий в Simulink. Если в комментарии в интерфейсе пользователя Polyspace имеются двойные кавычки, они заменяются в Simulink одиночными кавычками.

Опция «Аннотировать блок» доступна для элементов кода, которые можно отслеживать в блоке Simulink. Дополнительные сведения см. в разделе Элементы модели Trace Simulink в сгенерированном коде (встроенный кодер).

Аннотирование блоков в редакторе Simulink

Для аннотирования блока в редакторе Simulink выберите блок и на вкладке «Полиспейс» выберите «Добавить аннотацию». В окне Аннотация пространства (Polyspace Annotation) выполните следующие действия.

  • Выберите тип результата Polyspace, который требуется аннотировать, из раскрывающегося меню. Annotation Type.

  • Если требуется аннотировать несколько результатов одного типа, введите в текстовое поле разделенный запятыми список акронимов результатов. См.:

  • Если требуется аннотировать только один результат, установите флажок Только 1. Текстовое поле преобразуется в раскрывающееся меню. Выберите в этом раскрывающемся меню результат, который требуется аннотировать.

  • В соответствующих текстовых полях введите статус, степень серьезности и комментарий, которые необходимо назначить результатам.

В окне Аннотация пространства (Polyspace Annotation) можно одновременно аннотировать один тип результата Polyspace. Аннотирование нескольких типов результатов. многократно откройте окно Аннотации пространства (Polyspace Annotation). Каждый раз добавьте аннотацию, соответствующую одному типу результата Polyspace. Различные аннотации добавляются друг к другу. Эти аннотации невозможно просмотреть в редакторе Simulink. При анализе созданного кода с помощью функции «Полиспейс» (Polyspace) эти аннотации отображаются в виде сведений о проверке на панели «Сведения о результатах» (Result details) пользовательского интерфейса «Полиспейс» (Polyspace).

Иногда операции в сгенерированном коде вызывают оранжевые проверки в средстве проверки кода. Предположим, что операция потенциально переполняется. Созданный код защищает от переполнения, следуя операции с насыщением. Polyspace по-прежнему помечает возможное переполнение как оранжевую проверку. Чтобы обосновать эти проверки с помощью комментариев кода, укажите параметр конфигурации Аннотации оператора (Embedded Coder).

При копировании аннотированного блока и последующем его использовании в другой модели или в другом положении в той же модели измененный контекст может привести к неправильному отображению аннотации.

  • Polyspace не допускает аннотирование в блоках внутри библиотек и неатомных подсистем, поскольку эти блоки используются повторно во многих различных контекстах. Например, нельзя аннотировать блок внутри блока библиотеки и выравнивать результаты для всех экземпляров блока библиотеки.

  • Simulink не сохраняет аннотации Polyspace в блоках, которые копируются в другую модель или в другое положение в той же модели.

Связанные темы