Настройка системных целевых файлов

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

Управляйте генерацией кода с помощью системного целевого файла

Системный целевой файл управляет стадией генерации кода процесса сборки. Системный целевой файл также позволяет управлять представлением целевого объекта конечному пользователю. Системный целевой файл обеспечивает

  • Определения переменных, которые являются основополагающими для процесса сборки, такие как значение для CodeFormat Переменная TLC

  • Основная точка входа в программу TLC верхнего уровня, которая генерирует код

  • Целевая информация для отображения в браузере системных целевых файлов

  • Механизм для определения целевых опций генерации кода (и других параметров, связанных с процессом сборки) и для их отображения в диалоговом окне Параметров конфигурации

  • Механизм наследования опций от другого целевого объекта (такого как Embedded Real-Time (ERT) целевой объект)

Обратите внимание, что, хотя системный целевой файл является файлом Target Language Compiler (TLC), он содержит встроенный MATLAB® код. Перед созданием или изменением системного целевого файла необходимо получить рабочие знания о TLC и языке MATLAB. Target Language Compiler и Scripts vs. Functions описывают функции и синтаксис как языков TLC, так и MATLAB.

При прочтении этого раздела можно обратиться к системным целевым файлам, поставляемым с генератором кода. Большинство из этих файлов хранятся в папках, относящихся к целевому объекту matlabroot/ rtw/c (откройте). Дополнительные системные целевые файлы хранятся под matlabroot/ toolbox/rtw/targets (откройте).

Соглашения об именовании и расположении системных целевых файлов

Системный целевой файл должен быть расположен в папке на пути MATLAB, чтобы целевой файл был отображен в System Target File Browser и активирован в процессе сборки. Следуйте соглашениям о местоположении и именовании для системных целевых файлов и связанных с ними целевых файлов, приведенным в соглашениях о именовании папок и файлов.

Структура системного целевого файла

Обзор

Этот раздел является руководством по структуре и содержимому системного целевого файла. В следующем списке показана общая структура системного целевого файла. Обратите внимание, что это не полный список кодов системного целевого файла. Список состоит из выдержек из каждого из разделов, составляющих системный целевой файл.

%%----------------------------
%% Header Comments Section
%%----------------------------
%% SYSTLC: Example Real-Time Target
%%    TMF: my_target.tmf MAKE: make_rtw
%% Initial comments contain directives for STF Browser.
%% Documentation, date, copyright, and other info may follow.
          ...
%selectfile NULL_FILE
         ...
%%----------------------------
%% TLC Configuration Variables Section
%%----------------------------
%% Assign code format, language, target type.
%%
%assign CodeFormat = "Embedded-C"
%assign TargetType = "RT"
%assign Language   = "C"
%%
%%----------------------------
%% TLC Program Entry Point
%%----------------------------
%% Call entry point function.
%include "codegenentry.tlc"
%%
%%----------------------------
%% (OPTIONAL) Generate Files for Build Process
%%----------------------------
%include "mytarget_genfiles.tlc"
%%----------------------------
%% RTW_OPTIONS Section
%%----------------------------
/%
  BEGIN_RTW_OPTIONS
  %% Define rtwoptions structure array. This array defines target-specific
  %% code generation variables, and controls how they are displayed.
  rtwoptions(1).prompt = 'example code generation options';
        ...
  rtwoptions(6).prompt = 'Show eliminated blocks';
  rtwoptions(6).type = 'Checkbox';
         ...
  %----------------------------------------%
  % Configure RTW code generation settings %
  %----------------------------------------%
         ...
  %%----------------------------
  %% rtwgensettings Structure
  %%----------------------------
  %% Define suffix text for naming build folder here.
  rtwgensettings.BuildDirSuffix = '_mytarget_rtw'
  %% Callback compatibility declaration
  rtwgensettings.Version = '1';

  %% (OPTIONAL) target inheritance declaration
  rtwgensettings.DerivedFrom = 'ert.tlc';
  %% (OPTIONAL) other rtwGenSettings fields...
         ...
  END_RTW_OPTIONS
%/
%%----------------------------
%% targetComponentClass - MATHWORKS INTERNAL USE ONLY
%% REMOVE NEXT SECTION FROM USER_DEFINED CUSTOM TARGETS
%%----------------------------
/%
  BEGIN_CONFIGSET_TARGET_COMPONENT
  targetComponentClass = 'Simulink.ERTTargetCC';
  END_CONFIGSET_TARGET_COMPONENT
%/

Если вы создаете пользовательский целевой файл на основе существующего системного целевого файла, необходимо удалить targetComponentClass раздел (ограничен директивами BEGIN_CONFIGSET_TARGET_COMPONENT и END_CONFIGSET_TARGET_COMPONENT). Этот раздел зарезервирован для использования целей, разработанных внутри MathWorks.

Комментарии к заголовку

Эти линии в заголовке файла форматируются как комментарии TLC. Они предоставляют необходимую информацию в System Target File Browser и в процесс сборки. Обратите внимание, что перед другими комментариями или операторами TLC необходимо поместить комментарии браузера в заголовок файла.

Наличие комментариев позволяет генератору кода обнаруживать системные целевые файлы. Когда откроется System Target File Browser, генератор кода сканирует путь MATLAB для файлов TLC, которые отформатировали комментарии заголовка. Комментарии содержат следующие директивы:

  • SYSTLC: дескриптор, который появляется в браузере.

  • TMF: имя шаблона make-файла (TMF), используемого в процессе сборки. Когда цель выбрана, это имя файла отображается в поле Template make file панели Code Generation диалогового окна Параметры Конфигурации.

  • MAKE: make команда, используемая в процессе сборки. Когда цель выбрана, эта команда отображается в Make command поле панели Code Generation диалогового окна Параметры конфигурации.

Следующие комментарии заголовка получены от matlabroot/ rtw/c/ert/ert.tlc.

%% SYSTLC: Embedded Coder TMF: ert_default_tmf MAKE: make_rtw
%% SYSTLC: Create Visual C/C++ Solution File for Embedded Coder\
%%    TMF: RTW.MSVCBuild MAKE: make_rtw
.
.
.

Каждый комментарий может содержать не более двух линии.

Если вы не задаете TMF поле в системном целевом файле, файл все еще действителен. Изменение значения для TemplateMakefile параметр, можно вместо этого использовать функцию обратного вызова, заданную rtwgensettings.SelectCallback.

