В этом примере показано, как разработать заменяющую библиотеку кода, которая включает запись для генерации заменяющего кода для математической функции sin
. Вы используете Code Replacement Tool.
Чтобы завершить этот пример, установите следующее программное обеспечение:
MATLAB®
MATLAB Coder™
Embedded Coder®
Компилятор C
Для получения инструкций по установке MathWorks® продукты, смотрите Установку и Лицензирование. Если вы установили MATLAB и хотите видеть то, что другие Продукты Mathworks установлены в Командном окне, войти ver
.
Для списка поддерживаемых компиляторов смотрите https://www.mathworks.com/support/compilers/current_release/
.
Запустите новый сеанс работы с MATLAB.
Создайте или перейдите (cd
) к пустой папке.
В командной строке введите crtool
команда. Окно Code Replacement Tool открывается.
В окне Code Replacement Tool выберите File> New table.
На правой панели назовите таблицу crl_table_sinfcn
и нажмите Apply. Позже, когда вы сохранили таблицу, инструмент сохраняет ее с именем файла crl_table_sinfcn.m
.
Создайте запись таблицы это карты a sin
функция с double
введите и double
выведите к функции пользовательской реализации.
На левой панели выберите таблицу crl_table_sinfcn
. Затем выберите File> New entry> Function. Новая запись появляется в средней панели, первоначально без имени.
В средней панели выберите новую запись.
На правой панели, на вкладке Mapping Information, в меню Function, выбирают sin
.
Оставьте набор Algorithm Unspecified
, и оставьте параметры в наборе группы Conceptual function к значениям по умолчанию.
В группе Replacement function назовите заменяющую функцию sin_dbl
.
Оставьте остающиеся параметры в наборе группы Replacement function к значениям по умолчанию.
Нажмите Apply. Инструмент обновляет Function signature preview, чтобы отразить заданное заменяющее имя функции.
Прокрутите к нижней части вкладки Mapping Information и нажмите Validate entry. Инструмент подтверждает вашу запись.
Следующий рисунок показывает завершенную информацию об отображении.
На вкладке Build Information, для параметра Implementation header file, вводят sin_dbl.h
.
Оставьте остающийся набор параметров значениям по умолчанию.
Нажмите Apply.
Опционально, можно подтвердить запись. Возвратитесь к вкладке Mapping Information и нажмите Validate entry.
Создайте запись это карты a sin
функция с single
введите и double
выведите к функции с именем пользовательской реализации sin_sgl
. Создайте запись путем копирования и вставки sin_dbl
запись.
В средней панели выберите sin_dbl
запись.
Выберите Edit> Copy
Выберите Edit> Paste
На вкладке Mapping Information, в разделе Conceptual function, устанавливает тип данных входного параметра u1
к single
.
В разделе Replacement function назовите функцию sin_sgl
. Установите тип данных входного параметра u1
к single
.
Нажмите Apply. Обратите внимание на изменения, которые появляются для Function signature preview.
На вкладке Build Information, для параметра Implementation header file, вводят sin_sgl.h
. Оставьте остающийся набор параметров значениям по умолчанию и нажмите Apply.
Выберите Actions> Validate table.
Если ошибки отчетов инструмента, зафиксируйте их и повторно выполните валидацию. Повторите фиксацию и проверку ошибок, пока инструмент не сообщит об ошибках. Следующий рисунок показывает отчет валидации.
Сохраните заменяющую таблицу кода к файлу MATLAB в вашей рабочей папке. Выберите File> Save table. По умолчанию инструмент использует имя таблицы, чтобы назвать файл. В данном примере инструмент сохранил таблицу в файле crl_table_sinfcn.m
.
Рассмотрите рассмотрение кода MATLAB для вашего заменяющего табличного определения кода. После использования инструмента, чтобы создать начальную версию табличного файла определения, можно обновить, улучшить или скопировать файл в текстовом редакторе.
Чтобы рассмотреть его, в MATLAB или другом текстовом редакторе, открывают файл crl_table_sinfcn.m
.
Прежде чем можно будет использовать заменяющую таблицу кода, необходимо указать ее как часть заменяющей библиотеки кода. Используйте Заменяющий Инструмент Кода, чтобы сгенерировать регистрационный файл.
В Заменяющем Инструменте Кода выберите File> Generate registration file.
В диалоговом окне Generate registration file отредактируйте поля диалогового окна, чтобы соответствовать следующему рисунку, и затем нажать OK.
В диалоговом окне Select location to save the registration file задайте местоположение для регистрационного файла. Местоположение должно быть на пути MATLAB или в текущей рабочей папке. Сохраните файл. Инструмент сохранил файл как rtwTargetInfo.m
.
В командной строке, введите:
RTW.TargetRegistry.getInstance('reset');
Примените свою заменяющую библиотеку кода. Проверьте, что генератор кода делает замены кода, которые вы ожидаете.
Проверить ошибки. В командной строке вызовите табличный файл определения. Например:
Если ошибка существует в файле определения, вызов инициировал сообщение, чтобы появиться. Зафиксируйте ошибку и попробуйте еще раз.
tbl = crl_table_sinfcn tbl = TflTable with properties: Version: '1.0' ReservedSymbols: [] StringResolutionMap: [] AllEntries: [2x1 RTW.TflCFunctionEntry] EnableTrace: 1|
Используйте Заменяющее Средство просмотра Кода, чтобы проверять ваши заменяющие записи кода. Например:
crviewer('Sin Function Example')
В средстве просмотра выберите записи в своей таблице и проверьте, что содержимое - то, что вы ожидаете. Средство просмотра может помочь вам обнаружить проблемы, такие как:
Неправильный порядок аргументов.
Концептуальные имена аргумента, которые не совпадают с тем, что ожидается генератором кода.
Неправильные приоритетные настройки.
Идентифицируйте существующий или создайте новый код MATLAB, который вызывает sin
функция. Например:
function y = my_sin_fnc(x) y = sin(x); end
Примечание
Если вы заменяете пользовательскую функцию, используйте coder.replace
функция.
Откройте приложение MATLAB Coder.
Добавьте функцию, которая включает вызов sin
функционируйте как файл точки входа. Например, добавьте my_sin_func.m
. Приложение создает проект под названием my_sin_func.prj
.
Нажмите Next, чтобы перейти к шагу Define Input Type. Задайте типы для входных параметров функции точки входа.
Нажмите Next, чтобы перейти к шагу Check for Run-Time Issues. Этот шаг является дополнительным. Однако это - лучшая практика, чтобы выполнить этот шаг. Обеспечьте тестовый файл, который вызывает вашу функцию точки входа. Приложение генерирует MEX-функцию от вашей функции точки входа. Затем выполнение приложения тестовый файл, заменяя вызовы функции MATLAB с вызовами сгенерированной MEX-функции.
Нажмите Next, чтобы перейти к шагу Generate Code. Чтобы открыть диалоговое окно Generate, кликните по стреле Generate.
Установите Build type генерировать библиотеку или исполняемый файл.
Нажмите More Settings.
Сконфигурируйте генератор кода, чтобы пользоваться вашей заменяющей библиотекой кода. На вкладке Custom Code, установленной параметр Code replacement library на имя вашей библиотеки. Например, Sin Function Example
.
Сконфигурируйте отчет генерации кода. На вкладке Debug, набор Always create a report, Code replacements и параметры Automatically launch a report if one is generated.
Сконфигурируйте генератор кода, чтобы сгенерировать код только. Для Build type выберите Source code. Вы хотите рассмотреть свои замены кода в сгенерированном коде прежде, чем создать исполняемый файл.
Нажмите Generate, чтобы сгенерировать код С и отчет.
Рассмотрите заменяющие результаты кода в разделе Code Replacements Report отчета генерации кода.
Отчет указывает, что генератор кода нашел соответствие и применил заменяющий код для функционального sin_dbl
.
Рассмотрите замены кода. В отчете кликните по функции MATLAB, которая инициировала замену, my_sin_func.m
. Редактор MATLAB открывает и подсвечивает вызов функции, который инициировал замену кода.