Настройте системные конечные файлы

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

Генерация кода системы управления с системным конечным файлом

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

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

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

  • Целевая информация для отображения в Системном Браузере Конечного файла

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

  • Механизм для наследования опций от другой цели (таких как цель Встроенного в реальном времени (ERT))

Обратите внимание на то, что, несмотря на то, что системный конечный файл является файлом Компилятора выходного языка (TLC), он содержит, встроил код MATLAB®. Прежде, чем создать или изменить системный конечный файл, необходимо получить практическое знание TLC и языка MATLAB. Компилятор Выходного языка и Скрипты по сравнению с Функциями описывают функции и синтаксис и TLC и языков MATLAB.

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

Системное именование конечного файла и соглашения местоположения

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

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

Обзор

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

%%----------------------------
%% 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. Они предоставляют запрошенную информацию Системному Браузеру Конечного файла и процессу сборки. Обратите внимание на то, что необходимо поместить комментарии браузера во главе файла перед другими комментариями или операторами TLC.

Присутствие комментариев позволяет генератору кода обнаружить системные конечные файлы. Когда Системный Браузер Конечного файла открыт, генератор кода сканирует путь MATLAB для файлов TLC, которые отформатировали комментарии заголовка. Комментарии содержат следующие директивы:

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

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

  • СДЕЛАЙТЕ: make команда, чтобы использовать во время процесса сборки. Когда цель выбрана, эта команда отображена в поле Make command панели Code Generation диалогового окна Configuration Parameters.

Следующие комментарии заголовка от 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 поле в системном конечном файле, файл все еще допустим. Изменить значение для theTemplateMakefile параметр, можно вместо этого использовать функцию обратного вызова, заданную rtwgensettings.SelectCallback.

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

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

Смотрите Создают Пользовательскую Целевую Настройку для примера индивидуально настраиваемых комментариев заголовка.

Переменные настройки TLC

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

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

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

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

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

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

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

    %assign TargetType = "RT"

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

    %assign TargetType = "NRT"

Точка входа программы TLC и связанный %includes

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

%include "codegenentry.tlc"

Примечание

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

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

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

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

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

Функции низшего уровня вызваны codegenentry.tlc

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

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

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

Раздел RTW_OPTIONS

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

/%
  BEGIN_RTW_OPTIONS
.
.
.
  END_RTW_OPTIONS
%/

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

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

Структура rtwgensettings

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

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

    Примечание

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

    rtwgensettings.Version = '1';
    

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

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

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

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

    • Обновите любые параметры конфигурации в диалоговом окне Configuration Parameters.

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

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

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

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

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

    Примечание

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

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

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

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

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

  • rtwgensettings.PostApplyCallback: это свойство задает PostApplyCallback функция. PostApplyCallback функция инициирована, когда пользователь нажимает Apply или кнопку OK после редактирования опций в диалоговом окне Configuration Parameters. 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.

Факторы модели - ссылки

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

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

Используя rtwoptions, чтобы Отобразить Пользовательские Целевые Опции

Вы управляете опциями, чтобы отобразиться в панели Code Generation в диалоговом окне Configuration Parameters путем настройки rtwoptions структура в вашем системном конечном файле.

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

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

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

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

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

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

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

Таблица rtwoptions Полевые Сводные данные Структуры суммирует поля rtwoptions структура.

Пример rtwoptions Структура.  Следующий rtwoptions структура выбирается от системного конечного файла в качестве примера, matlabroot/toolbox/rtw/rtwdemos/rtwoptions_demo/usertarget.tlc. Код задает rtwoptions массив структур. Поле по умолчанию первого (заголовок) элемент установлено в 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 перечисляют поля rtwoptions структура.

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

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

callback

Для примеров использования коллбэка смотрите Системный Конечный файл В качестве примера С Индивидуально настраиваемым rtwoptions.

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

Не используйте closecallback.
Используйте rtwgensettings.PostApplyCallback вместо этого (см. Структуру rtwgensettings).

closecallback проигнорирован.

Для примеров использования коллбэка смотрите Системный Конечный файл В качестве примера С Индивидуально настраиваемым rtwoptions.

default

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

enable

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

makevariable

Обработайте лексему make-файла по шаблону (если таковые имеются) сопоставленный с опцией. makevariable расширен во время обработки make-файла шаблона. Смотрите Лексемы Make-файла Шаблона.

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

NonUI

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

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

Не используйте opencallback.
Используйте rtwgensettings.SelectCallback вместо этого (см. Структуру rtwgensettings).

Для примеров использования коллбэка смотрите Системный Конечный файл В качестве примера С Индивидуально настраиваемым rtwoptions.

popupstrings

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

'rt_|_rt|none'

prompt

Пометьте для опции.

tlcvariable

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

tooltip

Помогите тексту, отображенному, когда мышь будет по элементу.

type

Тип элемента: CheckboxРедактирование, NonUI, PopupКнопка, или Category.

Элементы NonUI.  Элементы rtwoptions массив, которые имеют, вводит NonUI существуйте только, чтобы вызвать коллбэки. NonUI элемент не отображен в диалоговом окне Configuration Parameters. Можно использовать NonUI элемент, если вы хотите выполнить коллбэк, который не сопоставлен с элементом пользовательского интерфейса, когда диалоговое окно открывается или закрывается. Смотрите следующий раздел, Системный Конечный файл В качестве примера С Индивидуально настраиваемым rtwoptions для примера.

Примечание

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

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

    • Для типа NonUI, элемент хранит булево значение.

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

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

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

Системный Конечный файл в качестве примера С Индивидуально настраиваемым rtwoptions

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

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

matlabroot/toolbox/rtw/rtwdemos/rtwoptions_demo