Можно также использовать функцию обратного вызова, заданную rtwgensettings.SelectCallback для изменения значения параметров режима external mode, ExtMode, ExtModeTransport, ExtModeMexFile, или ExtModeIntrfLevel.

В комментариях заголовка можно задать несколько групп директивов. Каждая такая группа отображается как разное целевое строение в Диспетчере системных целевых файлов. В приведенном выше примере первые две строки кода определяют строение по умолчанию целевого устройства ERT. В следующих двух линиях задаётся строение, которая создает и создает Microsoft® Визуальный C++® Решение (.sln) файл. На рисунке ниже показано, как эти строения появляются в браузере системных целевых файлов.

Пример настроенных комментариев заголовка см. в разделе Создание пользовательском целевом строении.

Переменные строения TLC

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

Для целевого процессора в большинстве случаев следует просто использовать глобальные настройки переменной TLC, используемые целевым объектом ERT (ert.tlc). Особенно важно, чтобы ваш системный целевой файл использовал 'Embedded-C' значение для CodeFormat TLC переменной и использует соответствующую rtwgensettings.DerivedFrom = 'ert.tlc' в RTW_OPTIONS раздел файла TLC. Проверьте, что значения назначены следующим переменным:

  • CodeFormat: The CodeFormat Переменная TLC выбирает сгенерированный код функции. The 'Embedded-C' значение для этой переменной используется целевым устройством ERT. Ваш целевой объект на основе ERT должен указать 'Embedded-C' как значение для CodeFormat. Этот выбор предназначен для производственного кода, минимального использования памяти, статического выделения памяти и упрощенного интерфейса к сгенерированному коду.

    Для получения информации о других значениях для CodeFormat Переменная TLC, см. «Сравнение поддержки системных целевых файлов между продуктами».

  • Language: Единственное допустимое значение C, что позволяет поддерживать C или C++ генерация кода, заданная параметром конфигурации TargetLang.

  • TargetType: Генератор кода определяет символы препроцессора RT и NRT чтобы отличить код симуляции от кода в реальном времени. Эти символы используются в условной компиляции. The TargetType переменная определяет, RT ли или NRT задан.

    Большинство целей предназначены для генерации кода в реальном времени. Они присваивают TargetType следующим образом.

    %assign TargetType = "RT"

    Некоторые цели, такие как цель симуляции модели-ссылки, ускоренная цель симуляции, цель RSim и цель S-функции, генерируют код для использования только за нереальное время. Такие цели присваивают TargetType следующим образом.

    %assign TargetType = "NRT"

Точка входа программы TLC и связанные% включают

Процесс генерации кода обычно начинается с codegenentry.tlc. Системный целевой файл вызывает codegenentry.tlc следующим образом.

%include "codegenentry.tlc"

Примечание

codegenentry.tlc и файлы TLC более низкого уровня предполагают, что CodeFormat, TargetType, и Language были назначены. Установите эти переменные перед включением codegenentry.tlc.

Если вам нужно реализовать функции генерации кода, специфичные для цели, вы должны включить файл TLC mytarget_genfiles.tlc в целевом файле системы. Этот файл предоставляет механизм для выполнения пользовательского кода TLC до и после вызова codegenentry.tlc. Для получения информации об этом механизме см.

Другой способ настройки процесса генерации кода - это вызов функций более низкого уровня (обычно инициируемых codegenentry.tlc) непосредственно, и включать свои собственные функции TLC на каждом этапе процесса. Такой подход следует применять с осторожностью. Для получения дополнительной информации см. файлы TLC».

Функции нижнего уровня, вызываемые codegenentry.tlc являются

  • genmap.tlc: сопоставляет имена блоков с соответствующими языковыми целевыми файлами блоков.

  • commonsetup.tlc: настраивает глобальные переменные.

  • commonentry.tlc: запускает процесс генерации кода.

RTW_OPTIONS раздел

The RTW_OPTIONS раздел ограничен директивами:

/%
  BEGIN_RTW_OPTIONS
.
.
.
  END_RTW_OPTIONS
%/

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

Вторая часть RTW_OPTIONS раздел определяет rtwgensettings, структуру, определяющую имя папки сборки и другие настройки для процесса генерации кода. Смотрите rtwgensettings Структура для получения информации о rtwgensettings.

rtwgensettings Структура

Конечная часть системного целевого файла определяет rtwgensettings структура. Эта структура хранит информацию, которая записывается в model.rtw Файл и используемый процессом сборки. The rtwgensettings области, представляющие наибольший интерес для целевых разработчиков,

  • rtwgensettings.Version: Используйте это свойство для включения rtwoptions коллбэки и использование коллбэк в rtwgensettings.SelectCallback.

    Примечание

    Чтобы использовать коллбэки, необходимо задать:

    rtwgensettings.Version = '1';
    

    Добавьте оператор выше в Configure RTW code generation settings раздел системного целевого файла.

  • rtwgensettings.DerivedFrom: Это поле структуры определяет системный целевой файл, из которого должны быть унаследованы опции. См. Раздел «Наследование целевых опций»

  • rtwgensettings.SelectCallback: Это поле структуры задает SelectCallback функция. Вы должны задать rtwgensettings.Version = '1'; или ваш коллбэк будет проигнорирован. SelectCallback связана с целевым объектом, а не с любым из его отдельных опций. The SelectCallback функция срабатывает, когда вы:

    • Загрузите модель.

    • Обновите все настройки строения в диалоговом окне Параметров конфигурации.

    • Создайте модель.

    The SelectCallback функция используется для настройки (или отключения) параметров конфигурации, характерных для целевого объекта.

    Следующий код устанавливает SelectCallback функция:

    rtwgensettings.SelectCallback = 'my_select_callback_handler(hDlg,hSrc)';

    Аргументы в SelectCallback функциональные (hDlg, hSrc) являются указателями на частные данные, используемые функциями API коллбэка.

    Примечание

    Если вы разработали пользовательский целевой объект и хотите, чтобы он был совместим со ссылками на модель, необходимо реализовать SelectCallback функция для объявления модели-ссылки совместимости. См. «Ссылки на модели поддержки».

  • rtwgensettings.ActivateCallback: это свойство задает ActivateCallback функция. The ActivateCallback функция запускается, когда изменяется активная конфигурация модели модели. Это может произойти во время загрузки модели, а также когда пользователь меняет активную конфигурацию модели.

    Следующий код устанавливает ActivateCallback функция:

    rtwgensettings.ActivateCallback = 'my_activate_callback_handler(hDlg,hSrc)';

    Аргументы в ActivateCallback функциональные (hDlg,hSrc) являются указателями на частные данные, используемые функциями API коллбэка.

  • rtwgensettings.PostApplyCallback: это свойство задает PostApplyCallback функция. The PostApplyCallback функция запускается, когда пользователь нажимает кнопку Применить или OK после редактирования опций в диалоговом окне Параметры конфигурации. The PostApplyCallback вызывается функция после применения изменений к конфигурации модели.

    Следующий код устанавливает PostApplyCallback функция:

    rtwgensettings.PostApplyCallback = 'my_postapply_callback_handler(hDlg,hSrc)';

    Аргументы в PostApplyCallback функциональные (hDlg, hSrc) являются указателями на частные данные, используемые функциями API коллбэка.

  • rtwgensettings.BuildDirSuffix: Большинство целей определяют суффикс имени папки, который идентифицирует папки сборки, созданные конечным объектом. Процесс сборки добавляет суффикс, заданный в rtwgensettings.BuildDirSuffix поле с именем модели для формирования имени папки сборки. Для примера, если вы задаете rtwgensettings.BuildDirSuffix следующим образом

    rtwgensettings.BuildDirSuffix = '_mytarget_rtw'

    папки сборки имеют имена model_mytarget_rtw.

