Что такое заменяющая индивидуальная настройка кода?

Настройте, как и когда генератор кода заменяет код C/C++, который он генерирует по умолчанию для функций и операторов путем разработки заменяющей библиотеки пользовательского кода. Можно разработать библиотеки в интерактивном режиме с Code Replacement Tool или программно.

  • Разработайте библиотеки, адаптированные в соответствии с определенными требованиями к приложению

  • Добавьте идентификаторы в список зарезервированных слов, которые генератор кода рассматривает во время замены кода

  • Настройте процесс соответствия и замены генератора кода для функций

Начать, Заменяющая Разработка Библиотеки Быстрого запуска Кода - Simulink®.

Заменяющее соответствие кода и заменяющий процесс

Когда генератор кода сталкивается с сайтом вызова для функции или оператора, этого:

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

  2. Использует объект записи запросить сконфигурированную заменяющую библиотеку кода для концептуального соответствия представления. Генератор кода ищет таблицы в заменяющей библиотеке кода для соответствия в порядке, что таблицы появляются в библиотеке. При поиске соответствия генератор кода учитывает:

    • Концептуальное имя или ключ

    • Аргументы, включая количество, вводят, вводят спецификаторы и сложность

    • Алгоритм (метод вычисления)

    • Насыщение фиксированной точки и округление режимов

    • Приоритет

  3. Когда соответствие существует, генератор кода возвращает заменяющий объект кода, полностью заполненный с концептуальным представлением, представлением реализации и приоритетом. Если генератор кода находит несколько соответствий в рамках таблицы, приоритет записи определяет соответствие. Приоритет может колебаться от 0 до 100. Самый высокий приоритет 0. Генератор кода использует более высокое подтверждение преимущественного права по подобной записи с более низким приоритетом.

  4. Использует C или заменяющего прототипа функции C++ в заменяющем объекте кода сгенерировать код.

Заменяющие ограничения индивидуальной настройки кода

  • Заменяющая верификация кода — возможно, что замена кода ведет себя по-другому, чем вы ожидаете. Например, типы данных, которые вы наблюдаете во входе генератора кода, не могут совпадать с тем, что генератор кода использует в качестве промежуточных типов данных во время операции. Проверьте замены кода путем исследования сгенерированного кода. Смотрите Проверяют Замены Кода.

  • Замена кода для матриц — заменяющие библиотеки Кода не поддерживают замену функций, которые имеют входные параметры переменного размера.

  • Лексемы в путях к файлам — можно включать лексемы в пути к файлам при указывании информации сборки для заменяющей записи кода при помощи интерфейса программирования только. Способность включать лексемы не доступна от Заменяющего Инструмента Кода. Смотрите Указывают информацию Сборки для Заменяющего Кода.

  • Операция сложения и замены операции вычитания — SeeAddition и Замена Оператора вычитания Кода для соответствующих ограничений.

  • Выравнивание данных —

    • Не поддерживаемый для

      • Аргументы сопоставили со встроенным пользовательским классом памяти с набором DataScope к Exported или импортированным встроенным пользовательским классом памяти GetSet

      • Программное обеспечение в цикле (SIL)

      • Процессор в цикле (PIL)

      • Параметры модели - ссылки

      • Экспортируемые функции в графиках Stateflow®

      • Замененные функции, которые сгенерированы с управлением прототипом функции C или аргументами I/O класса C++, продвигаются метод и тот I/O корневого уровня использования переменные

      • Замененные функции, которые сгенерированы с системным конечным файлом AUTOSAR и тем вводом-выводом корневого уровня использования или межвыполнимыми функциями доступа AUTOSAR

    • Если следующие условия существуют, генератор кода включает директивы выравнивания данных для переменных I/O корневого уровня в ert_main.c или файле ert_main.cpp, который это производит:

      • Компилятор поддерживает выравнивание глобальной переменной

      • Сгенерируйте пример основная программа (выберите Configuration Parameters> Generate an example main program),

      • Сгенерируйте допускающий повторное использование функциональный интерфейс для модели (установите Configuration Parameters> Code Generation> Interface> Code interface packaging к Reusable function),

      • Функция использует переменные I/O корневого уровня, которые передаются в в качестве отдельных аргументов (установите Configuration Parameters> Code Generation> Interface> Pass root-level I/O as к Individual arguments),

      • Замененная функция использует переменную I/O корневого уровня

      • Замененная функция налагает требования выравнивания

      Если вы отбрасываете сгенерированный пример основная программа, выравниваете используемые переменные I/O корневого уровня правильно.

      Если вы принимаете решение не сгенерировать пример основная программа в этом случае, генератор кода не заменяет функцию.

    • Если замена налагает требования выравнивания к разделяемым служебным интерфейсным аргументам, генератор кода не соблюдает выравнивание данных. При этих условиях не происходит замена. Замена позволена, если зарегистрированная спецификация типа выравнивания данных поддерживает выравнивание локальных переменных, и замена включает только локальные переменные.

    • Для Simulink.Bus:

      • Если указанные спецификации выравнивания пользователя не делают полевого выравнивания опорной конструкции, выравнивание объектов Simulink.Bus не поддержано, если Simulink.Bus не импортируется.

      • При выравнивании объекта данных Simulink.Bus элементы в объекте шины выравниваются на том же контуре. Контур является наименьшим общим кратным требований выравнивания для каждого отдельного элемента шины.

    • Когда вы задаете выравнивание для функций, которые происходят в иерархии модели - ссылки, и многоуровневые модели в иерархии работают с теми же функциональными данными, самая нижняя модель диктует выравнивание для остальной части иерархии. Если требование выравнивания для функции в модели выше в иерархии не может соблюдаться из-за выравнивания, установленного моделью ниже в иерархии, замена в более высокой модели не происходит. В некоторых случаях сообщение об ошибке сгенерировано. Чтобы работать вокруг этой проблемы, если разделяемые данные представлен шиной или объектом сигнала, вручную устанавливает свойство выравнивания на разделяемых данных путем установки свойства выравнивания объекта Simulink.Bus или Simulink.Signal.

    • Именно ваша ответственность соблюдать установку свойства Alignment для пользовательских классов памяти вы создаете.

    Смотрите выравнивание данных для замены кода.

  • Функция coder.replace — Видит coder.replace для соответствующих ограничений.

Похожие темы