Используйте проверки Simulink® Coder™ Model Advisor, чтобы сконфигурировать вашу модель для генерации кода.
Осуществите образцовые проверки (Simulink)
Simulink Check (Simulink)
Embedded Coder проверяет (Embedded Coder)
ID проверки: mathworks.codegen.cgsl_0101
Идентифицируйте блоки, использующие индексацию на основе одну.
Основанная на нуле индексация более эффективна в сгенерированном коде, чем индексация на основе одна.
Используя основанную на нуле индексацию увеличивает эффективность выполнения сгенерированного кода.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блоки, сконфигурированные для индексации на основе одной. | Сконфигурируйте блоки для основанной на нуле индексации. Обновите блоки поддержки. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check™.
cgsl_0101: основанная на нуле индексация (Simulink).
Что такое исключение Model Advisor? (Simulink Check)
ID проверки: mathworks.codegen.SolverCodeGen
Проверяйте образцовый решатель и параметры конфигурации шага расчета.
Неправильные параметры конфигурации могут мешать генератору кода произвести код. Шаги расчета Underspecifying могут привести к нежелательным результатам. Постарайтесь не генерировать код, который может повредить данные или произвести непредсказуемое поведение.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Тип решателя установлен неправильно для образцовой генерации кода уровня. |
В диалоговом окне Configuration Parameters, на панели Solver, устанавливает Type (Simulink) на |
Многозадачные диагностические опции не установлены в error . |
В диалоговом окне Configuration Parameters, на панели Diagnostics, наборе
|
Вы не должны изменять настройки решателя, чтобы сгенерировать код от подсистемы. Процесс сборки автоматически изменяет Solver type на fixed-step
, когда вы выбираете Code Generation> Build Subsystem или Code Generation> Generate S-Function из контекстного меню подсистемы.
ID проверки: mathworks.codegen.codeGenSupport
Идентифицируйте блоки, не поддержанные генерацией кода.
Эта проверка частично идентифицирует образцовые построения, которые не подходят для генерации кода, как идентифицировано в таблицах Simulink Block Support для Simulink Coder и Embedded Coder®. Если вы используете блоки с примечаниями поддержки для генерации кода, рассматриваете информацию и следуете данному совету.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блоки, которые не должны использоваться для генерации кода. | Рассмотрите заменяющий блоки перечисленный в результатах. Кликните по элементу из списка сомнительных элементов, чтобы определить местоположение условия. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое во всех подсистемах маскированных.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
ID проверки: mathworks.codegen.toolchainInfoUpgradeAdvisor.check
Проверяйте, использует ли модель настройки Toolchain, чтобы создать сгенерированный код.
Проверки, использует ли модель подход make-файла шаблона или подход набора инструментальных средств, чтобы создать сгенерированный код.
Доступный с Simulink Coder.
Когда вы открываете модель, созданную перед R2013b, которому установили System target file на ert.tlc
, ert_shrlib.tlc
или grt.tlc
, программное обеспечение автоматически пытается обновить модель от использования подхода make-файла шаблона к использованию подхода набора инструментальных средств.
Если программное обеспечение не обновило модель, эта проверка определяет причину, и при наличии, рекомендует действия, которые можно выполнить, чтобы обновить модель.
Чтобы определить, который использует подход ваша модель, можно также посмотреть на панель Генерации кода в диалоговом окне Configuration Parameters. Подход набора инструментальных средств использует следующие параметры, чтобы создать сгенерированный код:
Подход 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 обновляет модель, чтобы использовать подход набора инструментальных средств, чтобы создать сгенерированный код.
ID проверки: mathworks.codegen.codertarget.check
Проверяйте и обновите модель целевого процессора, чтобы использовать ert.tlc системный конечный файл.
Проверяйте и обновите модели, System target file которых установлен в idelink_ert.tlc
или idelink_grt.tlc
и чей целевой компьютер является одним из поддерживаемых процессоров Instruments™ C2000™ Техаса, чтобы использовать ert.tlc
и подобные настройки.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
System target file установлен в ert.tlc - Embedded Coder . | Никакое действие |
System target file установлен в | Модель Update |
Нажатие на Update model автоматически устанавливает следующие параметры на панели Code Generation в диалоговом окне модели Configuration Parameters:
Параметр System target file к ert.tlc
.
Параметр Target hardware, чтобы совпадать с предыдущей платой или процессором.
Параметр Toolchain, чтобы совпадать с предыдущим набором инструментальных средств.
Параметр Build configuration, чтобы совпадать с конфигурацией сборки.
Это действие также устанавливает параметры на панели Coder Target, чтобы совпадать с предыдущими значениями параметров под вкладкой Peripherals.
Новый рабочий процесс использует подход набора инструментальных средств, который полагается на расширенные make-файлы, чтобы создать сгенерированный код. Это не обеспечивает эквивалент установке параметра Build format на Project
в предыдущей настройке. Поэтому новый рабочий процесс не может автоматически сгенерировать проекты IDE в CCS 3.3 IDE.
ID проверки: mathworks.codegen.realtime2CoderTargetInfoUpgradeAdvisor.check
Проверяйте и обновите модели с целями Simulink, которые значительно изменились через различные релизы MATLAB®.
Сохраните модель, которую вы обновили, чтобы работать с текущей установкой MATLAB.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Модель использует цель, которая изменилась значительно начиная с релиза MATLAB, на котором это было первоначально сохранено. | Модель Save |
Модель не использует цель Simulink или использует последнюю версию цели. | Никакое действие |
Модель автоматически обновляется. | Модель Save |
Недопустимая настройка режима external mode. | В Configuration Parameters> панель Interface, обновите установки параметров режима external mode, чтобы совпадать с характеристиками вашей целевой хостом связи. |
Модель повреждается. | Закройте и вновь откройте модель. Если проблема сохраняется, сбросьте Configuration Parameters> Hardware Implementation> Hardware board. |
Нажатие на Save model обновляет модель, чтобы работать с текущей установкой MATLAB и сохраняет модель.
ID проверки: mathworks.codegen.ConstraintsTunableParam
Идентифицируйте блоки с ограничениями на настраиваемые параметры.
Блоки Интерполяционной таблицы имеют строгие ограничения, когда они являются настраиваемыми. Если вы нарушаете ограничения блока интерполяционной таблицы, сгенерированный код производит неправильные ответы.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Блоки Интерполяционной таблицы имеют настраиваемые параметры. |
При настройке параметров во время симуляции или при выполнении сгенерированного кода, вы должны:
|
Интерполяционная таблица (2D) блоки имеет настраиваемые параметры. |
При настройке параметров во время симуляции или при выполнении сгенерированного кода, вы должны:
|
Интерполяционная таблица (n-D) блоки имеет настраиваемые параметры. | При настройке параметров во время симуляции или при выполнении сгенерированного кода, необходимо сохранить увеличивающуюся монотонность значений точки останова для каждой табличной размерности Breakpoints n. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
ID проверки: mathworks.codegen.MdlrefConfigMismatch
Идентифицируйте образцовые настройки параметра конфигурации, на которые ссылаются, которые не совпадают с настройками параметра конфигурации топ-модели.
Генератор кода не может создать код для топ-моделей, которые содержат модели, на которые ссылаются, с различными, несовместимыми настройками параметра конфигурации.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
У топ-модели и модели, на которую ссылаются есть противоречивые образцовые настройки параметра конфигурации. | Измените заданные настройки конфигурации модели. |
Основы модели - ссылки (Simulink)
Установите параметры конфигурации для модели, ссылающейся (на Simulink)
ID проверки: mathworks.codegen.SampleTimesTaskingMode
Настройте шаг расчета и режим управления задачами для вашей системы.
Неправильный режим управления задачами может привести к неэффективному выполнению кода или неправильному сгенерированному коду.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Модель представляет многоскоростную систему, но не сконфигурирована для многозадачности. | В диалоговом окне Configuration Parameters, на панели Solver, набор the Treat each discrete rate as a separate task (Simulink) параметр, как рекомендуется. |
Модель сконфигурирована для многозадачности, но многозадачность не желательна на целевом компьютере. | В диалоговом окне Configuration Parameters, на панели Solver, снимают флажок для the Treat each discrete rate as a separate task (Simulink) параметра или изменяют настройки на панели Hardware Implementation. |
ID проверки: mathworks.codegen.ModelRefRTWConfigCompliance
Проверки на модели, на которые ссылаются, в модели, ссылающейся на иерархию, для которой генерация кода изменяет настройки параметра конфигурации, которые включают форматы идентификатора.
В моделях, на которые ссылаются, если следующий Configuration Parameters> Code Generation> параметры Symbols имеют настройки, которые не содержат лексему $R
(который представляет имя эталонной модели), генерация кода предварительно ожидает лексему $R
к формату идентификатора.
Global variables
Global types
Subsystem methods
Constant macros
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Скрипт, который работает со сгенерированным кодом, использует имена модели та генерация кода изменения. | Обновите скрипт, чтобы использовать сгенерированное имя (который включает добавленную лексему |
Проверки целей генерации кода упрощают разработку и поиск и устранение неисправностей моделей Simulink и подсистем, которые вы хотите использовать, чтобы сгенерировать код.
Советник Генерации кода включает следующие проверки от Simulink, Simulink Coder и Embedded Coder для каждой из целей генерации кода. Две проверки, уникальные для Советника Генерации кода, включены ниже списка.
Проверять | Эффективность выполнения (все цели) | Эффективность ROM (Основанные на ERT цели) | Эффективность RAM (Основанные на ERT цели) | Меры безопасности (Основанные на ERT цели) | Трассируемость (Основанные на ERT цели) | Отладка (все цели) | Инструкции MISRA C:2012 (Основанные на ERT цели) | Polyspace® (Основанные на ERT цели) |
---|---|---|---|---|---|---|---|---|
Проверяйте настройки конфигурации модели по целям генерации кода | Включенный | Включенный | Включенный | Включенный | Включенный | Включенный | Включенный (см. примечание ниже), | Включенный |
Проверяйте на оптимальную виртуальность шины (Simulink) | Включенный | Включенный | Включенный | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных |
Идентифицируйте сомнительные блоки в заданной системе | Включенный | Включенный | Включенный | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных |
Проверяйте аппаратную реализацию (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 доступен | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных |
Идентифицируйте несвязанные строки, входные порты и выходные порты (Simulink) | Нет данных | Нет данных | Нет данных | Включенный | Нет данных | Нет данных | Нет данных | Нет данных |
Проверяйте Блоки памяти Хранилища данных на многозадачность, строгий контроль типов и проблемы затенения (Simulink) | Нет данных | Нет данных | Нет данных | Включенный | Нет данных | Нет данных | Нет данных | Нет данных |
Идентифицируйте выходные сигналы блока со временем непрерывной выборки и типом неданных с плавающей запятой (Simulink) | Нет данных | Нет данных | Нет данных | Включенный | Нет данных | Нет данных | Нет данных | Нет данных |
Проверяйте на блоки, которые имеют ограничения на настраиваемые параметры | Нет данных | Нет данных | Нет данных | Включенный | Нет данных | Нет данных | Нет данных | Нет данных |
Проверяйте, включена ли диагностика чтения-записи для блоков хранилища данных (Simulink) | Нет данных | Нет данных | Нет данных | Включенный | Нет данных | Нет данных | Нет данных | Нет данных |
Проверяйте использование параметра структуры с сигналами шины (Simulink) | Нет данных | Нет данных | Нет данных | Включенный | Нет данных | Нет данных | Нет данных | Нет данных |
Проверяйте, что хранилище данных блокирует шаги расчета для моделирования ошибок (Simulink) | Нет данных | Нет данных | Нет данных | Включенный | Нет данных | Нет данных | Нет данных | Нет данных |
Проверяйте на потенциальные проблемы упорядоченного расположения, включающие доступ к хранилищу данных (Simulink) | Нет данных | Нет данных | Нет данных | Включенный | Нет данных | Нет данных | Нет данных | Нет данных |
Проверяйте на блоки, не рекомендуемые для производственного развертывания C/C++ кода (Embedded Coder) | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Включенный, если Embedded Coder доступен | Нет данных |
Проверяйте на блоки, не рекомендуемые для MISRA C:2012 (Embedded Coder) | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Включенный, если Embedded Coder доступен | Нет данных |
Проверяйте на неподдерживаемые имена блока (Embedded Coder) | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Включенный, если Embedded Coder доступен | Нет данных |
Проверяйте использование блоков Присвоения (Embedded Coder) | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Включенный, если Embedded Coder доступен | Нет данных |
Проверяйте на битовые операции на целых числах со знаком (Embedded Coder) | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Включенный, если Embedded Coder доступен | Нет данных |
Проверяйте на (Embedded Coder) вызовов рекурсивной функции | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Включенный, если Embedded Coder доступен | Нет данных |
Проверяйте на операции равенства и неравенства на значениях с плавающей точкой (Embedded Coder) | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Включенный, если Embedded Coder доступен | Нет данных |
Проверяйте на case-выражения переключателя без случая по умолчанию (Embedded Coder) | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Включенный, если Embedded Coder доступен | Нет данных |
То, когда Советник Генерации кода проверяет вашу модель по цели инструкций MISRA C:2012, инструмент не рассматривает все настройки параметра конфигурации, которые проверяются инструкциями MISRA C:2012, регистрируется в Model Advisor. Для полной проверки настроек параметра конфигурации, осуществленных проверки под узлом By Task > Modeling Guidelines for MISRA C:2012 в Model Advisor.
Сконфигурируйте модель для целей генерации кода при помощи советника генерации кода (Embedded Coder)
Осуществите образцовые проверки (Simulink)
Simulink Check (Simulink)
Simulink Check проверяет (Simulink Check)
Идентифицируйте блоки, не поддержанные генерацией кода или не рекомендуемые для развертывания.
Генератор кода создает код только для блоков, которые это поддерживает. Некоторые блоки не рекомендуются для производственного развертывания кода.
Условие | Рекомендуемое действие |
---|---|
Блок не поддержан генератором кода. | Удалите заданный блок от модели или замените блок на рекомендуемый блок. |
Блок не рекомендуется для производственного развертывания кода. | Удалите заданный блок от модели или замените блок на рекомендуемый блок. |
Проверяйте на блоки Усиления, значение которых равняется 1. | Замените блоки Усиления на блоки Преобразования Сигнала. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Блоки и продукты, поддержанные для генерации кода
Что такое исключение Model Advisor? (Simulink Check)
Проверяйте настройки параметра конфигурации на модель против целей генерации кода.
Каждый параметр в диалоговом окне Configuration Parameters может иметь различные рекомендуемые настройки для генерации кода на основе ваших целей. Эта проверка помогает вам идентифицировать рекомендуемую установку для каждого параметра так, чтобы можно было достигнуть оптимизированного кода на основе цели.
Условие | Рекомендуемое действие |
---|---|
Параметры устанавливаются на значения кроме значения, рекомендуемого для заданных целей. |
Установите параметры на рекомендуемые значения. ПримечаниеИзменение в одном значении параметров может повлиять на другие параметры. Передача проверки может взять несколько итераций. |
Нажатие на Modify Parameters изменяет значения параметров на рекомендуемые значения.