Использование Simulink® Coder™ Model Advisor проверяет, чтобы сконфигурировать модель для генерации кода.
Проверки встроенного кодера (Embedded Coder)
Проверяйте идентификатор: mathworks.codegen.SubsysCodeReuse
Идентифицируйте CodeReuseSubsystem блоки, которые не используют повторно код.
Состояние | Рекомендуемое действие |
---|---|
Один или несколько блоков CodeReuseSubsystem в модели не используют повторно код. | Измените CodeReuseSubsystem блоки в модели, чтобы они повторно использовали код. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Посмотрите под маски,
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check™.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.codegen.cgsl_0101
Идентифицируйте блоки с помощью индексации на основе одного.
Нулевая индексация более эффективна в сгенерированном коде, чем одна на основе индексации.
Использование нулевой индексации повышает эффективность выполнения сгенерированного кода.
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
Модель или подсистема содержит блоки, настроенные для индексации на основе одного. | Сконфигурируйте блоки для индексации с нулем. Обновляйте поддерживающие блоки. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.codegen.SolverCodeGen
Проверьте решатель модели и настройки строения шага расчета.
Неправильные настройки строения могут помешать генератору кода производить код. Недоопределение шагов расчета может привести к нежелательным результатам. Избегайте генерации кода, который может повредить данные или привести к непредсказуемому поведению.
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
Тип решателя неправильно установлен для генерации кода уровня модели. | В диалоговом окне Параметров конфигурации на панели Solver установите Type |
Опции многозадачной диагностики не установлены в error . | В диалоговом окне Параметров конфигурации на панели Diagnostics установите
|
Вам не нужно изменять настройки решателя, чтобы сгенерировать код из подсистемы. Процесс сборки автоматически изменяется Solver type на fixed-step
при щелчке правой кнопкой мыши по подсистеме и выборе C/C++ Code > Build This Subsystem или C/C++ Code > Generate S-Function из контекстного меню подсистемы.
Проверяйте идентификатор: mathworks.codegen.codeGenSupport
Идентифицируйте блоки, не поддерживаемые генерацией кода.
Эта проверка частично идентифицирует конструкции модели, которые не подходят для генерации кода, как определено в таблицах поддержки блоков Simulink для Simulink Coder и Embedded Coder®. Если вы используете блоки с примечаниями по поддержке для генерации кода, просмотрите информацию и следуйте указанным рекомендациям.
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
Модель или подсистема содержит блоки, которые не должны использоваться для генерации кода. | Рассмотрите замену блоков, перечисленных в результатах. Щелкните элемент из списка сомнительных элементов, чтобы найти условие. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Анализирует содержимое библиотечно связанных блоков.
Анализирует содержимое маскированных подсистем.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Проверяйте идентификатор: mathworks.codegen.toolchainInfoUpgradeAdvisor.check
Проверьте, использует ли модель настройки Toolchain для создания сгенерированного кода.
Проверяет, использует ли модель подход make-файла шаблона или подход набора инструментальных средств для создания сгенерированного кода.
Доступно с Simulink Coder.
Когда вы открываете модель, созданную перед R2013b, которая System target file установлена на ert.tlc
, ert_shrlib.tlc
, или grt.tlc
программа автоматически пытается обновить модель от использования подхода make-файла шаблона до использования подхода набора инструментальных средств.
Если программное обеспечение не обновляло модель, эта проверка определяет причину и, при наличии, рекомендует действия, которые вы можете выполнить, чтобы обновить модель.
Чтобы определить, какой подход использует ваша модель, можно также просмотреть панель Генерация кода в диалоговом окне Параметры конфигурации. Подход набора инструментальных средств использует следующие параметры для создания сгенерированного кода:
Подход make-файла шаблона использует следующие настройки для создания сгенерированного кода:
Compiler optimization level
Custom compiler optimization flags
Generate makefile
Template makefile
Состояние | Рекомендуемое действие | Комментарий |
---|---|---|
Модель сконфигурирована, чтобы использовать подход набора инструментальных средств. | Никаких действий. | Модель была автоматически обновлена. |
Модель не сконфигурирована, чтобы использовать подход набора инструментальных средств. | Модель не может быть автоматически обновлена, чтобы использовать подход набора инструментальных средств. | Системный целевой файл не совместим с набором инструментальных средств. Установите System target file на удовлетворяющий набору инструментальных средств целевой объект, такой как ert.tlc , ert_shrlib.tlc , или grt.tlc . |
Модель не сконфигурирована, чтобы использовать подход набора инструментальных средств. (Значения параметров не являются значениями по умолчанию.) | Модель может быть автоматически обновлена, чтобы использовать подход набора инструментальных средств. Нажмите Update Model. | Параметры устанавливаются на свои значения по умолчанию, кроме Compiler Optimization Level, который установлен Optimizations on (faster runs) . Кликнув Update Model устанавливает Compiler Optimization Level на его значение по умолчанию, Optimizations off (faster builds) , а затем обновляет модель. Обновленная модель Build Configuration установлена на Faster Builds . Сохранение модели делает эти изменения постоянными. |
Модель не сконфигурирована, чтобы использовать подход набора инструментальных средств. (Значения параметров не являются значениями по умолчанию.) | Модель не может быть автоматически обновлена, чтобы использовать подход набора инструментальных средств. | Один или несколько из следующих параметров не имеют значения по умолчанию:
Смотрите модель обновления, чтобы использовать подход набора инструментальных средств |
Щелчок мыши Update model обновляет модель, чтобы использовать подход набора инструментальных средств для создания сгенерированного кода.
Проверяйте идентификатор: mathworks.codegen.codertarget.check
Проверьте и обновите модель целевого процессора, чтобы использовать системный целевой файл ert.tlc.
Проверяйте и обновляйте модели, System target file которых задан в файле, отличном от ert.tlc
и чей целевой компьютер является одним из поддерживаемых процессоров Texas Instruments™ C2000™ для использования ert.tlc
и подобные настройки.
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
System target file установлено на ert.tlc - Embedded Coder . | Никаких действий |
System target file задан файл, отличный от | Выполните соответствующую проверку в Upgrade Advisor:
|
Нажатие Run This Check автоматически устанавливает следующие параметры на панели Code Generation в диалоговом окне Параметры конфигурации модели (Model Configuration Parameters):
System target file параметр в ert.tlc
.
Toolchain параметр, чтобы соответствовать предыдущему набору инструментальных средств.
Build configuration параметр, чтобы соответствовать строению сборки.
Новый рабочий процесс использует подход набора инструментальных средств, который полагается на расширенные make-файлы для создания сгенерированного кода. Это не обеспечивает эквивалент установки параметра Build format равным Project
в предыдущем строении. Поэтому новый рабочий процесс может автоматически сгенерировать проекты IDE в среде CCS 3.3.
Проверяйте идентификатор: mathworks.codegen.realtime2CoderTargetInfoUpgradeAdvisor.check
Проверяйте и обновляйте модели с целями Simulink, которые значительно изменились через различные релизы MATLAB®.
Сохраните модель, которую вы обновили, чтобы работать с текущей установкой MATLAB.
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
Модель использует целевой объект, который значительно изменился со времени релиза MATLAB, в котором он был первоначально сохранен. | Сохраните модель |
Модель не использует цель Simulink или использует последнюю версию цели. | Никаких действий |
Модель автоматически обновляется. | Сохраните модель |
Недопустимое строение режима external mode. | На панели Configuration Parameters > Interface обновите параметры режима external mode так, чтобы они совпадали с характеристиками вашего целевого подключения. |
Модель повреждена. | Закройте и снова откройте модель. Если проблема сохраняется, сбросьте Configuration Parameters > Hardware Implementation > Hardware board. |
Нажатие кнопки Save model обновляет модель, чтобы работать с текущей установкой MATLAB и сохраняет модель.
Проверяйте идентификатор: mathworks.codegen.ConstraintsTunableParam
Идентифицируйте блоки с ограничениями настраиваемых параметров.
Lookup Table блоки имеют строгие ограничения, когда они настраиваются. Если вы нарушаете ограничения блоков интерполяционной таблицы, сгенерированный код выдает неправильные ответы.
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
Lookup Table блоки имеют настраиваемые параметры. | При настройке параметров во время симуляции или при запуске сгенерированного кода необходимо:
|
Lookup Table (2-D) блоки имеют настраиваемые параметры. | При настройке параметров во время симуляции или при запуске сгенерированного кода необходимо:
|
Lookup Table (n-D) блоки имеют настраиваемые параметры. | При настройке параметров во время симуляции или при запуске сгенерированного кода необходимо сохранить увеличивающуюся монотонность значений точек по оси Х для каждой < reservedrangesplaceholder0 > размерности таблицы. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики из этой проверки.
Обзор исключения Model Advisor (Simulink Check)
Проверяйте идентификатор: mathworks.codegen.MdlrefConfigMismatch
Идентифицируйте настройки параметров конфигурации модели, которые не совпадают с настройками параметров конфигурации верхней части.
Генератор кода не может создать код для топ-моделей, которые содержат ссылки на модели с различными, несовместимыми настройками параметра конфигурации.
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
Верхняя модель и ссылочная модель имеют несогласованные настройки параметров конфигурации модели. | Измените указанные настройки конфигурации модели. |
Проверяйте идентификатор: mathworks.codegen.SampleTimesTaskingMode
Настройте шаг расчета и режим постановки задач для своей системы.
Неправильный режим постановки задачи может привести к неэффективному выполнению кода или неправильному сгенерированному коду.
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
Модель представляет многоразовую систему, но не сконфигурирована для многозадачности. | Выберите Treat each discrete rate as a separate task параметра конфигурации модели. Когда вы выбираете параметр, выполнение многозадачности применяется для многоскоростной модели. Для получения дополнительной информации смотрите Расписание на основе времени и Генерация кода. |
Модель сконфигурирована для многозадачности, но многозадачность нежелательна на целевом компьютере. Например, операционная система не поддерживает многопроцессорную обработку, или целевой компьютер является голым металлом (не работает под управлением операционной системы), и приложение не предусматривает схему выполнения многозадачности. | Очистите Treat each discrete rate as a separate task параметра конфигурации модели. Когда вы очищаете параметр, применяется однозадачное выполнение. Для получения дополнительной информации смотрите Расписание на основе времени и Генерация кода. |
Проверяйте идентификатор: mathworks.codegen.ModelRefRTWConfigCompliance
Проверяет наличие ссылок на модели в иерархии модели, для которой генерация кода изменяет настройки параметров конфигурации, связанные с форматами идентификаторов.
В ссылочных моделях, если следующие Configuration Parameters > Code Generation > параметры Identifiers имеют настройки, которые не содержат $R
Лексема (которое представляет имя образца модели), генерация кода готовит $R
лексема к формату идентификатора.
Global variables
Global types
Subsystem methods
Constant macros
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
Скрипт, который работает с сгенерированным кодом, использует имена моделей, которые изменяются при генерации кода. | Обновите скрипт, чтобы использовать сгенерированное имя (которое включает в себя добавленное |
Проверяйте идентификатор: com.mathworks.sorting.datastoresimrtwcmp
Проверяет, что порядок выполнения блоков Data Store Read и Data Store Write не меняется, когда модель компилируется для генерации кода.
Порядок выполнения определяет последовательность, в которой блоки Data Store Read и Data Store Write получают доступ к блоку Data Store Memory. Проверка Model Advisor сравнивает порядок выполнения от до запуска проверки (нормальный режим симуляции) с порядком выполнения после компиляции проверки (режим генерации кода). Проверка выполняется в том случае, если порядок выполнения совпадает. При наличии различий проверка выдает Warning и определяет расхождения в результатах.
Доступно с Simulink Coder.
Состояние | Рекомендуемое действие |
---|---|
Порядок выполнения блоков Data Store Read и Data Store Write отличается между режимом симуляции и режимом генерации кода. | В результатах Model Advisor, под Action, нажмите Modify block priorities. Model Advisor изменяет блоки так, чтобы порядок выполнения в режиме симуляции был таким же, как в режиме генерации кода. |
Проверки целей генерации кода облегчают разработку и устранение проблем с моделями Simulink и подсистемами, которые вы хотите использовать для генерации кода.
Code Generation Advisor включает следующие проверки от Simulink, Simulink Coder и Embedded Coder для каждой из целей генерации кода. Ниже Генерация кода приведены две проверки, уникальные для списка Advisor.
Проверить | Эффективность выполнения (все цели) | Эффективность ПЗУ (целевые системы на базе ERT) | Эффективность ОЗУ (целевые системы на базе ERT) | Меры безопасности (целевые системы на базе ERT) | Трассируемость (целевые системы на базе ERT) | Отладка (все цели) | Руководящие принципы C:2012 MISRA (целевые системы на базе ERT) | Polyspace® (целевые системы на базе ERT) |
---|---|---|---|---|---|---|---|---|
Проверяйте настройки конфигурации модели на соответствие целям генерации кода | Включенный | Включенный | Включенный | Включенный | Включенный | Включенный | Включено (см. Примечание ниже) | Включенный |
Проверяйте на оптимальную виртуальность шины | Включенный | Включенный | Включенный | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте сомнительные блоки в указанной системе | Включенный | Включенный | Включенный | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Проверьте аппаратную реализацию (Embedded Coder) | Включается, если доступен Embedded Coder | Включается, если доступен Embedded Coder | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте сомнительные спецификации окружения программного обеспечения (Embedded Coder) | Включается, когда трассируемость не является более высоким приоритетом и доступен Embedded Coder | Включается, когда трассируемость не является более высоким приоритетом и доступен Embedded Coder | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте сомнительные отладки кода (ввод-вывод данных) (Embedded Coder) | Включается, когда трассируемость или отладка не являются более высокими приоритетами и доступен Embedded Coder | Включается, когда трассируемость или отладка не являются более высокими приоритетами и доступен Embedded Coder | Включается, когда трассируемость или отладка не являются более высокими приоритетами и доступен Embedded Coder | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте сомнительные настройки подсистемы (Embedded Coder) | Н/Д | Включается, если доступен Embedded Coder | Включается, если доступен Embedded Coder | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте блоки, которые генерируют дорогой округляющий код (Embedded Coder) | Включается, если доступен Embedded Coder | Включается, если доступен Embedded Coder | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте сомнительные операции с фиксированной точкой (Embedded Coder) | Включается, если доступен Embedded Coder или Fixed-Point Designer™ | Включается, если доступен Embedded Coder или Fixed-Point Designer | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте блоки с помощью индексации на основе одного | Включенный | Включенный | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте блоки интерполяционной таблицы, которые генерируют дорогой проверяющий код вне области допустимого значения (Embedded Coder) | Включается, если доступен Embedded Coder | Включается, если доступен Embedded Coder | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Проверяйте выходные типы логических блоков (Embedded Coder) | Включается, если доступен Embedded Coder | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте несвязанные линии, входные порты и выходные порты | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
Проверяйте блоки памяти хранилища данных на наличие проблем многозадачности, сильного набора текста и затенения | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
Идентифицируйте выходные сигналы блоков с непрерывным шагом расчета и типом данных без плавающей точки | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
Проверяйте блоки, которые имеют ограничения на настраиваемые параметры | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
Проверьте, включена ли диагностика чтения/записи для блоков хранилища данных | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
Проверяйте использование параметра структуры с помощью сигналов шины | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
Проверяйте шаги расчета блока хранилища данных на ошибки моделирования | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
Проверяйте на потенциальные проблемы с упорядоченным расположением, связанные с доступом к хранилищу данных | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
Проверьте блоки, не рекомендуемые для развертывания производственного кода C/C + + (Embedded Coder) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включается, если доступен Embedded Coder | Н/Д |
Проверяйте блоки, не рекомендуемые для C:2012 MISRA (Embedded Coder) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включается, если доступен Embedded Coder | Н/Д |
Проверьте неподдерживаемые имена блоков (Embedded Coder) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включается, если доступен Embedded Coder | Н/Д |
Проверяйте использование блоков Assignment (Embedded Coder) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включается, если доступен Embedded Coder | Н/Д |
Проверяйте на побитовые операции с целыми числами со знаком (Embedded Coder) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включается, если доступен Embedded Coder | Н/Д |
Проверяйте на рекурсивные вызовы функций (Embedded Coder) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включается, если доступен Embedded Coder | Н/Д |
Проверяйте на равенство и неравенство операции над значениями с плавающей точкой (Embedded Coder) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включается, если доступен Embedded Coder | Н/Д |
Проверяйте на выражения случая коммутатора без случая по умолчанию (Embedded Coder) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включается, если доступен Embedded Coder | Н/Д |
Проверьте параметры конфигурации для генерации неэффективного кода насыщения (Embedded Coder) | Включается, если доступен Embedded Coder | Включается, если доступен Embedded Coder | Н/Д | Включается, если доступен Embedded Coder | Н/Д | Н/Д | Н/Д | Н/Д |
Примечание
Когда Генерация кода Advisor проверяет вашу модель на соответствие целям C:2012 MISRA, инструмент не учитывает все настройки параметров конфигурации, которые проверяются руководствами MISRA C:2012 в Model Advisor. Для полной проверки настроек параметров конфигурации:
Откройте Model Advisor.
Перейдите к разделу By Task > Modeling Guidelines for MISRA C:2012.
Выполните проверки в папке.
Для получения дополнительной информации об использовании Model Advisor, смотрите Проверить модель Используя Model Advisor.
Идентифицируйте блоки, не поддерживаемые генерацией кода или не рекомендуемые для развертывания.
Генератор кода создает код только для блоков, которые он поддерживает. Некоторые блоки не рекомендованы для развертывания производственного кода.
Состояние | Рекомендуемое действие |
---|---|
Блок не поддерживается генератором кода. | Удалите указанный блок из модели или замените блок на рекомендуемый блок. |
Блок не рекомендуется для развертывания производственного кода. | Удалите указанный блок из модели или замените блок на рекомендуемый блок. |
Проверьте наличие Gain блоков, значение которых равняется 1. | Замените Gain блоки на Signal Conversion блоки. |
Вы можете:
Запустите эту проверку на своих моделях библиотеки.
Исключить блоки и графики из этой проверки, если у вас есть лицензия Simulink Check.
Блоки и продукты, поддерживаемые для генерации кода
Обзор исключения Model Advisor (Simulink Check)
Проверьте настройки параметров конфигурации для модели на соответствие целям генерации кода.
Каждый параметр в диалоговом окне Параметров конфигурации может иметь различные рекомендуемые настройки для генерации кода на основе ваших целей. Эта проверка помогает вам идентифицировать рекомендуемые настройки для каждого параметра, чтобы вы могли достичь оптимизированного кода на основе вашей цели.
Состояние | Рекомендуемое действие |
---|---|
Параметры устанавливаются в значения, отличные от значений, рекомендуемых для заданных целей. |
Установите рекомендуемые значения параметров. Примечание Изменение одного значения параметров может повлиять на другие параметры. Прохождение проверки может занять несколько итераций. |
При нажатии кнопки мыши Modify Parameters значения параметров изменяются на рекомендуемые значения.