Разработка библиотеки Quick Start

В этом примере показано, как разработать библиотеку замены кода, которая включает запись для генерации кода замены для математической функции sin. Вы используете Code Replacement Tool.

Необходимые условия

Чтобы завершить этот пример, установите следующее программное обеспечение:

  • MATLAB®

  • Файлы MATLAB Coder™

  • Embedded Coder®

  • Компилятор C

Инструкции по установке MathWorks® продукты, см. Установка и лицензирование. Если вы установили MATLAB и хотите увидеть, какие другие продукты MathWorks установлены, в Командном окне, введите ver.

Список поддерживаемых компиляторов см. в разделе https://www.mathworks.com/support/compilers/current_release/.

Откройте Code Replacement Tool

  1. Запуск нового сеанса работы с MATLAB.

  2. Создайте или перемещайтесь (cd) в пустую папку.

  3. В командной строке введите crtool команда. Откроется Code Replacement Tool окно.

Создайте таблицу замещения кода

  1. В Code Replacement Tool окне выберите File > New table.

  2. На правой панели назовите таблицу crl_table_sinfcn и нажмите Apply. Позже, когда вы сохраняете таблицу, инструмент сохраняет ее с именем файла crl_table_sinfcn.m.

Создание записи таблицы

Создайте запись таблицы, которая сопоставляет sin функция со double входные и double выход в пользовательскую функцию реализации.

  1. На левой панели выберите таблицу crl_table_sinfcn. Затем выберите File > New entry > Function. Новая запись появится на средней панели, первоначально без имени.

  2. На средней панели выберите новую запись.

  3. На правой панели, на вкладке Mapping Information, в меню Function, выберите sin.

  4. Оставьте Algorithm установленным на Unspecifiedи оставьте параметры в группе Conceptual function равными значениям по умолчанию.

  5. В группе Replacement function назовите функцию замены sin_dbl.

  6. Оставьте оставшиеся параметры в группе Replacement function установленными на значения по умолчанию.

  7. Нажмите Apply. Инструмент обновляет Function signature preview, чтобы отразить указанное имя функции замены.

  8. Перейдите в нижнюю часть вкладки Mapping Information и нажмите Validate entry. Инструмент проверяет вашу запись.

На следующем рисунке показана полная информация о отображении.

Укажите сведения о сборке для кода замены

  1. На вкладке Build Information для параметра Implementation header file введите sin_dbl.h.

  2. Оставьте оставшиеся параметры равными значениям по умолчанию.

  3. Нажмите Apply.

  4. Вы также можете переоценить запись. Вернитесь на вкладку Mapping Information и нажмите Validate entry.

Создайте другую запись таблицы

Создайте запись, которая сопоставляет sin функция со single входные и double выход в пользовательскую функцию реализации с именем sin_sgl. Создайте запись путем копирования и вставки sin_dbl запись.

  1. На средней панели выберите sin_dbl запись.

  2. Выберите Edit > Copy

  3. Выберите Edit > Paste

  4. На вкладке Mapping Information, в разделе Conceptual function, установите тип данных входных параметров u1 на single.

  5. В Replacement function разделе назовите функцию sin_sgl. Установите тип данных входных параметров u1 на single.

  6. Нажмите Apply. Обратите внимание на изменения, которые появляются для Function signature preview.

  7. На вкладке Build Information для параметра Implementation header file введите sin_sgl.h. Оставьте оставшиеся параметры равными значениям по умолчанию и нажмите Apply.

Проверьте таблицу замещения кода

  1. Выберите Actions > Validate table.

  2. Если инструмент сообщает об ошибках, исправьте их и повторите валидацию. Повторите исправление и проверку ошибок, пока инструмент не сообщит об ошибках. Следующий рисунок показывает отчет о валидации.

Сохраните таблицу замещения кода

Сохраните таблицу замещения кода в файл MATLAB в рабочей папке. Выберите File > Save table. По умолчанию инструмент использует имя таблицы для присвоения имени файлу. В данном примере инструмент сохраняет таблицу в файле crl_table_sinfcn.m.

Проверьте определение таблицы замещения кода

