Замена кода является методом, чтобы изменить код, который генератор кода производит для функций и операторов, чтобы удовлетворить требования кода приложения. Например, можно заменить сгенерированный код, чтобы удовлетворить требования, такие как:
Оптимизация для определенной среды выполнения, включая, но не ограниченный, определенного целевого компьютера.
Интеграция с кодом существующего приложения.
Податливость со стандартом, таким как AUTOSAR.
Модификация поведения кода, такого как включение или отключение неличной или встроенной поддержки.
Приложение - или специфичные для проекта требования кода, такие как:
Устранение math.h
.
Устранение системных заголовочных файлов.
Устранение вызовов memcpy
или memset
.
Использование BLAS.
Использование определенного BLAS.
Чтобы применить этот метод, сконфигурируйте генератор кода, чтобы применить заменяющую библиотеку кода (CRL) во время генерации кода. По умолчанию генератор кода не применяет заменяющую библиотеку кода. Можно выбрать из библиотек, которые MathWorks® обеспечивает и что вы создаете и указываете при помощи продукта Embedded Coder®. Список доступных библиотек зависит от:
Установленные пакеты поддержки.
Системный конечный файл, язык, стандартная математическая библиотека и настройка поставщика устройства.
Создали ли вы и указали библиотеки, с помощью продукта Embedded Coder.
Библиотеки, которые включают расширения GNU99, предназначаются для использования с компилятором GCC. Если вы пользуетесь одной из тех библиотек с другим компилятором, сгенерированный код не может скомпилировать.
code replacement library состоит из одной или нескольких заменяющих таблиц кода, которые задают специализированные реализации функций и операторов. Например, библиотека для определенного встраиваемого процессора задает функцию и замены оператора, которые оптимизируют сгенерированный код для того процессора.
code replacement table содержит один или несколько code replacement entries с каждой записью, представляющей потенциальную замену для функции или оператора. Каждая запись сопоставляет conceptual representation функции или оператора к implementation representation и приоритету.
Компонент записи таблицы | Описание |
---|---|
Концептуальное представление | Идентифицирует запись таблицы и содержит критерии соответствия генератора кода. Состоит из:
|
Представление реализации | Задает заменяющий код. Состоит из:
|
Приоритет | Задает приоритет записи относительно других записей в таблице. Значение может лежать в диапазоне от 0 до 100, с 0 являющийся самым высоким приоритетом. Если многократные въезды имеют тот же приоритет, генератор кода использует первое соответствие с тем приоритетом. |
Когда генератор кода ищет соответствие в заменяющей библиотеке кода, он создает и заполняет call site object с функцией или оператором концептуальное представление. Если соответствие существует, генератор кода использует совпадающую заменяющую запись кода, заполненную с представлением реализации, и использует его, чтобы сгенерировать код.
Генератор кода ищет таблицы в заменяющей библиотеке кода для соответствия в порядке, что таблицы появляются в библиотеке. Если генератор кода находит несколько соответствий в рамках таблицы, приоритет определяет соответствие. Генератор кода использует более высокое подтверждение преимущественного права по подобной записи с более низким приоритетом.
Термин | Определение |
---|---|
Удачное обращение в кэш | Заменяющая запись кода для функции или оператора, заданного в заданной заменяющей библиотеке кода, для которой генератор кода находит соответствие. |
Неудачное обращение в кэш | Концептуальное представление функции или оператора, для которого генератор кода не находит соответствие. |
Вызовите объект сайта | Концептуальное представление функции или оператора, который использует генератор кода, когда это сталкивается с сайтом вызова для функции или оператора. Генератор кода использует объект запросить заменяющую библиотеку кода для концептуального соответствия представления. Если соответствие существует, генератор кода возвращает заменяющий объект кода, полностью заполненный с концептуальным представлением, представлением реализации, и приоритетом и использованием, которое возражает, чтобы сгенерировать заменяющий код. |
Заменяющая библиотека кода | Одна или несколько заменяющих таблиц кода, которые задают специализированные реализации функций и операторов. Когда сконфигурировано, чтобы пользоваться заменяющей библиотекой кода, генератор кода использует критерии, заданные в библиотеке, чтобы искать соответствия. Если соответствие найдено, генератор кода заменяет код, который это генерирует по умолчанию со специализированным кодом, заданным в библиотеке. |
Заменяющая таблица кода | Одна или несколько заменяющих записей таблицы кода. Обеспечивает способ сгруппировать связанные или совместно использованные записи для использования в различных библиотеках. |
Заменяющая запись кода | Представляет потенциальную замену для функции или оператора. Сопоставляет концептуальное представление функции или оператора к представлению реализации и приоритету. |
Концептуальный аргумент | Представляет аргумент ввода или вывода для функции или заменяемого оператора. Концептуальные аргументы наблюдают соглашения о присвоении имен ('y1' , 'u1' , 'u2' ...) и типы данных, знакомые генератору кода. |
Концептуальное представление | Представляет критерии соответствия что использование генератора кода, чтобы квалифицировать функции и операторы для замены. Состоит из:
|
Аргумент Implementation | Представляет аргумент ввода или вывода для C или заменяющей функции C++. Аргументы реализации наблюдают имя C/C++ и спецификации типа данных. |
Представление реализации | Задает C или заменяющего прототипа функции C++. Состоит из:
|
Ключ | Идентифицирует функцию или оператор, который заменяется. Имя функции или ключ появляются в концептуальном представлении заменяющей записи кода. Ключ RTW_OP_ADD идентифицирует оператор сложения. |
Приоритет | Задает приоритет соответствия для заменяющей записи кода относительно других записей, которые имеют то же имя и концептуальный список аргументов в заменяющей библиотеке кода. Приоритет может лежать в диапазоне от 0 до 100, с 0 являющийся самым высоким приоритетом. Значение по умолчанию равняется 100. Если библиотека обеспечивает две реализации для функции или оператора, реализацию с более высокими приоритетными тенями та с более низким приоритетом. |
Заменяющая верификация кода — возможно, что замена кода ведет себя по-другому, чем вы ожидаете. Например, типы данных, которые вы наблюдаете во входе генератора кода, не могут совпадать с тем, что генератор кода использует в качестве промежуточных типов данных во время операции. Проверьте замены кода путем исследования сгенерированного кода.
Замена кода для матриц — заменяющие библиотеки Кода не поддерживает Динамические и Символьные размерные матрицы.