Если вы генерируете код из модели Simulink® при помощи Embedded Coder® или TargetLink®, можно анализировать сгенерированный код для ошибок или ошибок времени выполнения с Polyspace® из окружения Simulink. Вы не должны вручную настраивать проект Polyspace.
Эта тема использует Embedded Coder в генерации кода. Для анализа TargetLink-сгенерированного-кода смотрите Анализ Polyspace Запуска Кода, Сгенерированного с TargetLink.
Для примера с определенной моделью смотрите Анализ Polyspace Запуска Кода, Сгенерированного из Модели Simulink.
Прежде чем вы запустите Polyspace от Simulink, необходимо соединить Polyspace и установки MATLAB®. Смотрите Интегрируют Polyspace с MATLAB и Simulink.
Чтобы сконфигурировать генерацию кода и сгенерировать код из модели, выполнить одно из следующих действий:
На вкладке Apps выберите Embedded Coder. Затем на вкладке C Code выберите Quick Start. Следуйте экранным инструкциям.
На вкладке C Code нажмите Settings и сконфигурируйте генерацию кода через параметры конфигурации Simulink. Главные параметры, чтобы установить:
Тип (Simulink): выберите Fixed-step.
Решатель (Simulink): выберите auto (Automatic solver selection) или Discrete (no continuous states).
Системный конечный файл (Simulink Coder): Введите ert.tlc
или autosar.tlc
. Если вы выводите конечные файлы из ert.tlc
, можно также задать их.
Код к модели (Embedded Coder): Выберите эту опцию, чтобы включить ссылки от кода до модели.
Для полного списка параметров, чтобы установить, смотрите Рекомендуемые Параметры конфигурации Модели для Анализа Polyspace.
В качестве альтернативы запустите Советника Генерации кода с объективным Polyspace и смотрите, устанавливаются ли обязательные параметры уже. Смотрите Конфигурируют Модель для Целей Генерации кода при помощи Советника Генерации кода (Embedded Coder).
Чтобы сгенерировать код из модели, на вкладке C Code, выбирают Generate Code. Можно следовать за успехом генерации кода в Диагностическом Средстве просмотра.
На вкладке Apps выберите Polyspace Code Verifier. На вкладке Polyspace:
Выберите продукт, чтобы запуститься: Bug Finder или Code Prover.
Выберите Settings. В случае необходимости измените значения по умолчанию этих опций.
Настройки от: Позвольте проверять правил кодирования MISRA® в дополнение к проверкам по умолчанию, заданным в настройке проекта. Проверки Средства поиска Ошибки по умолчанию ищут ошибки. Проверки Программы автоматического доказательства Кода по умолчанию ищут ошибки времени выполнения.
Введите, Настраиваемые параметры и Выход: Ограничьте входные параметры, настраиваемые параметры или выходные параметры для более точного анализа Программы автоматического доказательства Кода.
'OutputFolder' : Задайте специализированную папку для результатов. Анализ по умолчанию сохраняет результаты в папке results_
в текущей рабочей папке.modelName
Для полного списка опций, чтобы установить, смотрите Анализ Polyspace в Simulink.
Чтобы анализировать код, сгенерированный из модели, щелкните где угодно на холсте. Поле Analyze Code from показывает имя модели. Выберите Run Analysis.
Если на текущую модель ссылаются в другой модели, и вы хотите проверить сгенерированный код в контексте, где на модель ссылаются вместо Code Generated as Top Model, используйте Code Generated as Model Reference.
Можно следовать за прогрессом анализа в Окне Команды MATLAB.
Результаты открываются автоматически, если явным образом не отключено. По умолчанию результаты сохраняются
в текущей папке. Каждый новый запуск перезаписывает предыдущие результаты. Можно изменить папки по умолчанию или сохранить результаты в проект Simulink. Чтобы внести эти изменения, на вкладке Polyspace, выбирают Settings.results_ModelName в папке
Если вы закрыли результаты и хотите открыть их позже на вкладке Polyspace, выберите Analysis Results. Чтобы открыть результат до последнего запуска, выберите Open Earlier Results и перейдите к папке, содержащей предыдущие результаты.
Результаты появляются в пользовательском интерфейсе Polyspace на панели Results List. Кликните по каждому результату видеть исходный код на панели Source и детали о панели Result Details. Смотрите также:
Ссылки в комментариях к коду показывают блоки, которые генерируют последующие строки кода. Чтобы видеть блоки в модели, кликните по именам блока в ссылках. Если вы сталкиваетесь с проблемами, смотрите Навигацию Поиска и устранения неисправностей от Кода до Модели.
В качестве альтернативы можно щелкнуть правой кнопкой по имени переменной и выбрать Go to Model. Эта опция не доступна для всех переменных.
Займитесь расследованиями, связаны ли проблемы в вашем коде с недостатками дизайна в модели.
Недостатки дизайна в модели могут привести к проблемам в сгенерированном коде. Например:
Сгенерированный код может быть свободен от определенных ошибок времени выполнения только для определенной области значений параметров блоков. Чтобы устранить эту проблему, можно изменить класс памяти тех параметров блоков или использовать калибровочные данные в анализе при помощи Настраиваемых параметров параметра конфигурации.
Сгенерированный код может быть свободен от определенных ошибок времени выполнения только для определенной области значений входных параметров. Чтобы определить эту безошибочную область значений, можно задать минимальное и максимальное значение для блоков-сигналов Inport. Анализ Polyspace использует эту ограниченную область значений. Смотрите работу с Диапазонами сигнала в Блоках (Simulink).
Определенные переходы в графиках Stateflow® могут быть недостижимыми.
Если вы включаете рукописный код C/C++ в Блоки s-function, анализ Polyspace может показать возможные проблемы интегрирования между рукописным и сгенерированным кодом. Можно также анализировать рукописный код в изоляции. Смотрите Анализ Polyspace Запуска Кода S-функции.
Если вы не хотите вносить изменения в ответ на результат Polyspace, аннотируйте соответствующие блоки. После того, как вы аннотируете блок, операции кода, сгенерированные от результатов блока show, предварительно заполненных с вашими комментариями. Если вы аннотируете блок подсистемы или блок, который приводит к вызову функции, операции кода, сгенерированные от блока, не показывают ваши комментарии в результатах анализа. Если блоком является Интерполяционная таблица, включите Stub lookup tables
вместо того, чтобы использовать аннотации.
Чтобы аннотировать блок, выберите блок и на вкладке Polyspace, выберите Add Annotation. Введите следующее:
Список, разделенный запятыми акронимов результата. Чтобы выровнять по ширине только тип результата, выберите Only 1 check.
См.:
Состояние, серьезность и комментарий, который будет присвоен результатам.
Иногда операции в сгенерированном коде, как известно, вызывают оранжевые регистрации Программы автоматического доказательства Кода. Предположим, что операция, как известно, возможно переполняется. Сгенерированный код защищает от переполнения следующим операцию с насыщением. Polyspace все еще отмечает возможное переполнение как оранжевую проверку. Чтобы автоматически выровнять по ширине они посылают багажом комментарии к коду, задайте аннотации Оператора параметра конфигурации (Embedded Coder).
Когда вы снова используете аннотируемый блок в различном положении или модели, измененный контекст может представить неправильную аннотацию. Избегать неправильных аннотаций:
Polyspace не позволяет аннотацию в блоках в библиотеках и неатомарных подсистемах, потому что эти блоки снова используются во многих различных контекстах. Вы не можете аннотировать блок в библиотеке и выровнять по ширине результаты на всех экземплярах блока.
Simulink не сохраняет аннотации Polyspace в блоках, которые копируются в различное положение или модель.