Дополнительные опции генерации кода

Конфигурирование сгенерированного кода с помощью TLC описывает дополнительные переменные генерации кода TLC. Конечные пользователи целевого объекта могут назначить эти переменные путем ввода команды MATLAB формы

set_param(modelName,'TLCOptions','-aVariable=val');

(Для получения дополнительной информации смотрите Задать TLC для Генерации кода.)

Однако предпочтительным подходом является назначение этих переменных в системном целевом файле с помощью операторов формы:

%assign Variable = val

Для читаемости рекомендуем добавить такие назначения в раздел системного целевого файла после Configure RTW code generation settings комментария.

Модель-ссылка Факторов

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

Определите и отобразите пользовательские опции цели

Использование rtwoptions для отображения пользовательских опций цели

Управление опциями для отображения на панели Code Generation в диалоговом окне Параметры конфигурации путем настройки rtwoptions структура в целевом файле системы.

Поля rtwoptions структура задает переменные и связанные элементы пользовательского интерфейса, которые будут отображаться в диалоговом окне Параметры конфигурации (Configuration Parameters). Использование rtwoptions массив структур, можно задать специфичные для цели опции, отображаемые в диалоговом окне, и организовать опции в категории. Можно также записать функции обратного вызова, чтобы указать, как эти опции обрабатываются.

Когда откроется панель Code Generation, откроется rtwoptions выполняется сканирование массива структур, и отображаются перечисленные опции. Каждая опция представлена назначенным элементом пользовательского интерфейса (флажок, поле редактирования, меню или кнопка), который отображает текущее значение опции.

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

Можно также использовать rtwoptions массив структур для определения специальных элементов NonUI, которые вызывают выполнение функций обратного вызова, но которые не отображаются на панели Code Generation. См. раздел Элементы NonUI.

Элементы rtwoptions массив структур организован в группы. Каждая группа элементов начинается с элемента заголовка типа Category. Поле по умолчанию Category заголовок должен содержать количество остальных элементов в категории.

The Category за заголовком следуют опции, отображаемые на панели Code Generation. За заголовком в каждой категории следует один или несколько элементов определения опций.

Каждая категория целевых опций соответствует опциям, перечисленным в Code Generation в диалоговом окне Параметры конфигурации (Configuration Parameters).

В таблице rtwoptions Structure Fields Summary результирующие поля rtwoptions структура.

Пример структуры rtwoptions.  Следующая rtwoptions структура извлекается из примера системного целевого файла, matlabroot/ toolbox/rtw/rtwdemos/rtwoptions_demo/usertarget.tlc. Код задает rtwoptions массив структур. Поле по умолчанию первого элемента (header) установлено в 4, с указанием количества элементов, следующих за заголовком.

  rtwoptions(1).prompt        = 'userPreferred target options (I)';
  rtwoptions(1).type          = 'Category';
  rtwoptions(1).enable        = 'on';
  rtwoptions(1).default       = 4;   % number of items under this category
                                     % excluding this one.
  rtwoptions(1).popupstrings  = '';  % At the first item, user has to 
  rtwoptions(1).tlcvariable   = '';  % initialize all supported fields
  rtwoptions(1).tooltip       = '';
  rtwoptions(1).callback      = '';
  rtwoptions(1).makevariable  = '';

  rtwoptions(2).prompt        = 'Execution Mode';
  rtwoptions(2).type          = 'Popup';
  rtwoptions(2).default       = 'Real-Time';
  rtwoptions(2).popupstrings  = 'Real-Time|UserDefined';
  rtwoptions(2).tlcvariable   = 'tlcvariable1';
  rtwoptions(2).tooltip       = ['See this text as tooltip'];

  rtwoptions(3).prompt        = 'Log Execution Time';
  rtwoptions(3).type          = 'Checkbox';
  rtwoptions(3).default       = 'on';
  rtwoptions(3).tlcvariable   = 'RL32LogTETModifier';
  rtwoptions(3).tooltip       = ['']; % no tooltip

  rtwoptions(4).prompt        = 'Real-Time Interrupt Source';
  rtwoptions(4).type          = 'Popup';
  rtwoptions(4).default       = 'Timer';
  rtwoptions(4).popupstrings  = 'Timer|5|6|7|8|9|10|11|12|13|14|15';
  rtwoptions(4).tlcvariable   = 'tlcvariable3';
  rtwoptions(4).callback      = 'usertargetcallback(hDlg, hSrc, ''tlcvariable3'')';
  rtwoptions(4).tooltip       = [''];
  rtwoptions(4).tooltip       = ['See TLC file for how to use reserved '...
    ' keyword ''hDlg'', and ''hSrc''.'];
...
  rtwoptions(5).prompt        = 'Signal Logging Buffer Size in Doubles';
  rtwoptions(5).type          = 'Edit';
  rtwoptions(5).default       = '100000';
  rtwoptions(5).tlcvariable   = 'tlcvariable2';
  rtwoptions(5).tooltip       = [''];

