Настройте, как и когда генератор кода заменяет код C/C++, который он генерирует по умолчанию для функций и операторов путем разработки заменяющей библиотеки пользовательского кода. Можно разработать библиотеки в интерактивном режиме с Code Replacement Tool или программно.
Разработайте библиотеки, адаптированные в соответствии с определенными требованиями к приложению
Добавьте идентификаторы в список зарезервированных слов, которые генератор кода рассматривает во время замены кода
Настройте процесс соответствия и замены генератора кода для функций
Начать, Заменяющая Разработка Библиотеки Быстрого запуска Кода - Simulink®.
Когда генератор кода сталкивается с сайтом вызова для функции или оператора, этого:
Создает и частично заполняет заменяющий объект записи кода с функцией или именем оператора или ключевыми и концептуальными аргументами.
Использует объект записи запросить сконфигурированную заменяющую библиотеку кода для концептуального соответствия представления. Генератор кода ищет таблицы в заменяющей библиотеке кода для соответствия в порядке, что таблицы появляются в библиотеке. При поиске соответствия генератор кода учитывает:
Концептуальное имя или ключ
Аргументы, включая количество, вводят, вводят спецификаторы и сложность
Алгоритм (метод расчета)
Насыщение фиксированной точки и округление режимов
Приоритет
Когда соответствие существует, генератор кода возвращает заменяющий объект кода, полностью заполненный с концептуальным представлением, представлением реализации и приоритетом. Если генератор кода находит несколько соответствий в рамках таблицы, приоритет записи определяет соответствие. Приоритет может лежать в диапазоне от 0 до 100. Самый высокий приоритет 0. Генератор кода использует более высокое подтверждение преимущественного права по подобной записи с более низким приоритетом.
Использует C или заменяющего прототипа функции C++ в заменяющем объекте кода сгенерировать код.
Заменяющая верификация кода — возможно, что замена кода ведет себя по-другому, чем вы ожидаете. Например, типы данных, которые вы наблюдаете во входе генератора кода, не могут совпадать с тем, что генератор кода использует в качестве промежуточных типов данных во время операции. Проверьте замены кода путем исследования сгенерированного кода. Смотрите Проверяют Заменяющую Библиотеку Кода.
Замена кода для матриц — заменяющие библиотеки Кода не поддерживают замену функций, которые имеют входные параметры переменного размера.
Лексемы в путях к файлам — можно включать лексемы в пути к файлам при указывании информации сборки для заменяющей записи кода при помощи интерфейса программирования только. Способность включать лексемы не доступна от Заменяющего Инструмента Кода. Смотрите Указывают информацию сборки в, Задают Заменяющую Оптимизацию Библиотеки Кода.
Операция сложения и замены операции вычитания — Видят Замену Оператора сложения и Оператора вычитания Кода для соответствующих ограничений.
Выравнивание данных —
Не поддерживаемый для
Аргументы сопоставлены со встроенным классом памяти с 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
для соответствующих ограничений.