Сгенерируйте встроенный код подсистемы

Чтобы встроить код подсистемы с вашим типовым кодексом, сконфигурируйте невиртуальную подсистему. В диалоговом окне Subsystem Parameters параметр Function packaging задает формат сгенерированного кода подсистемы. Этот параметр имеет эти настройки:

  • 'auto'

  • Встроенный

  • Функция одноразового использования

  • Допускающая повторное использование функция

Генератор кода может сгенерировать встроенный код для Auto или Inline настройки. Встроенная установка явным образом направляет генератор кода, чтобы встроить код подсистемы безусловно.

Auto по умолчанию установка направляет генератор кода, чтобы сгенерировать самый эффективный код для подсистемы на основе типа и количества экземпляров подсистемы, которые существуют в модели. Когда существует только один экземпляр подсистемы, Auto установка встраивает код подсистемы. В Embedded Coder®, когда существует несколько экземпляров подсистемы, которые являются не слишком комплексными, Auto установка встраивает код для каждой подсистемы. В противном случае, Auto установка генерирует одну копию функции (как допускающая повторное использование функция). Для подсистемы вызова функций, которая имеет несколько вызывающих сторон, Auto установка генерирует код подсистемы, который сопоставим с Nonreusable function установка.

Сконфигурируйте подсистему к встроенному коду

  1. Щелкните правой кнопкой по блоку Subsystem. Из контекстного меню выберите Block Parameters (Subsystem).

  2. В диалоговом окне Subsystem Parameters, если подсистема является виртуальной, выбирают Treat as atomic unit. Эта опция делает подсистему невиртуальной. На вкладке Code Generation опция Function packaging теперь доступна.

  3. Кликните по вкладке Code Generation и выберите Auto или Inline от параметра Function packaging.

  4. Нажмите Apply и закройте диалоговое окно.

    Граница подсистемы утолщает, указывая, что это является невиртуальным.

Когда вы генерируете код из своей модели, генератор кода встраивает код подсистемы в modelC или model.cpp (или в родительском системном исходном файле того файла). Можно идентифицировать этот код системой идентификации и тегами идентификации блока, такими как:

/* Atomic SubSystem Block: <Root>/AtomicSubsys1 */

Исключения к встраиванию

Существуют определенные случаи, в которых генератор кода не встраивает невиртуальную подсистему, даже при том, что вы выбираете Inline установка.

  • Если невстроенные S-вызовы-функции подсистема вызова функций, генератор кода игнорирует Inline установка. Поскольку невстроенные S-функции используют указатели функции, чтобы сделать вызовы функции, генератор кода должен сгенерировать функцию со всеми существующими аргументами.

  • В обратной связи включающие подсистемы вызова функций генератор кода генерирует функцию вместо встроенного кода для одной из подсистем. На основе внутреннего, отсортированного порядка подсистем генератор кода выбирает который подсистема сгенерировать функцию.

  • Если S-функция, Async Interrupt или блок Task Sync с опцией SS_OPTION_FORCE_NONINLINED_FCNCALL установите на TRUE вызывает подсистему, генератор кода генерирует функцию вместо встроенного кода для подсистемы. VxWorks® библиотека блоков (vxlib1) содержит пользовательский Async Interrupt и блоки Task Sync.[1]

Параметр Function packaging отключен в блоках Simulink Function.

Смотрите также


[1] VxWorks является зарегистрированной торговой маркой Wind River® Systems, Inc.

Для просмотра документации необходимо авторизоваться на сайте