Используйте проверки Simulink® Coder™ Model Advisor, чтобы сконфигурировать вашу модель для генерации кода.
Embedded Coder проверяет (Embedded Coder)
ID проверки: mathworks.codegen.SubsysCodeReuse
Идентифицируйте блоки CodeReuseSubsystem, которые не снова используют код.
Условие | Рекомендуемое действие |
---|---|
Один или несколько блоков CodeReuseSubsystem в модели не снова используют код. | Измените блоки CodeReuseSubsystem в модели так, чтобы они снова использовали код. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Посмотрите под масками,
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check™.
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.codegen.cgsl_0101
Идентифицируйте блоки, использующие индексацию на основе одну.
Основанная на нуле индексация более эффективна в сгенерированном коде, чем индексация на основе одна.
Используя основанную на нуле индексацию увеличивает КПД выполнения сгенерированного кода.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блоки, сконфигурированные для индексации на основе одной. | Сконфигурируйте блоки для основанной на нуле индексации. Обновите блоки поддержки. |
Вы можете:
Осуществите эту проверку своих моделей библиотеки.
Исключите блоки и графики от этой проверки, если у вас есть лицензия Simulink Check.
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.codegen.SolverCodeGen
Проверяйте решатель модели и параметры конфигурации шага расчета.
Неправильные параметры конфигурации могут мешать генератору кода произвести код. Шаги расчета Underspecifying могут привести к нежелательным результатам. Постарайтесь не генерировать код, который может повредить данные или произвести непредсказуемое поведение.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Тип решателя установлен неправильно для генерации кода уровня модели. | В диалоговом окне Configuration Parameters, на панели Solver, устанавливает Type на |
Многозадачные диагностические опции не установлены в error . | В диалоговом окне Configuration Parameters, на панели Diagnostics, наборе
|
Вы не должны изменять настройки решателя, чтобы сгенерировать код от подсистемы. Процесс сборки автоматически изменяет Solver type в fixed-step
когда вы щелкаете правой кнопкой по подсистеме и выбираете C/C++ Code> Build This Subsystem или C/C++ Code> 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 которых установлен в файл кроме ert.tlc
и чей целевой компьютер является одним из поддерживаемых процессоров Instruments™ C2000™ Техаса, чтобы использовать ert.tlc
и подобные настройки.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
System target file установлен в ert.tlc - Embedded Coder . | Никакое действие |
System target file установлен в файл кроме | Запустите соответствующую регистрацию Советника по вопросам Обновления:
|
Нажатие на Run This Check автоматически устанавливает следующие параметры на панели Code Generation в диалоговом окне модели Configuration Parameters:
Параметр System target file к ert.tlc
.
Параметр Toolchain, чтобы совпадать с предыдущим набором инструментальных средств.
Параметр Build configuration, чтобы совпадать с конфигурацией сборки.
Новый рабочий процесс использует подход набора инструментальных средств, который использует расширенные 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
Идентифицируйте блоки с ограничениями на настраиваемые параметры.
Блоки Lookup Table имеют строгие ограничения, когда они являются настраиваемыми. Если вы нарушаете ограничения блока интерполяционной таблицы, сгенерированный код производит неправильные ответы.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Блоки Lookup Table имеют настраиваемые параметры. | При настройке параметров в процессе моделирования или при выполнении сгенерированного кода, вы должны:
|
Блоки Lookup Table (2-D) имеют настраиваемые параметры. | При настройке параметров в процессе моделирования или при выполнении сгенерированного кода, вы должны:
|
Блоки Lookup Table (n-D) имеют настраиваемые параметры. | При настройке параметров в процессе моделирования или при выполнении сгенерированного кода, необходимо сохранить увеличивающуюся монотонность значений точки останова для каждой табличной размерности Breakpoints n. |
Если у вас есть лицензия Simulink Check, можно исключить блоки и графики от этой проверки.
Обзор исключения Model Advisor (Simulink Check)
ID проверки: mathworks.codegen.MdlrefConfigMismatch
Идентифицируйте настройки параметра конфигурации модели, на которые ссылаются, которые не совпадают с настройками параметра конфигурации топ-модели.
Генератор кода не может создать код для топ-моделей, которые содержат модели, на которые ссылаются, с различными, несовместимыми настройками параметра конфигурации.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
У топ-модели и модели, на которую ссылаются есть противоречивые настройки параметра конфигурации модели. | Измените заданные настройки конфигурации модели. |
ID проверки: mathworks.codegen.SampleTimesTaskingMode
Настройте шаг расчета и режим управления задачами для вашей системы.
Неправильный режим управления задачами может привести к неэффективному выполнению кода или неправильному сгенерированному коду.
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Модель представляет многоскоростную систему, но не сконфигурирована для многозадачности. | Выберите параметр конфигурации модели Treat each discrete rate as a separate task. Когда вы выбираете параметр, многозадачное выполнение применяется для многоскоростной модели. Для получения дополнительной информации смотрите Основанное на времени Планирование и Генерацию кода. |
Модель сконфигурирована для многозадачности, но многозадачность не желательна на целевом компьютере. Например, операционная система не поддерживает многопроцессорную обработку, или целевой компьютер является пустым металлом (не запускает операционную систему), и приложение не предусматривает многозадачную схему выполнения. | Параметр конфигурации модели Clear Treat each discrete rate as a separate task. Когда вы очищаете параметр, однозадачное выполнение применяется. В качестве альтернативы измените настройки на панели Hardware Implementation. Для получения дополнительной информации смотрите Основанное на времени Планирование и Генерацию кода. |
ID проверки: mathworks.codegen.ModelRefRTWConfigCompliance
Проверки на модели, на которые ссылаются, в модели, ссылающейся на иерархию, для которой генерация кода изменяет настройки параметра конфигурации, которые включают форматы идентификатора.
В моделях, на которые ссылаются, если следующий Configuration Parameters> Code Generation> параметры Identifiers имеют настройки, которые не содержат $R
лексема (который представляет имя образца модели), генерация кода предварительно ожидает $R
лексема к формату идентификатора.
Global variables
Global types
Subsystem methods
Constant macros
Доступный с Simulink Coder.
Условие | Рекомендуемое действие |
---|---|
Скрипт, который работает со сгенерированным кодом, использует имена модели та генерация кода изменения. | Обновите скрипт, чтобы использовать сгенерированное имя (который включает добавленный |
ID проверки: 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 и подсистем, которые вы хотите использовать, чтобы сгенерировать код.
Советник Генерации кода включает следующие проверки от Simulink, Simulink Coder и Embedded Coder для каждой из целей генерации кода. Две проверки, уникальные для Советника Генерации кода, включены ниже списка.
Проверять | КПД выполнения (все цели) | КПД ROM (Основанные на ERT цели) | КПД RAM (Основанные на ERT цели) | Меры безопасности (Основанные на ERT цели) | Трассируемость (Основанные на ERT цели) | Отладка (все цели) | Инструкции MISRA C:2012 (Основанные на 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 доступен | Нет данных |
Проверяйте на блоки, не рекомендуемые для 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 доступен | Нет данных |
Проверяйте на выражения случая переключателя без случая по умолчанию (Embedded Coder) | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Нет данных | Включенный, если Embedded Coder доступен | Нет данных |
Проверяйте параметры конфигурации на генерацию неэффективного кода насыщения (Embedded Coder) | Включенный, если Embedded Coder доступен | Включенный, если Embedded Coder доступен | Нет данных | Включенный, если Embedded Coder доступен | Нет данных | Нет данных | Нет данных | Нет данных |
Примечание
То, когда Советник Генерации кода проверяет вашу модель по цели инструкций MISRA C:2012, инструмент не рассматривает все настройки параметра конфигурации, которые проверяются инструкциями 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)
Проверяйте настройки параметра конфигурации на модель против целей генерации кода.
Каждый параметр в диалоговом окне Configuration Parameters может иметь различные рекомендуемые настройки для генерации кода на основе ваших целей. Эта проверка помогает вам идентифицировать рекомендуемую установку для каждого параметра так, чтобы можно было достигнуть оптимизированного кода на основе цели.
Условие | Рекомендуемое действие |
---|---|
Параметры устанавливаются на значения кроме значения, рекомендуемого для заданных целей. |
Установите параметры на рекомендуемые значения. Примечание Изменение в одном значении параметров может повлиять на другие параметры. Передача проверки может взять несколько итераций. |
Нажатие на Modify Parameters изменяет значения параметров в рекомендуемые значения.