Рассмотрите просмотр кода MATLAB для определения таблицы замещения кода. После использования инструмента для создания начальной версии файла определения таблицы можно обновить, улучшить или скопировать файл в текстовом редакторе.

Чтобы просмотреть его, в MATLAB или другом текстовом редакторе откройте файл crl_table_sinfcn.m.

Сгенерируйте файл регистрации

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

  1. В инструменте замены кода выберите File > Generate registration file.

  2. В диалоговом окне Generate registration file отредактируйте поля диалогового окна так, чтобы они совпадали со следующим рисунком, и нажмите OK.

  3. В диалоговом окне Select location to save the registration file укажите местоположение файла регистрации. Расположение должно быть в пути MATLAB или в текущей рабочей папке. Сохраните файл. Инструмент сохраняет файл следующим rtwTargetInfo.m.

Зарегистрируйте таблицу замещения кода

В командной строке введите:

RTW.TargetRegistry.getInstance('reset');

Обзор и замена тестового кода

Применить библиотеку замещения кода. Проверьте, что генератор кода производит замену кода, которую вы ожидаете.

  1. Проверьте наличие ошибок. В командной строке активируйте файл определения таблицы. Для примера:

    Если ошибка существует в файле определения, вызов инициирует появление сообщения. Исправьте ошибку и повторите попытку.

    tbl = crl_table_sinfcn
    
    tbl =
    
    TflTable with properties:
                   Version: '1.0'
           ReservedSymbols: []
       StringResolutionMap: []
                AllEntries: [2x1 RTW.TflCFunctionEntry]
               EnableTrace: 1|
  2. Используйте средство просмотра замещения кода для проверки записей замещения кода. Для примера:

    crviewer('Sin Function Example')

    В средстве просмотра выберите записи в таблице и проверьте, что содержимое - это то, что вы ожидаете. Средство просмотра может помочь вам обнаружить такие проблемы, как:

    • Неправильный порядок аргументов.

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

    • Неправильные параметры приоритета.

  3. Идентифицируйте существующий или создайте новый код MATLAB, который вызывает sin функция. Для примера:

    function y = my_sin_fnc(x)
      y = sin(x);
    end
  4. Откройте приложение MATLAB Coder.

  5. Добавьте функцию, которая включает вызов к sin функция как файл точки входа. Для примера добавьте my_sin_func.m. Приложение создает проект с именем my_sin_func.prj.

  6. Щелкните Next, чтобы перейти к Define Input Type шагу. Определите типы для входных параметров функции точки входа.

  7. Щелкните Next, чтобы перейти к Check for Run-Time Issues шагу. Этот шаг является необязательным. Однако лучшая практика выполнить этот шаг. Предоставьте тестовый файл, который вызывает вашу функцию точки входа. Приложение генерирует MEX-функцию из функции точки входа. Затем приложение запускает тестовый файл, заменяя вызовы функции MATLAB вызовами сгенерированной MEX-функции.

  8. Щелкните Next, чтобы перейти к Generate Code шагу. Чтобы открыть диалоговое окно Generate, щелкните стрелу Generate.

  9. Установите Build type, чтобы сгенерировать библиотеку или исполняемый файл.

  10. Нажмите More Settings.

  11. Сконфигурируйте генератор кода, чтобы использовать библиотеку замены кода. На вкладке Custom Code установите для параметра Code replacement library имя библиотеки. Для примера, Sin Function Example.

  12. Сконфигурируйте отчет генерации кода. На вкладке Debug установите параметры Always create a report, Code replacements и Automatically launch a report if one is generated.

  13. Сконфигурируйте генератор кода, чтобы сгенерировать код только. Для Build type выберите Source code. Перед созданием исполняемого файла необходимо просмотреть изменения кода в сгенерированном коде.

  14. Щелкните Generate, чтобы сгенерировать код С и отчет.

  15. Просмотрите результаты замены кода в разделе «Отчет о замене кода» отчета генерации кода.

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

  16. Проверьте замены кода. В отчете щелкните функцию MATLAB, которая инициировала замену, my_sin_func.m. Откроется Редактор MATLAB, который подсвечивает вызов функции, который запускает замену кода.

Похожие темы