Первый элемент добавляет панель userPreferred target options (I) под Code Generation в диалоговом окне Параметры конфигурации (Configuration Parameters). На панели отображаются опции, заданные в rtwoptions(2), rtwoptions(3), rtwoptions(4), и rtwoptions(5).

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

Обратите внимание на rtwoptions структура и коллбэки записываются в код MATLAB, хотя и встраиваются в файл TLC. Чтобы проверить синтаксис вашего rtwoptions определения структуры и код, можно выполнить команды в подсказке MATLAB, скопировав и вставив их в Командное окно MATLAB.

Чтобы узнать больше о usertarget.tlc и предоставленные вместе с ним файлы коллбэка см. Пример Системного целевого файла с настроенными rtwoptions. Для получения дополнительных примеров специфичных для целевого rtwoptions определения, см. target.tlc файлы под matlabroot/ rtw/c (откройте).

rtwoptions Structure Fields Summary перечисляет поля rtwoptions структура.

rtwoptions Структура Поля Сводных данных

Имя поляОписание

callback

Примеры использования коллбэка см. в Примере Системный целевой файл с настраиваемыми rtwoptions.

closecallback
(устаревший)

Не используйте closecallback.
Использование rtwgensettings.PostApplyCallback вместо этого (см. Rtwgensettings Structure).

closecallback игнорируется.

Примеры использования коллбэка см. в Примере Системный целевой файл с настраиваемыми rtwoptions.

default

Значение по умолчанию опции (пустое, если type является Pushbutton).

enable

Должен быть 'on' или 'off'. Если 'on'опция отображается как включенный элемент; в противном случае - как отключенный элемент.

makevariable

Шаблон лексемы make-файла (если он имеется), связанный с опцией. The makevariable расширяется во время обработки make-файла шаблона. См. Раздел «Шаблон make- Лексем».

modelReferenceParameterCheckОпределяет, должна ли опция иметь то же значение в модели-ссылке и ее родительской модели. Если это поле не задано или имеет значение 'on' значения опций должны быть одинаковыми. Если поле задано и имеет значение 'off' значения опций могут отличаться. См. Соглашение о значении опции управления строением.

NonUI

Элемент, который не отображается, но используется для вызова закрытого или открытого коллбэка. См. раздел Элементы NonUI.

opencallback
(устаревший)

Не используйте opencallback.
Использование rtwgensettings.SelectCallback вместо этого (см. Rtwgensettings Structure).

Примеры использования коллбэка см. в Примере Системный целевой файл с настраиваемыми rtwoptions.

popupstrings

Если type является Popup, popupstrings определяет элементы меню. Элементы разделяются символом «|» (вертикальная полоса). Следующий пример задает элементы меню модификатора имен переменной MAT-файлов, используемого целевым устройством GRT.

'rt_|_rt|none'

prompt

Пометьте опцию.

tlcvariable

Имя переменной TLC, связанной с опцией.

tooltip

Текст справки, отображаемый при наведении указателя мыши на элемент.

type

Тип элемента: Checkbox, Edit, NonUI, Popup, Pushbutton, или Category.

Элементы NonUI.  Элементы rtwoptions массив с типом NonUI существует только для вызова коллбэков. A NonUI элемент не отображается в диалоговом окне Параметры конфигурации (Configuration Parameters). Можно использовать NonUI элемент, если необходимо выполнить коллбэк, который не связан с элементом пользовательского интерфейса, когда диалоговое окно откроется или закроется. См. следующий раздел «Пример системного целевого файла с настраиваемыми rtwoptions» для примера.

Примечание

Значение по умолчанию элемента типа NonUI или Edit определяет множество значений, допустимых для этого элемента.

  • Если значение по умолчанию '0' или '1':

    • Для NonUI типаэлемент сохраняет логическое значение.

    • Для Edit типаэлемент сохраняет значение типа int32.

  • Если значение по умолчанию содержит целое число, отличное от '0' или '1'элемент сохраняет значение типа int32.

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

Пример системного целевого файла с настроенными rtwoptions

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

Примеры целевых файлов находятся в папке (open):

matlabroot/toolbox/rtw/rtwdemos/rtwoptions_demo

Примеры целевых файлов включают:

  • usertarget.tlc: Пример системного целевого файла. Этот файл иллюстрирует, как задать пользовательские меню, флажки и поля редактирования. Файл также иллюстрирует использование коллбэков.

  • usertargetcallback.m: Обратный коллбэк файла MATLAB, вызываемый меню.

Обратитесь к файлам примера во время чтения этого раздела. Пример системного целевого файла, usertarget.tlc- иллюстрирует использование rtwoptions чтобы отобразить следующие пользовательские целевые опции:

  • Меню Режим выполнения.

  • Флажок Log Execution Time.

  • Меню Real-Time Interrupt Source. Меню выполняет коллбэк, заданную во внешнем файле, usertargetcallback.m. Переменная TLC, связанная с меню, передается в коллбэк, который отображает текущее значение меню.

  • Поле edit Signal Logging Buffer Size in Double (Размер буфера регистрации сигналов в двойном порядке).

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

  1. Делайте matlabroot/ toolbox/rtw/rtwdemos/rtwoptions_demo (откройте) рабочую папку.

  2. Откройте модель по своему выбору.

  3. Откройте диалоговое окно Параметры конфигурации и выберите панель Code Generation.

  4. Нажмите кнопку Обзор. Откроется браузер системных целевых файлов. Выберите usertarget.tlc. Затем нажмите кнопку ОК.

  5. Обратите внимание, что панель Code Generation содержит пользовательскую подвкладку: userPreferred target options (I).

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

Наследование целевых опций

ert.tlc предоставляет базовый набор Embedded Coder® опции генерации кода. Если ваша цель основана на ert.tlc, ваш системный целевой файл обычно должен наследовать опции, заданные в ERT.

Используйте rtwgensettings.DerivedFrom поле в rtwgensettings структура для определения системного целевого файла, из которого будут унаследованы опции. Вы должны преобразовать свой пользовательский целевой объект, чтобы использовать этот механизм следующим образом.

Установите rtwgensettings.DerivedFrom значение поля как в следующем примере:

rtwgensettings.DerivedFrom = 'stf.tlc';

где stf - имя системного целевого файла, из которого должны быть унаследованы опции. Для примера:

rtwgensettings.DerivedFrom = 'ert.tlc';

