exponenta event banner

Разработка библиотеки замены кода для быстрого запуска - Simulink

®

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

Предпосылки

Для завершения этого примера установите следующее программное обеспечение:

  • MATLAB ®

  • MATLAB Coder™

  • Симулинк ®

  • Симулинк Coder™

  • Встроенный кодер ®

  • Компилятор

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

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

Открыть инструмент замены кода

1. Запустите сеанс MATLAB.

2. Создание или навигация (cd) в пустую папку.

3. В командной строке введите crtool команда. Откроется окно Инструмент замены кода (Code Replacement Tool).

Создать таблицу замены кода

1. В окне Инструмент замены кода выберите Файл > Новая таблица

2. На правой панели присвойте таблице имя crl_table_sinfcn и нажмите «Применить». При сохранении таблицы инструмент сохраняет ее с именем файла crl_table_sinfcn.m.

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

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

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

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

3. На правой панели на вкладке «Информация о сопоставлении» в меню «Функция» выберите sin.

4. Для параметра «Оставить алгоритм» установлено значение Unspecifiedи оставьте в группе концептуальных функций значения по умолчанию.

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

6. Оставьте остальные параметры в группе Замещающая функция заданными значениями по умолчанию.

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

8. Выполните прокрутку до нижней части вкладки «Информация о сопоставлении» и щелкните Проверить запись. Инструмент проверяет вашу запись.

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

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

1. На вкладке Информация о сборке для параметра Файл заголовка реализации введите sin_dbl.h.

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

3. Нажмите кнопку «Применить».

4. При необходимости можно повторно проверить запись. Вернитесь на вкладку Информация о сопоставлении и щелкните Проверить запись.

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

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

1. В средней области выберите sin_dbl вход.

2. Выберите меню «Правка» > «Копировать».

3. Выберите меню «Редактирование» > «Вставить».

4. На вкладке «Информация о сопоставлении» в разделе «Концептуальная функция» задайте тип данных входного аргумента. u1 кому single.

5. В разделе Функция замены назовите функцию sin_sgl. Задать тип данных входного аргумента u1 кому single.

6. Нажмите кнопку «Применить». Обратите внимание на изменения, отображаемые для предварительного просмотра подписи функции.

7. На вкладке Информация о сборке для параметра Файл заголовка реализации введите sin_sgl.h. Оставьте для остальных параметров значения по умолчанию и нажмите кнопку Применить.

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

1. Выберите Действия > Проверить таблицу.

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

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

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

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

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

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

Создание файла регистрации

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

1. В инструменте замены кода выберите «Файл» > «Создать файл регистрации».

2. В диалоговом окне «Создание файла регистрации» отредактируйте поля диалогового окна в соответствии со следующим рисунком и нажмите «ОК».

3. В диалоговом окне «Выбор местоположения для сохранения файла регистрации» укажите местоположение файла регистрации. Расположение должно находиться в пути 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. Определите существующую модель или создайте модель, включающую тригонометрический блок, для которого задано значение sin функция. Например:

4. Откройте модель и настройте ее для создания кода с помощью целевого устройства Embedded Coder (на основе ERT).

5. Проверьте, указана ли библиотека в качестве доступной опции для параметра конфигурации «Создание кода» > «Интерфейс» > «Модель библиотеки замены кода». Если он есть, выберите его.

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

6. Чтобы быстро найти параметры, в поле Поиск диалогового окна Параметры конфигурации введите имя параметра. Сконфигурируйте отчет о создании кода для анализа замены кода путем выбора следующих параметров:

  • Создание отчета о создании кода

  • Открыть отчет автоматически

  • Код к модели

  • Модель-код

  • Суммирование блоков, инициирующих замену кода

  • Включить комментарии

  • Комментарии блока Simulink

  • Описания блоков Simulink

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

8. Создайте код для модели.

9. Просмотрите результаты замены кода в разделе Отчет о замене кода отчета о создании кода.

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

10. Просмотрите замены кода. В окне модели щелкните правой кнопкой мыши блок «Тригонометрическая функция». Выберите C/C + + Code > Перейти к C/C + + Code. Откроется отчет о создании кода, в котором будет выделена замена кода вmy_sin_func.c. В этом случае заменен генератор кода sin с sin_dbl.

Подробнее

Связанные темы