Используйте проверки Simulink ® Coder™ Model Advisor для настройки модели для создания кода.
Проверка встроенного кодера (встроенный кодер)
Код чека: 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.
| Состояние | Рекомендуемое действие |
|---|---|
| Неверно задан тип решателя для генерации кода уровня модели. | В диалоговом окне «Параметры конфигурации» на панели «Решатель» задайте для параметра «Тип» значение |
Параметры диагностики многозадачности не установлены в значение error. | В диалоговом окне Параметры конфигурации (Configuration Parameters) на панели Диагностика (Diagnostics) задайте
|
Нет необходимости изменять настройки решателя для создания кода из подсистемы. Процесс сборки автоматически изменяет тип решателя на 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
Проверьте, использует ли модель параметры цепочки инструментов для построения сгенерированного кода.
Проверяет, использует ли модель подход makefile шаблона или подход toolchain для построения созданного кода.
Доступно с Simulink Coder.
При открытии модели, созданной перед R2013b, для которой для целевого файла системы задано значение ert.tlc, ert_shrlib.tlc, или grt.tlc программа автоматически пытается обновить модель с использования подхода make-файла шаблона до использования подхода toolchain.
Если программное обеспечение не обновило модель, эта проверка определяет причину и, если она доступна, рекомендует действия, которые можно выполнить для обновления модели.
Чтобы определить, какой подход используется в модели, можно также просмотреть панель Создание кода (Code Generation) в диалоговом окне Параметры конфигурации (Configuration Parameters). При построении сгенерированного кода в схеме инструментария используются следующие параметры:
В подходе makefile шаблона для построения сгенерированного кода используются следующие параметры настройки:
Уровень оптимизации компилятора
Пользовательские флаги оптимизации компилятора
Создать makefile
Файл создания шаблона
| Состояние | Рекомендуемое действие | Комментарий |
|---|---|---|
| Модель настроена на использование подхода, основанного на цепочке инструментов. | Никаких действий. | Модель была автоматически обновлена. |
| Модель не настроена на использование подхода, основанного на цепочке инструментов. | Модель не может быть автоматически обновлена для использования подхода, основанного на цепочке инструментов. | Системный целевой файл несовместим с цепочкой инструментов. Установка целевого файла системы в целевой файл, совместимый с цепочкой инструментов, например ert.tlc, ert_shrlib.tlc, или grt.tlc. |
| Модель не настроена на использование подхода, основанного на цепочке инструментов. (Значения параметров не являются значениями по умолчанию.) | Модель может быть автоматически обновлена для использования подхода toolchain. Щелкните Обновить модель (Update Model). | Параметры имеют значения по умолчанию, за исключением уровня оптимизации компилятора, который установлен Optimizations on (faster runs). При нажатии кнопки «Обновить модель» для параметра «Уровень оптимизации компилятора» устанавливается значение по умолчанию. Optimizations off (faster builds), а затем обновляет модель. Для обновленной модели задано значение «» Конфигурация построения Faster Builds. Сохранение модели делает эти изменения постоянными. |
| Модель не настроена на использование подхода, основанного на цепочке инструментов. (Значения параметров не являются значениями по умолчанию.) | Модель не может быть автоматически обновлена для использования подхода, основанного на цепочке инструментов. | Одному или нескольким из следующих параметров не присвоено значение по умолчанию:
См. раздел Обновление модели для использования подхода на основе инструментальной цепочки |
Если щелкнуть Обновить модель (Update model), модель будет обновлена, чтобы использовать подход цепочки инструментов для построения сгенерированного кода.
Код чека: mathworks.codegen.codertarget.check
Проверьте и обновите встроенную целевую модель для использования целевого файла системы ert.tlc.
Проверка и обновление моделей, для целевого файла системы которых задан файл, отличный от ert.tlc и, целевое оборудование которого является одним из поддерживаемых процессоров Texas Instruments™ C2000™ ert.tlc и аналогичные настройки.
Доступно с Simulink Coder.
| Состояние | Рекомендуемое действие |
|---|---|
Системный целевой файл имеет значение ert.tlc - Embedded Coder. | Никаких действий |
Системный целевой файл имеет значение, отличное от | Выполните соответствующую проверку в помощнике по обновлению:
|
Если щелкнуть Выполнить эту проверку (Run This Check), на панели Создание кода (Code Generation) диалогового окна Параметры конфигурации модели (model Configuration Parameters) автоматически будут заданы следующие параметры.
Параметр целевого файла системы для ert.tlc.
Параметр «Цепь инструментов», соответствующий предыдущей цепи инструментов.
Параметр конфигурации построения, соответствующий конфигурации построения.
В новом рабочем процессе используется подход toolchain, который основан на расширенных makefile для создания сгенерированного кода. Он не эквивалентен заданию для параметра формата построения значения Project в предыдущей конфигурации. Поэтому новый поток операций не может автоматически создавать проекты среды IDE в среде CCS 3.3.
Код чека: mathworks.codegen.realtime2CoderTargetInfoUpgradeAdvisor.check
Проверьте и обновите модели с целевыми устройствами Simulink, которые значительно изменились в различных версиях MATLAB ®.
Сохраните модель, обновленную для работы с текущей установкой MATLAB.
Доступно с Simulink Coder.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель использует целевой объект, который значительно изменился с момента выпуска MATLAB, в котором он был первоначально сохранен. | Сохранить модель |
| Модель не использует целевой объект Simulink или использует последнюю версию целевого объекта. | Никаких действий |
| Модель обновляется автоматически. | Сохранить модель |
| Недопустимая конфигурация внешнего режима. | На панели «Параметры конфигурации» > «Интерфейс» обновите настройки параметров внешнего режима в соответствии с характеристиками соединения хост-объект. |
Модель повреждена. | Закройте и снова откройте модель. Если проблема сохраняется, сбросьте Параметры конфигурации > Аппаратная реализация > Аппаратная плата. |
Нажатие кнопки Сохранить модель обновляет модель для работы с текущей установкой MATLAB и сохраняет модель.
Код чека: mathworks.codegen.ConstraintsTunableParam
Определение блоков с ограничениями на настраиваемые параметры.
Блоки таблицы подстановки имеют строгие ограничения при их настройке. При нарушении ограничений блока таблицы подстановки созданный код выдает неверные ответы.
Доступно с Simulink Coder.
| Состояние | Рекомендуемое действие |
|---|---|
| Блоки таблицы подстановки имеют настраиваемые параметры. | При настройке параметров во время моделирования или при выполнении сгенерированного кода необходимо:
|
| Блоки таблицы подстановки (2-D) имеют настраиваемые параметры. | При настройке параметров во время моделирования или при выполнении сгенерированного кода необходимо:
|
| Блоки таблицы подстановки (n-D) имеют настраиваемые параметры. | При настройке параметров во время моделирования или при выполнении сгенерированного кода необходимо сохранить возрастающую монотонность значений точек останова для каждого табличного измерения Breakpoints n. |
При наличии лицензии Simulink Check из этой проверки можно исключить блоки и диаграммы.
Код чека: mathworks.codegen.MdlrefConfigMismatch
Определите параметры конфигурации модели, которые не соответствуют параметрам конфигурации модели верхнего уровня.
Генератор кода не может создать код для верхних моделей, содержащих ссылочные модели с различными, несовместимыми настройками параметров конфигурации.
Доступно с Simulink Coder.
| Состояние | Рекомендуемое действие |
|---|---|
| Верхняя модель и ссылочная модель имеют противоречивые настройки параметров конфигурации модели. | Измените указанные настройки конфигурации модели. |
Код чека: mathworks.codegen.SampleTimesTaskingMode
Настройка времени выборки и режима задания для системы.
Неправильный режим задания может привести к неэффективному выполнению кода или неправильному созданию кода.
Доступно с Simulink Coder.
| Состояние | Рекомендуемое действие |
|---|---|
| Модель представляет многоскоростную систему, но не настроена для многозадачности. | Выберите параметр конфигурации модели Рассматривать каждую дискретную скорость как отдельную задачу. При выборе параметра для многоскоростной модели применяется многозадачное выполнение. Дополнительные сведения см. в разделах Планирование на основе времени и Создание кода. |
| Модель настроена для многозадачности, но многозадачность нежелательна на целевом оборудовании. Например, операционная система не поддерживает многопроцессорный, или целевые аппаратные средства - голый металл (не управляет операционной системой), и приложение не предусматривает многозадачную схему выполнения. | Очистить параметр конфигурации модели Рассматривать каждую дискретную скорость как отдельную задачу. При сбросе параметра применяется однозадачное выполнение. Дополнительные сведения см. в разделах Планирование на основе времени и Создание кода. |
Код чека: mathworks.codegen.ModelRefRTWConfigCompliance
Проверка ссылочных моделей в иерархии ссылок на модели, для которой генерация кода изменяет настройки параметров конфигурации, включающие форматы идентификаторов.
В ссылочных моделях, если следующие параметры конфигурации > Создание кода > Параметры идентификаторов имеют настройки, которые не содержат $R token (который представляет имя ссылочной модели), генерация кода предшествует $R маркер к формату идентификатора.
Глобальные переменные
Глобальные типы
Методы подсистем
Постоянные макросы
Доступно с Simulink Coder.
| Состояние | Рекомендуемое действие |
|---|---|
Сценарий, работающий с сгенерированным кодом, использует имена моделей, которые изменяются при создании кода. | Обновить сценарий, чтобы использовать созданное имя (которое включает добавленное |
Код чека: com.mathworks.sorting.datastoresimrtwcmp
Проверяет, что порядок выполнения блоков чтения хранилища данных и записи хранилища данных не изменяется при компиляции модели для генерации кода.
Порядок выполнения определяет последовательность, в которой блоки чтения хранилища данных и записи хранилища данных получают доступ к блоку памяти хранилища данных. Проверка Model Advisor сравнивает порядок выполнения перед выполнением проверки (обычный режим моделирования) с порядком выполнения после компиляции проверки (режим генерации кода). Проверка проходит, когда порядок выполнения совпадает. При наличии расхождений проверка выдает предупреждение и выявляет расхождения в результатах.
Доступно с Simulink Coder.
| Состояние | Рекомендуемое действие |
|---|---|
Порядок выполнения блоков чтения хранилища данных и записи хранилища данных отличается в зависимости от режима моделирования и режима генерации кода. | В результатах помощника по модели в разделе Действие (Action) щелкните Изменить приоритеты блоков (Modify block priorities). Помощник по модели изменяет блоки таким образом, чтобы порядок выполнения в режиме моделирования был таким же, как и в режиме генерации кода. |
Проверка целей создания кода упрощает разработку и устранение неполадок моделей и подсистем Simulink, которые необходимо использовать для создания кода.
Помощник по созданию кода включает следующие проверки от Simulink, Simulink Coder и Embedded Coder для каждой цели создания кода. Под списком содержатся две проверки, уникальные для помощника по созданию кода.
| Проверить | Эффективность выполнения (все цели) | Эффективность ПЗУ (целевые показатели, основанные на ERT) | Эффективность ОЗУ (целевые показатели, основанные на ERT) | Меры безопасности (целевые показатели, основанные на ERT) | Отслеживаемость (целевые показатели, основанные на ERT) | Отладка (все цели) | Рекомендации MISRA C:2012 (целевые показатели, основанные на ERT) | Полиспейс ® (целевые показатели, основанные на ERT) |
|---|---|---|---|---|---|---|---|---|
| Проверка параметров конфигурации модели по целям создания кода | Включенный | Включенный | Включенный | Включенный | Включенный | Включенный | Включено (см. примечание ниже) | Включенный |
| Проверка оптимальной виртуальности шины | Включенный | Включенный | Включенный | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Определение сомнительных блоков в указанной системе | Включенный | Включенный | Включенный | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Проверка реализации аппаратных средств (встроенный кодер) | Включено при наличии встроенного кодера | Включено при наличии встроенного кодера | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Определение сомнительных спецификаций среды программного обеспечения (встроенный кодер) | Включено, когда отслеживание не имеет более высокого приоритета и доступен встроенный кодер | Включено, когда отслеживание не имеет более высокого приоритета и доступен встроенный кодер | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Определение сомнительного кода (ввод/вывод данных) (встроенный кодер) | Включается, когда отслеживаемость или отладка не имеют более высокого приоритета, и доступен встроенный кодер | Включается, когда отслеживаемость или отладка не имеют более высокого приоритета, и доступен встроенный кодер | Включается, когда отслеживаемость или отладка не имеют более высокого приоритета, и доступен встроенный кодер | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Определение сомнительных настроек подсистемы (встроенный кодер) | Н/Д | Включено при наличии встроенного кодера | Включено при наличии встроенного кодера | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Определение блоков, генерирующих дорогостоящий код округления (встроенный кодер) | Включено при наличии встроенного кодера | Включено при наличии встроенного кодера | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Определение сомнительных операций с фиксированной точкой (встроенный кодер) | Включено при наличии встроенного кодера или Designer™ с фиксированной точкой | Включено при наличии встроенного кодера или конструктора фиксированных точек | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Идентификация блоков с помощью индексирования на основе одного элемента | Включенный | Включенный | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Определение блоков таблицы поиска, генерирующих дорогостоящий код проверки за пределами диапазона (встроенный кодер) | Включено при наличии встроенного кодера | Включено при наличии встроенного кодера | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
| Проверка типов вывода логических блоков (встроенный кодер) | Включено при наличии встроенного кодера | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д |
Идентификация несвязанных линий, портов ввода и портов вывода | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
| Проверка блоков памяти хранилища данных на наличие проблем многозадачности, строгой типизации и затенения | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
| Определение блочных выходных сигналов с непрерывным временем выборки и типом данных без плавающей точки | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
| Проверка блоков с ограничениями на настраиваемые параметры | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
| Проверьте, включена ли диагностика чтения/записи для блоков хранения данных | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
| Проверка использования параметров структуры по сигналам шины | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
| Проверка времени блока хранилища данных на наличие ошибок моделирования | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
| Проверка потенциальных проблем заказа, связанных с доступом к хранилищу данных | Н/Д | Н/Д | Н/Д | Включенный | Н/Д | Н/Д | Н/Д | Н/Д |
| Проверка блоков, не рекомендованных для развертывания производственного кода C/C + + (встроенный кодер) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включено при наличии встроенного кодера | Н/Д |
| Проверка блоков, не рекомендованных для MISRA C:2012 (встроенный кодер) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включено при наличии встроенного кодера | Н/Д |
| Проверьте наличие неподдерживаемых имен блоков (встроенный кодер) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включено при наличии встроенного кодера | Н/Д |
| Проверка использования блоков назначения (встроенный кодер) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включено при наличии встроенного кодера | Н/Д |
| Проверка побитовых операций со подписанными целыми числами (встроенный кодер) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включено при наличии встроенного кодера | Н/Д |
| Проверка рекурсивных вызовов функций (встроенный кодер) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включено при наличии встроенного кодера | Н/Д |
| Проверка операций равенства и неравенства для значений с плавающей запятой (встроенный кодер) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включено при наличии встроенного кодера | Н/Д |
| Проверка выражений вариантов переключения без варианта по умолчанию (встроенный кодер) | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Н/Д | Включено при наличии встроенного кодера | Н/Д |
| Проверка параметров конфигурации для генерации неэффективного кода насыщения (встроенный кодер) | Включено при наличии встроенного кодера | Включено при наличии встроенного кодера | Н/Д | Включено при наличии встроенного кодера | Н/Д | Н/Д | Н/Д | Н/Д |
Примечание
Когда помощник по созданию кода проверяет модель в соответствии с целью рекомендаций MISRA C:2012, инструмент не учитывает все настройки параметров конфигурации, которые проверяются при проверке рекомендаций MISRA C:2012 в помощнике по модели. Для полной проверки настроек параметров конфигурации:
Откройте мастер модели.
Перейдите в раздел По задаче > Рекомендации по моделированию для C:2012 MISRA.
Выполните проверки в папке.
Дополнительные сведения об использовании Model Advisor см. в разделе Проверка модели с помощью Model Advisor.
Определите блоки, не поддерживаемые генерацией кода или не рекомендуемые для развертывания.
Генератор кода создает код только для поддерживаемых им блоков. Некоторые блоки не рекомендуется использовать для развертывания производственного кода.
| Состояние | Рекомендуемое действие |
|---|---|
| Блок не поддерживается генератором кода. | Удалите указанный блок из модели или замените его рекомендуемым блоком. |
| Блок не рекомендуется для развертывания производственного кода. | Удалите указанный блок из модели или замените его рекомендуемым блоком. |
| Проверьте блоки усиления, значение которых равно 1. | Замените блоки усиления блоками преобразования сигнала. |
Вы можете:
Выполните эту проверку для моделей библиотек.
Исключите блоки и диаграммы из этой проверки, если у вас есть лицензия Simulink Check.
Блоки и продукты, поддерживаемые для создания кода
Обзор исключения Model Advisor (Simulink Check)
Проверьте настройки параметров конфигурации для модели по целям создания кода.
Каждый параметр в диалоговом окне «Параметры конфигурации» может иметь различные рекомендуемые настройки для создания кода в зависимости от целей. Эта проверка помогает определить рекомендуемые параметры для каждого параметра, чтобы получить оптимизированный код в зависимости от цели.
| Состояние | Рекомендуемое действие |
|---|---|
| Для параметров устанавливаются значения, отличные от рекомендуемых для указанных целей. |
Задайте рекомендуемые значения параметров. Примечание Изменение одного значения параметра может повлиять на другие параметры. Прохождение проверки может занять несколько итераций. |
При нажатии кнопки «Изменить параметры» значения параметров изменяются на рекомендуемые.