Когда диалоговое окно Параметров конфигурации выполняет эту строку кода, оно включает опции от stf.tlc автоматически. Если stf.tlc является внутренним системным целевым файлом MathWorks, который был преобразован в новое размещение, диалоговое окно отображает унаследованные опции с помощью нового размещения.

Обработка неподдерживаемых опций.  Если ваша цель не поддерживает все опции, унаследованные от ert.tlcнеобходимо обнаружить неподдерживаемые параметры опции и отобразить предупреждение или сообщение об ошибке. В некоторых случаях, если пользователь выбрал опцию, который не поддерживается вашим целевым объектом, может потребоваться прервать процесс сборки. Например, если ваша цель не поддерживает опцию Сгенерировать пример основной программы, процесс сборки не должен продолжаться, если выбрана эта опция.

Даже если целевой объект может не поддерживать все унаследованные опции ERT, необходимо сохранить опции ERT в панели Code Generation диалогового окна Параметры конфигурации. Не просто удаляйте неподдерживаемые опции из rtwoptions структура в системном целевом файле. Опции должны быть в диалоговом окне, чтобы сканироваться генератором кода, когда он выполняет оптимизацию.

Например, можно запретить пользователям отключать опцию Single output/update. Может показаться разумным удалить эту опцию из диалогового окна и просто назначить переменную TLC CombineOutputUpdateFcns на on. Однако, если опция не включена в диалоговое окно, генератор кода принимает, что выходные и обновленные функции не должны объединяться. В результате генерируется менее эффективный код.

Советы и методы для настройки системного целевого файла

Введение

В следующих разделах содержится информация о методах настройки целевого системного файла, в том числе:

  • Как вызвать пользовательский код TLC из вашего системного целевого файла

  • Подходы к поддержке нескольких сред разработки

  • Факторы о том, когда вы обновляете свой системный целевой файл

Требуемый и рекомендуемый% включает

Если вам нужно реализовать функции генерации кода для конкретного целевого объекта, мы рекомендуем, чтобы ваш системный целевой файл включал файл TLC mytarget_genfiles.tlc.

Как только ваш системный целевой файл установил необходимое окружение TLC, вы должны включить codegenentry.tlc чтобы запустить стандартный процесс генерации кода.

mytarget_genfiles.tlc предоставляет механизм для выполнения пользовательского кода TLC после основной точки входа генерации кода. См. Использование mytarget_genfiles.tlc.

Использование mytarget_genfiles.tlc.  mytarget_genfiles.tlc (необязательно) используется в качестве файла хранилища, из которого можно вызвать файлы TLC, относящиеся к целевому объекту, которые генерируют дополнительные файлы в рамках целевого процесса сборки. Например, ваш целевой объект может создать вспомогательные файлы make или файлы проекта для среды разработки или командные скрипты для отладчика, чтобы выполнить автоматическую загрузку.

Процесс сборки может затем вызвать эти сгенерированные файлы либо непосредственно из процесса make, либо после создания исполняемого файла. Это делается с помощью STF_make_rtw_hook.m механизм, как описано в разделе «Настройка процесса сборки с помощью STF_make_rtw_hook файла».

Следующий код TLC показывает пример mytarget_genfiles.tlc файл.

%selectfile NULL_FILE

%assign ModelName = CompiledModel.Name

%% Create Debugger script
%assign model_script_file = "%<ModelName>.cfg"
%assign script_file = "debugger_script_template.tlc"

%if RTWVerbose
   %selectfile STDOUT
   ### Creating %<model_script_file>
   %selectfile NULL_FILE
%endif

%include "%<script_file>"
%openfile bld_file = "%<model_script_file>"
%<CreateDebuggerScript()>
%closefile bld_file

Обработка псевдонимов для значений целевых опций

В этом разделе описываются служебные функции, которые могут использоваться для обнаружения и разрешения значений псевдонимов или устаревших значений при тестировании значений, заданных пользователем для типа целевого устройства (ProdHWDeviceType) и библиотеку замещения кода (CodeReplacementLibrary).

RTW.isHWDeviceTypeEq.  Чтобы проверить, представляют ли два значения типов оконечных устройств одно и то же аппаратное устройство, активируйте следующую функцию:

result = RTW.isHWDeviceTypeEq(type1,type2)

где type1 и type2 являются векторами символов, содержащими значения типов целевых устройств или псевдонимы.

The RTW.isHWDeviceTypeEq функция возвращает true, если type1 и type2 являются векторами символов, представляющими одно и то же аппаратное устройство. Для примера следующий вызов возвратов true:

RTW.isHWDeviceTypeEq('Specified','Generic->Custom')

Описание опции типа целевого устройства ProdHWDeviceType, см. информацию в командной строке для параметров панели Hardware Implementation Device vendor и Device type.

RTW.resolveHWDeviceType.  Чтобы вернуть значение типа устройства для аппаратного устройства, учитывая значение, которое может быть псевдонимом или устаревшим значением, активируйте следующую функцию:

result = RTW.resolveHWDeviceType(type)

где type - вектор символов, содержащий значение типа целевого устройства или псевдоним.

The RTW.resolveHWDeviceType функция возвращает значение типа устройства. Например, следующие вызовы оба возвращают 'Generic->Custom':

RTW.resolveHWDeviceType('Specified')
RTW.resolveHWDeviceType('Generic->Custom')

Описание опции типа целевого устройства ProdHWDeviceType, см. информацию в командной строке для параметров панели Hardware Implementation Device vendor и Device type.

RTW.isTflEq.  Чтобы проверить, представляют ли два имени библиотеки замещения кода (CRL) один и тот же CRL, активируйте следующую функцию:

result = RTW.isTflEq(name1,name2)

где name1 и name2 являются векторами символов, содержащими значения CRL или псевдонимы.

The RTW.isTflEq функция возвращает true, если name1 и name2 являются векторами символов, представляющими ту же библиотеку замещения кода. Для примера следующий вызов возвратов true:

RTW.isTflEq('GNU','GNU C99 extensions')

Описание CodeReplacementLibrary параметр, см. «Библиотека замещения кода».

RTW.resolveTflName.  Чтобы вернуть значение CRL для библиотеки замены кода, учитывая значение, которое может быть псевдонимом или устаревшим значением, активируйте следующую функцию:

result = RTW.resolveTflName(name)

где name - вектор символов, содержащий значение CRL или псевдоним.