Конечные файлы в качестве примера включают:

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

  • usertargetcallback.m: Коллбэк файла MATLAB вызывается меню.

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

  • Меню Execution Mode.

  • Флажок Log Execution Time.

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

  • Сигнал поля редактирования Логгирование Buffer Size в Удваивается.

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

  1. Сделайте matlabroot/toolbox/rtw/rtwdemos/rtwoptions_demo (открытый) ваша рабочая папка.

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

  3. Откройте диалоговое окно Configuration Parameters и выберите панель Code Generation.

  4. Нажмите Browse. Системный Браузер Конечного файла открывается. Выберите usertarget.tlc. Затем нажмите ОК.

  5. Заметьте, что панель Code Generation содержит пользовательскую подзакладку: userPreferred предназначаются для опций (I).

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

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

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

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

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

rtwgensettings.DerivedFrom = 'stf.tlc';

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

rtwgensettings.DerivedFrom = 'ert.tlc';

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

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

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

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

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

Введение

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

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

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

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

Требуемый и рекомендуемый %includes

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

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

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

Используя mytarget_genfiles.tlc.  mytarget_genfiles.tlc (дополнительный) полезно как центральный файл, из которого можно вызвать целевые файлы TLC, которые генерируют дополнительные файлы как часть вашего целевого процесса сборки. Например, ваша цель может создать под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 векторы символов, содержащие значения типа целевого устройства или псевдонимы.

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

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

Поскольку описание целевого устройства вводит опцию ProdHWDeviceType, смотрите информацию о командной строке для поставщика Устройства параметров панели Hardware Implementation и Типа устройства.

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

result = RTW.resolveHWDeviceType(type)

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

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

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

Поскольку описание целевого устройства вводит опцию ProdHWDeviceType, смотрите информацию о командной строке для поставщика Устройства параметров панели Hardware Implementation и Типа устройства.

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

result = RTW.isTflEq(name1,name2)

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

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

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

Для описания CodeReplacementLibrary параметр, смотрите заменяющую библиотеку Кода.

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

result = RTW.resolveTflName(name)

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

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

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

Для описания CodeReplacementLibrary параметр, смотрите заменяющую библиотеку Кода.

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

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

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

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

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

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

Введение

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

Этот пример провел вас по процессу создания основанной на ERT цели, my_ert_target. Это осуществление иллюстрирует несколько задач, которые типичны для создания пользовательской цели:

  • Подготовка целевых папок и изменение пути MATLAB.

  • Создание модификаций к стандартному системному конечному файлу и TMF, таким образом, что пользовательская цель отображается в Системном Браузере Конечного файла, наследовало опции ERT, отображает целевые опции и генерирует код с основанным на хосте компилятором по умолчанию.

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

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

Обзор my_ert_target

В следующих разделах вы создаете скелетную цель, my_ert_target. Цель наследовала и поддерживает стандартные опции цели ERT и отображает дополнительные целевые опции в диалоговом окне Configuration Parameters (см. Целевые Опции для 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. Затем подтвердите системный конечный файл путем просмотра новой цели в Системном Браузере Конечного файла и в диалоговом окне Configuration Parameters.

Редактирование Системного Конечного файла.  Чтобы отредактировать системный конечный файл, используйте эти шаги:

  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. Настройте системный конечный файл, заменив строки с комментариями заголовка на директивы, которые делают ваш системный конечный файл видимым в Системном Браузере Конечного файла и задают связанный 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 структура в соответствии с соглашениями описана в Структуре rtwgensettings.

    Установить суффикс на вектор символов для _my_ert_target пользовательская цель, изменение линия

    rtwgensettings.BuildDirSuffix = '_ert_rtw'

    к

    rtwgensettings.BuildDirSuffix = '_my_ert_target_rtw'
    
  8. Измените rtwgenSettings структура, чтобы наследовать опции от ERT предназначается и объявляет Релиз 14 или более позднюю совместимость как описано в Структуре rtwgensettings. Добавьте следующий код в 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 или диалоговое окно Configuration Parameters.

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

  4. Нажмите Browse, чтобы открыть Системный браузер Конечного файла.

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

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

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

  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 файл.

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

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

Если вы используете подход make-файла шаблона, выполняете шаги, которые применяются к make-файлу шаблона и не используют вызывание функции, которая включает податливость набора инструментальных средств из вашего системного конечного файла, который описан в, Создают Основанный на ERT, Набор инструментальных средств Совместимый Системный Конечный файл.

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

  1. Убедитесь, что ваша рабочая папка все еще установлена в папку конечного файла, которую вы создали ранее в Создании Целевых Папок.

    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 принят, чтобы быть рабочей папкой. Ваша цель пишет выходные файлы процесса генерации кода в папку сборки в рабочей папке. Когда встроенный код сгенерирован для timestwo S-функция, процесс сборки ищет реализацию TLC S-функции в рабочей папке.

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

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

    mex timestwo.c
  4. Создайте следующую модель, с помощью Блока s-function от библиотеки Simulink® User-Defined Functions. Сохраните модель в своей рабочей папке как targetmodel.

  5. Дважды кликните Блок s-function, чтобы открыть диалоговое окно Block Parameters. Введите S-имя-функции timestwo. Нажать ОК. Блок теперь связан с timestwo Файл MEX.

  6. Откройте Model Explorer или диалоговое окно Configuration Parameters и выберите панель Решателя.

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

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

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

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

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

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

  1. В диалоговом окне Configuration Parameters выберите панель Code Generation.

  2. Нажмите Browse, чтобы открыть Системный Браузер Конечного файла.

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

  4. Диалоговое окно Configuration Parameters теперь отображается панель 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 в модели.

Похожие темы