The RTW.resolveTflName функция возвращает значение библиотеки замены ссылочного кода. Например, следующие вызовы оба возвращают 'GNU C99 extensions':

RTW.resolveTflName('GNU')
RTW.resolveTflName('GNU C99 extensions')

Описание CodeReplacementLibrary параметр, см. «Библиотека замещения кода».

Поддержка нескольких сред разработки

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

Одним из подходов к этому требованию является реализация нескольких системных целевых файлов. Каждый системный целевой файл вызывает файл make-файла шаблона для среды разработки. Это означает обеспечение двух отдельных целевых показателей.

Обновление вашего целевого файла пользовательской системы

Обновление вашего пользовательского системного целевого файла может повлиять на значения опций загружаемой модели, которая использует обновленный системный целевой файл. Если параметр отключен, обновленный системный целевой файл использует значение по умолчанию для этой опции. Если модель имеет другое значение для этой опции, когда вы загружаете модель с обновленным системным целевым файлом, значение из модели отбрасывается, и системный целевой файл использует вместо этого значение по умолчанию.

Создайте пользовательское целевое строение

Введение

Этот учебник может дополнить примеры целевых руководств, описанных в Sample Custom Targets. Для ввода и примера файлов сначала попробуйте пример цели.

Это руководство провело вас через процесс создания целевого объекта на основе ERT, my_ert_target. Это упражнение иллюстрирует несколько задач, которые типичны для создания пользовательского целевого объекта:

  • Настройка целевых папок и изменение пути MATLAB.

  • Внесение изменений в стандартный системный целевой файл и TMF таким образом, чтобы пользовательский целевой объект был виден в System Target File Browser, наследовал опции ERT, отображал специфичные для целевого объекта опции и генерировал код с помощью компилятора на основе хоста по умолчанию.

  • Проверка процесса сборки с помощью пользовательского целевого объекта с помощью простой модели, которая включает встроенную S-функцию.

Во время этого упражнения вы реализуете оперативную, но скелетную, основанную на ERT цель. Этот целевой объект может быть полезен в качестве начальной точки при полной реализации пользовательского целевого процессора.

my_ert_target обзор

В следующих разделах вы создаете каркасную цель, my_ert_target. Целевой объект наследует и поддерживает стандартные опции целевого объекта ERT и отображает дополнительные специфичные для целевого объекта опции в диалоговом окне Параметры конфигурации (см. раздел «Параметры конкретного целевого объекта» для my_ert_target).

Специфичные для цели опции для my_ert_target

my_ert_target поддерживает сборку на основе набора инструментальных средств, генерируя код и исполняемые файлы, которые выполняются в хост-системе. my_ert_target использует lcc компилятор в Microsoft Windows® платформы. Выбранный компилятор легко доступен и распространяется с генератором кода. На платформе Microsoft Windows, если вы используете другой компилятор, можно настроить lcc временно в качестве компилятора по умолчанию с помощью следующей команды MATLAB:

mex -setup

Программа отображает ссылки для поддерживаемых компиляторов, установленных на вашем компьютере. Нажмите на lcc ссылка.

Примечание

На Linux® убедитесь, что у вас есть установленный компилятор C. Если это так, для выполнения этого упражнения можно использовать синтаксис папки Linux.

my_ert_target может также поддерживать сборки на основе шаблонов make-файлов. Дополнительные сведения об использовании этого целевого объекта с подходом make-файла шаблона см. в разделе Создание шаблона на основе ERT MakeFile.

Можно тестировать my_ert_target с моделью, которая совместима с конечным объектом ERT (см. «Настройка системного целевого файла»). Сгенерированные программы работают идентично программам, сгенерированным ERT.

Чтобы упростить проверку вашей цели, тестируйте с targetmodel, очень простая модель с фиксированным шагом (см., Создают Экспериментальную модель и S-Функцию). Блок S-Function в targetmodel использует исходный код из timestwo пример, и генерирует полностью встроенный код. Смотрите примеры S-функций и встроенные S-функции с TLC для дальнейшего обсуждения timestwo пример S-функции.

Создание целевых папок

Создайте папки для хранения целевых файлов и добавьте их в путь MATLAB, следуя рекомендуемым соглашениям (см. Соглашения о именовании папок и файлов). Вы также создаете папку для хранения экспериментальной модели, S-функции и сгенерированного кода.

Этот пример принимает, что ваши целевые папки и папки модели расположены в папке c:/work. Не помещайте свои целевые папки и папки модели в дерево папок MATLAB (то есть в или под matlabroot папка).

Чтобы создать папки и сделать их доступными:

  1. Создайте целевую корневую папку, my_ert_target. В Командном Окне MATLAB на платформе Windows введите:

    cd c:/work
    mkdir my_ert_target
  2. В целевой корневой папке создайте подпапку для хранения ваших целевых файлов.

    mkdir my_ert_target/my_ert_target
  3. Добавьте эти папки к пути MATLAB.

    addpath c:/work/my_ert_target
    addpath c:/work/my_ert_target/my_ert_target
  4. Создайте папку, my_targetmodel, для хранения экспериментальной модели, S-функции и сгенерированного кода.

    mkdir my_targetmodel

Создайте ERT-совместимый системный целевой файл на основе набора инструментальных средств

Создайте системный целевой файл для вашего целевого объекта путем копирования и изменения стандартного системного целевого файла для целевого объекта ERT. Затем проверьте системный целевой файл путем просмотра нового целевого объекта в System Target File Browser и в диалоговом окне Параметры Конфигурации.

Изменение системного целевого файла.  Чтобы отредактировать системный целевой файл, выполните следующие шаги:

  1. Измените рабочую папку на папку, созданную в разделе Создание целевых папок.

    cd c:/work/my_ert_target/my_ert_target
  2. Разместите копию matlabroot/ rtw/c/ert/ert.tlc в c:/work/my_ert_target/my_ert_target и переименовать его в my_ert_target.tlc. Файл ert.tlc - системный целевой файл для целевого устройства ERT.

  3. Откройте my_ert_target.tlc в текстовом редакторе по вашему выбору.

  4. Настройте системный целевой файл, заменив строки с комментариями заголовка директивами, которые делают ваш системный целевой файл видимым в System Target File Browser и определяют связанный TMF, make команда и файл интерфейса режима external mode (при наличии). Для получения дополнительной информации об этих директивах смотрите Комментарии заголовка.

    Замените комментарии заголовка в my_ert_target.tlc со следующими комментариями заголовка.

    %% SYSTLC: My ERT-based Target TMF: my_ert_target_lcc.tmf MAKE: make_rtw
  5. Файл my_ert_target.tlc наследует стандартные опции ERT, используя механизм, описанный в разделе Наследование целевых опций. Поэтому существующая rtwoptions определение структуры излишне. Отредактируйте раздел RTW_OPTIONS так, чтобы он содержал только следующий код.

    /%
      BEGIN_RTW_OPTIONS
    
      %----------------------------------------%
      % Configure RTW code generation settings %
      %----------------------------------------%
    
      rtwgensettings.BuildDirSuffix = '_ert_rtw';
    
      END_RTW_OPTIONS
     %/
  6. Удалите код после окончания RTW_OPTIONS раздел, который разграничено директивами BEGIN_CONFIGSET_TARGET_COMPONENT and END_CONFIGSET_TARGET_COMPONENT. Этот код предназначен только для использования внутренними разработчиками MathWorks.

  7. Измените суффикс папки сборки в rtwgenSettings структура в соответствии с конвенциями, описанными в rtwgensetings Structure.

    Чтобы задать суффикс вектора символов для _my_ert_target пользовательский целевой объект, измените линию

    rtwgensettings.BuildDirSuffix = '_ert_rtw'

    кому

    rtwgensettings.BuildDirSuffix = '_my_ert_target_rtw'
    
  8. Измените rtwgenSettings структура, чтобы наследовать опции от целевого устройства ERT и объявить совместимость релиза 14 или более поздней, как описано в rtwgensettings Structure. Добавьте следующий код к rtwgenSettings определение:

    rtwgensettings.DerivedFrom = 'ert.tlc';
    rtwgensettings.Version = '1';
  9. Добавление rtwoptions структура, которая определяет категорию опций, относящихся к целевому объекту, с тремя флажками сразу после BEGIN_RTW_OPTIONS директива. Следующий код показывает полную RTW_OPTIONS раздел, включая предыдущие rtwgenSettings изменения.

    /%
      BEGIN_RTW_OPTIONS
    
      rtwoptions(1).prompt         = 'My Target Options';
      rtwoptions(1).type           = 'Category';
      rtwoptions(1).enable         = 'on';
      rtwoptions(1).default        = 3;   % number of items under this category
                                          % excluding this one.
      rtwoptions(1).popupstrings  = '';
      rtwoptions(1).tlcvariable   = '';
      rtwoptions(1).tooltip       = '';
      rtwoptions(1).callback      = '';
      rtwoptions(1).makevariable  = '';
    
      rtwoptions(2).prompt         = 'Demo option 1';
      rtwoptions(2).type           = 'Checkbox';
      rtwoptions(2).default        = 'off';
      rtwoptions(2).tlcvariable    = 'DummyOpt1';
      rtwoptions(2).makevariable   = '';
      rtwoptions(2).tooltip        = ['Demo option1 (non-functional)'];
      rtwoptions(2).callback       = '';
    
      rtwoptions(3).prompt         = 'Demo option 2';
      rtwoptions(3).type           = 'Checkbox';
      rtwoptions(3).default        = 'off';
      rtwoptions(3).tlcvariable    = 'DummyOpt2';
      rtwoptions(3).makevariable   = '';
      rtwoptions(3).tooltip        = ['Demo option2 (non-functional)'];
      rtwoptions(3).callback       = '';
    
      rtwoptions(4).prompt         = 'Demo option 3';
      rtwoptions(4).type           = 'Checkbox';
      rtwoptions(4).default        = 'off';
      rtwoptions(4).tlcvariable    = 'DummyOpt3';
      rtwoptions(4).makevariable   = '';
      rtwoptions(4).tooltip        = ['Demo option3 (non-functional)'];
      rtwoptions(4).callback       = '';
    
      %----------------------------------------%
      % Configure RTW code generation settings %
      %----------------------------------------%
    
      rtwgensettings.BuildDirSuffix = '_my_ert_target_rtw';
      rtwgensettings.DerivedFrom = 'ert.tlc';
      rtwgensettings.Version = '1';
      rtwgensettings.SelectCallback = 'enableToolchainCompliant(hSrc, hDlg)';
      %SelectCallback provides toolchain approach support, but requires custom function
      %Omit this SelectCallback if using the template makefile approach
    
      END_RTW_OPTIONS
    %/
  10. Сохраните изменения в my_ert_target.tlc и закройте файл.

Создайте функцию ToolchainCompliant.  Чтобы включить сборки с использованием подхода набора инструментальных средств, вы создаете функцию, которая соответствует SelectCallback в конце пользовательского системного целевого файла. Эта функция устанавливает свойства для податливости набора инструментальных средств.

function enableToolchainCompliant(hSrc, hDlg)
  % The following parameters enable toolchain compliance.
  slConfigUISetVal(hDlg, hSrc, 'UseToolchainInfoCompliant', 'on');
  slConfigUISetVal(hDlg, hSrc, 'GenerateMakefile','on');
  
  % The following parameters are not required for toolchain compliance.
  % But, it is recommended practice to set these default values and 
  % disable the parameters (as shown).
  slConfigUISetVal(hDlg, hSrc, 'RTWCompilerOptimization','off');
  slConfigUISetVal(hDlg, hSrc, 'MakeCommand','make_rtw');
  slConfigUISetEnabled(hDlg, hSrc, 'RTWCompilerOptimization',false);
  slConfigUISetEnabled(hDlg, hSrc, 'MakeCommand',false);
  hSrc.refreshDialog;
end

Примечание

Если вы используете подход make-файла шаблона, не вызывайте функцию, разрешающую соответствие набору инструментальных средств из вашего системного целевого файла. Вместо этого используйте информацию в разделе Создание шаблона на основе ERT MakeFile.

Просмотр системного целевого файла.  На данной точке можно проверить, что целевой объект наследует и отображает опции ERT следующим образом:

  1. Создайте новую модель.

  2. Откройте браузер Model Explorer или диалоговое окно Параметров конфигурации.

  3. Выберите панель Code Generation.

  4. Нажмите кнопку Обзор, чтобы открыть браузер системных целевых файлов.

  5. В браузере файлов прокрутите список целей, чтобы найти новую цель, my_ert_target.tlc. (Этот шаг принимает, что ваш путь MATLAB содержит c:/work/my_ert_target/my_ert_target, как ранее задано в разделе «Создание целевых папок».)

  6. Выберите My ERT-based Target и нажмите OK.

  7. Панель Code Generation теперь показывает, что модель сконфигурирована для my_ert_target.tlc цель. Поля System target file, Language, Toolchain и Build строения должны появиться:

  8. Выберите панель My Target Options. В целях отображаются три опции флажка, заданные в rtwoptions структура.

  9. Выберите панель Code Generation и снова откройте браузер системных целевых файлов.

  10. Выберите цель Embedded Coder (ert.tlc). В целях отображаются стандартные опции ERT.

  11. Закройте модель. Вам не нужно его сохранять.

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

Если вы предпочитаете использовать подход make-файла шаблона, ссылку на TMF, my_ert_target_lcc.tmf, в системном заголовке целевого файла комментарии препятствуют вызову процесса сборки для целевого файла до тех пор, пока не будет создан файл TMF. Во-первых, вы должны создать my_ert_target_lcc.tmf файл.

Создайте шаблон MakeFile на основе ERT

Если вы используете подход make-файла набора инструментальных средств с пользовательской целью, соответствующей набору инструментальных средств, опускайте шаги, которые применяются к подходу make-файла шаблона. (Пропустите этот раздел.)

Если вы используете подход make-файла шаблона, следуйте шагам, которые применяются к файлу make-файла шаблона, и опустошите вызов функции, которая включает соответствие набору инструментальных средств из вашего системного целевого файла, который описан в Create ERT-Based, Toolchain System Target File.

Создайте шаблон make-файла для цели путем копирования и изменения предоставленного шаблона ERT-файла make-файла. Выберите шаблон make-файла, который лучше всего подходит для вашего целевого файла. Этот пример использует ert_lcc64.tmf, но можно также использовать ert_vcx64.tmf или ert_unix.tmf.

  1. Убедитесь, что ваша рабочая папка все еще задана в целевой файловой папке, созданной ранее в Creating Target Folders.

    c:/work/my_ert_target/my_ert_target
  2. Разместите копию matlabroot/ toolbox/coder/compile/tmf/ert_lcc64.tmf в c:/work/my_ert_target/my_ert_target и переименовать его my_ert_target_lcc.tmf. Файл ert_lcc64.tmf является шаблоном make-файла для компилятора ERT для компилятора LCC.

  3. Откройте my_ert_target_lcc.tmf в текстовом редакторе.

  4. Измените SYS_TARGET_FILE параметр так, чтобы ссылка на файл для вашего .tlc файл генерируется в make файл. Измените линию

    SYS_TARGET_FILE = any

    кому

    SYS_TARGET_FILE = my_ert_target.tlc
  5. Сохраните изменения в my_ert_target_lcc.tmf и закройте файл.

Теперь ваша цель может сгенерировать код и создать исполняемый файл на основе хоста. В следующих разделах вы создаете экспериментальную модель и тестируете процесс сборки с помощью my_ert_target.

Создайте экспериментальную модель и S-функцию

В этом разделе вы создаете простую экспериментальную модель для дальнейшего использования в генерации кода:

  1. Установите рабочую папку равной c:/work/my_targetmodel.

    cd c:/work/my_targetmodel

    Для оставшейся части этого руководства, my_targetmodel принимается рабочей папкой. Ваша цель записывает выходные файлы процесса генерации кода в папку сборки в рабочей папке. Когда inlined код генерируется для timestwo S-функция, процесс сборки ищет реализацию TLC S-функции в рабочей папке.

  2. Скопируйте следующие файлы C и TLC для timestwo S-функция в рабочую папку:

  3. Создайте timestwo Файл MEX в c:/work/my_targetmodel.

    mex timestwo.c
  4. Создайте следующую модель, используя блок S-Function из Simulink® Библиотека пользовательских функций. Сохраните модель в рабочей папке как targetmodel.

  5. Дважды кликните блок S-Function, чтобы открыть диалоговое окно Параметры Блоков. Введите имя S-функции timestwo. Нажмите OK. Теперь блок привязан к timestwo Файл MEX.

  6. Откройте Model Explorer или диалоговое окно Параметров конфигурации и выберите панель Решателя.

  7. Установите Тип решателя на fixed-step и нажмите Применить.

  8. Сохраните модель.

  9. Откройте возможности и запустите симуляцию. Проверьте, что timestwo S-функция умножает свой вход на 2.0.

Сохраните targetmodel модель открыта для использования в следующем разделе, в котором вы генерируете код с помощью экспериментальной модели.

Проверьте целевую операцию

В этом разделе вы конфигурируете targetmodel для my_ert_target custom target, и использовать target, чтобы сгенерировать код и создать исполняемый файл:

  1. В диалоговом окне Параметры конфигурации выберите панель Code Generation.

  2. Нажмите кнопку Обзор, чтобы открыть браузер системных целевых файлов.

  3. В браузере выберите My ERT-based Target и нажмите OK.

  4. Теперь в диалоговом окне Параметров конфигурации отображается панель Code Generation для my_ert_target.

  5. Выберите панель Code Generation > Report и Create code generation report опцию.

  6. Нажмите Применить (Apply) и сохраните модель. Модель сконфигурирована для my_ert_target.

  7. Создайте модель. Если сборка завершается успешно, в Командном Окне MATLAB появится следующее сообщение.

    ### Created executable: ../targetmodel.exe
    ### Successful completion of build procedure for model:
    targetmodel

    Ваша рабочая папка содержит targetmodel.exe файл и папка сборки, targetmodel_my_ert_target_rtw, который содержит сгенерированный код и другие файлы. Рабочая папка также содержит slprj папка, используемая внутри процесса сборки.

    Генератор кода также создает отчет генерации кода.

  8. Чтобы просмотреть сгенерированный код, на вкладке C Code, нажмите View Code. На панели «Содержимое» отчета о генерации кода нажмите targetmodel.c ссылка.

  9. В targetmodel.c, найдите функцию шага модели, targetmodel_step. Наблюдайте за следующим кодом.

    /* S-Function Block: <Root>/S-Function */
    /* Multiply input by two */
    targetmodel_B.SFunction = targetmodel_B.SineWave * 2.0;

    Наличие этого кода подтверждает, что my_ert_target пользовательский целевой объект сгенерировал встроенные выходные расчеты для блока S-Function в модели.

Похожие темы