Настройте make-файлы шаблона

Чтобы сконфигурировать или настроить make-файл шаблона (TMF), необходимо быть знакомы с тем, как команда make работает и как это обрабатывает make-файл (файл .mk). Необходимо также понять правила сборки make-файла. Для получения информации об этих темах обратитесь к документации, обеспеченной сделать утилитой, которую вы используете.

Обработайте по шаблону make-файлы и лексемы

Make-файл шаблона содержит лексемы. Процесс сборки расширяет лексемы и создает make-файлы:

  • model.mk – Компиляции и код ссылок сгенерированы от компонентов модели.

  • rtwshared.mk – Компиляции сгенерировали совместно использованный служебный код.

Make-файлы (model_or_sharedutils.mk) команды использования, которые характерны для вашего компьютера разработчика.

Обработайте лексемы make-файла по шаблону

Команда make_rtw (или различная команда, которой предоставляют некоторые цели), направляют процесс генерации model_or_sharedutils.mk. Команда make_rtw обрабатывает TMF, заданный на панели Code Generation диалогового окна Configuration Parameters. make_rtw копирует TMF, линию за линией, расширяя каждую лексему, с которой сталкиваются. Обработайте по шаблону Лексемы Make-файла, Расширенные списками make_rtw лексемы и их расширения.

Эти лексемы используются несколькими способами расширенным make-файлом:

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

  • Обеспечить макроопределения для компиляции файлов, например, -DINTEGER_CODE=1.

Обработайте по шаблону Лексемы Make-файла, Расширенные make_rtw

ЛексемаРасширение
Общая цель

|>ADDITIONAL_LDFLAGS<|

Компоновщик отмечает автоматически добавленный блоками.

|>ALT_MATLAB_BIN<|

Чередуйте полный путь для исполняемого файла MATLAB®; значение отличается, чем значение для лексемы MATLAB_BIN, когда полный путь содержит пробелы.

|>ALT_MATLAB_ROOT<|

Чередуйте полный путь для установки MATLAB; значение отличается, чем значение для лексемы MATLAB_ROOT, когда полный путь содержит пробелы.

|>BUILDARGS<|

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

|>COMBINE_OUTPUT_UPDATE_FCNS<|

True (1), когда Single output/update function выбран, в противном случае Ложный (0). Используемый для макроопределения -DONESTEPFCN=1.

|>COMPUTER<|

Тип компьютера. Смотрите команду computer MATLAB.

|>EXPAND_LIBRARY_LOCATION<|

Местоположение предварительно скомпилированного файла библиотеки. Параметр конфигурации TargetPreCompLibLocation может заменить эту установку. Для примеров смотрите Местоположение Библиотеки Управления и Называющий Во время Сборки (Simulink Coder).

|>EXPAND_LIBRARY_NAME<|

Имя библиотеки. Для примеров смотрите Местоположение Библиотеки Управления и Называющий Во время Сборки (Simulink Coder) и Измените Make-файл Шаблона для rtwmakecfg (Simulink Coder).

|>EXPAND_LIBRARY_SUFFIX<|

Суффикс библиотеки. Параметр конфигурации TargetLibSuffix может заменить эту установку. Для примеров смотрите Местоположение Библиотеки Управления и Называющий Во время Сборки (Simulink Coder).

|>EXT_MODE<| (Не требуемый для R2018a и позже если make-файл шаблона задает TOOLCHAIN_NAME (Simulink Coder)),

True (1), чтобы включить генерацию режима external mode поддерживает код, в противном случае Ложный (0).

|>EXTMODE_TRANSPORT<| (Не требуемый для R2018a и позже если make-файл шаблона задает TOOLCHAIN_NAME (Simulink Coder)),

Индекс транспортного механизма (например, tcpip, serial) для режима external mode.

|>EXTMODE_STATIC<| (Не требуемый для R2018a и позже если make-файл шаблона задает TOOLCHAIN_NAME (Simulink Coder)),

True (1), если выделение статического ЗУ выбрано для режима external mode. Ложь (0), если динамическое выделение памяти выбрано.

|>EXTMODE_STATIC_SIZE<| (Не требуемый для R2018a и позже если make-файл шаблона задает TOOLCHAIN_NAME (Simulink Coder)),

Размер буфера выделения статического ЗУ (если таковые имеются) для режима external mode.

|>GENERATE_ERT_S_FUNCTION<|

True (1), когда Create SIL block выбран, в противном случае Ложный (0). Используемый для управления цели make-файла сборки.

|>INCLUDE_MDL_TERMINATE_FCN<|

True (1), когда Terminate function required выбран, в противном случае Ложный (0). Используемый для макроопределения -DTERMFCN==1.

|>INTEGER_CODE<|

True (1), когда Support floating-point numbers не выбран, не в противном случае Ложный (0). INTEGER_CODE является необходимым макроопределением при компиляции исходного кода и используется, когда выбор предварительно скомпилировал библиотеки, чтобы соединиться против.

|>MAKEFILE_NAME<|

model_or_sharedutils.mk — Имя make-файла, который был создан из TMF.

|>MAT_FILE<|

True (1), когда MAT-file logging выбран, в противном случае Ложный (0). MAT_FILE является необходимым макроопределением при компиляции исходного кода и также используется, чтобы включать код журналирования в процесс сборки.

|>MATLAB_BIN<|

Местоположение исполняемого файла MATLAB.

|>MATLAB_ROOT<|

Путь туда, где MATLAB установлен.

|>MEM_ALLOC<|

Или RT_MALLOC или RT_STATIC. Указывает, как память должна быть выделена.

|>MEXEXT<|

Расширение файла MEX. Смотрите команду mexext MATLAB.

|>MODEL_MODULES<|

Дополнительные сгенерированные исходные модули. Например, можно разделить большую модель в два файла, model.c и model1.c. В этом случае эта лексема расширяется до model1.c.

|>MODEL_MODULES_OBJ<|

Объектные имена файлов (.obj), соответствующий дополнительным сгенерированным исходным модулям.

|>MODEL_NAME<|

Имя блок-схемы Simulink®, в настоящее время создаваемой.

|>MULTITASKING<|

True (1), если режим решателя является многозадачностью, в противном случае Ложной (0).

|>NCSTATES<|

Количество непрерывных состояний.

|>NUMST<|

Количество шагов расчета в модели.

|>RELEASE_VERSION<|

Версия выпуска MATLAB.

|>S_FUNCTIONS_LIB<|

Список библиотек S-функции, доступных для соединения.

|>SOLVER<|

Исходное имя файла решателя, например, ode3.c.

|>SOLVER_OBJ<|

Объект Solver (.obj) имя файла, например, ode3.obj.

|>TARGET_LANG_EXT<|

c, когда выбор Language является C, cpp, когда выбором Language является C++. Используемый в make-файле, чтобы управлять расширением на сгенерированных исходных файлах.

|>TGT_FCN_LIB<|

Задает параметры командной строки компилятора. Строкой в make-файле является TGT_FCN_LIB = |>TGT_FCN_LIB<|. Используйте эту лексему в условном операторе make-файла, чтобы задать стандартную математическую библиотеку как параметр компилятора. Возможный |> TGT_FCN_LIB <| символические стоимости:

ЗначениеГенерирует вызовы
Имя пользовательского CRLISO®/IEC 9899:1990 C (ANSI_C) математическая библиотека стандарта
ISO_CISO/IEC 9899:1999 C стандартная математическая библиотека
ISO_C++ISO/IEC 14882:2003 математическая библиотека стандарта C++
GNUРасширения GNU ISO/IEC 9899:1999 C стандартная математическая библиотека

|>TID01EQ<|

True (1) при выборке уровней непрерывной задачи и первой дискретной задачи равна, в противном случае Ложная (0).

S-функция и информационная поддержка сборки

Примечание

Для примеров лексем в этом разделе смотрите, Изменяют Make-файл Шаблона для rtwmakecfg (Simulink Coder).

|>START_EXPAND_INCLUDES<|
|>EXPAND_DIR_NAME<|
|>END_EXPAND_INCLUDES<|

Список имен папок, чтобы добавить к включать пути. Кроме того, макрос ADD_INCLUDES должен быть добавлен к строке INCLUDES.

|>START_EXPAND_LIBRARIES<|
|>EXPAND_LIBRARY_NAME<|
|>END_EXPAND_LIBRARIES<|

Список имен библиотеки.

|>START_EXPAND_MODULES<|
|>EXPAND_MODULE_NAME<|
|>END_EXPAND_MODULES<|

Имена модуля библиотеки в рамках списков библиотек |>START_EXPAND_LIBRARIES<| и |>START_PRECOMP_LIBRARIES<|.

|>START_EXPAND_RULES<|
|>EXPAND_DIR_NAME<|
|>END_EXPAND_RULES<|

Правила make-файла.

|>START_PRECOMP_LIBRARIES<|
|>EXPAND_LIBRARY_NAME<|
|>END_PRECOMP_LIBRARIES<|

Список предварительно скомпилированных имен библиотеки.

Поддержка модели - ссылки

Примечание

Для примеров лексем в этом разделе см., что Модель Оказания Ссылается на Поддержку в TMF.

|>MASTER_ANCHOR_DIR<|

Для параллельных сборок, текущая папка работы (pwd) в то время запущенная сборка.

|>MODELLIB<|

Имя файла библиотеки сгенерировано для текущей модели.

|>MODELREFS<|

На список моделей ссылается топ-модель.

|>MODELREF_LINK_LIBS<|

Список образцовых библиотек, на которые ссылаются, против которых соединяется топ-модель.

|>MODELREF_LINK_RSPFILE_NAME<|

Имя файла ответа, против которого соединяется топ-модель. Эта лексема допустима только для сред сборки, которые поддерживают файлы ответа компоновщика. Для примера его использования смотрите matlabroot/rtw/c/grt/grt_vc.tmf.

|>MODELREF_TARGET_TYPE<|

Тип цели создается. Возможные значения

  • 'none': Автономная образцовая или топ-модель, ссылающаяся на другие модели

  • RTW: сборка Цели модели-ссылки

  • \sim: симуляция Модели - ссылки предназначается для сборки

|>RELATIVE_PATH_TO_ANCHOR<|

Относительный путь, от местоположения сгенерированного make-файла, к MATLAB рабочая папка.

|>START_DIR<|

Текущая папка работы (pwd) в то время запущенная сборка. Эта лексема требуется для параллельных сборок.

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

NUMST = |>NUMST<|

расширяется до:

NUMST = 2

В дополнение к вышеупомянутому make_rtw расширяет лексемы из других источников:

  • Целевые лексемы заданы в целевых опциях диалогового окна Configuration Parameters

  • Структуры в разделе rtwoptions системного конечного файла. Расширены структуры в массиве структур rtwoptions, которые содержат поле makevariable.

Следующий пример извлечен от matlabroot/rtw/c/grt/grt.tlc. Раздел начиная с BEGIN_RTW_OPTIONS содержит код MATLAB, который настраивает rtwoptions. Следующая директива заставляет лексему |>EXT_MODE<| быть расширенной до 1 (на) или 0 (прочь), в зависимости от того, как вы устанавливаете опции режима external mode.

rtwoptions(2).makevariable = 'EXT_MODE'

Вызовите сделать Утилиту

сделайте Команду

После создания model_or_sharedutils.mk от вашего TMF процесс сборки вызывает команду make. Чтобы вызвать make, процесс сборки дает эту команду.

makecommand -f model_or_sharedutils.mk

makecommand задан макросом MAKECMD в TMF вашей цели (см. Структуру Make-файла Шаблона). Можно задать дополнительные опции к make в Сделать поле команды панели Code Generation. (См., что разделы Задают Сделать Команду (Simulink Coder) и Make-файлы Шаблона и Делают Опции (Simulink Coder).)

Например, определение OPT_OPTS=-O2 в Сделать поле команды заставляет make_rtw генерировать следующую команду make.

makecommand -f model_or_sharedutils.mk OPT_OPTS=-O2

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

сделайте Версии программы

Сделать утилита позволяет вам управлять почти каждым аспектом создания вашей программы в реальном времени. Существует несколько различных версий доступного make. Генератор кода обеспечивает Free Software Foundation GNU® make и для UNIX®[1] и для платформ PC в специфичных для платформы подпапках под

matlabroot/bin

Возможно использовать другие версии make с генератором кода, несмотря на то, что GNU Делает, рекомендуется. Чтобы быть совместимыми с генератором кода, проверьте, что ваша версия make поддерживает следующий формат команды.

makecommand -f model_or_sharedutils.mk

Структура make-файла шаблона

TMF имеет несколько разделов, включая следующее:

  • Abstract — Описывает то, для чего предназначается make-файл. Вот является представительный краткий обзор от GRT TMFs в (открытом) matlabroot/rtw/c/grt:

    # File    : grt_lcc64.tmf   
    #
    # Abstract:
    #	Template makefile for building a PC-based stand-alone generic real-time 
    #       version of Simulink model using	generated C code and LCC compiler 
    #       Version 2.4
    #
    # 	This makefile attempts to conform to the guidelines specified in the
    # 	IEEE Std 1003.2-1992 (POSIX) standard. It is designed to be used
    #       with GNU Make (gmake) which is located in matlabroot/bin/win64.
    #
    # 	Note that this template is automatically customized by the build 
    #       procedure to create "<model>.mk"
    #
    #       The following defines can be used to modify the behavior of the
    #	build:
    #	  OPT_OPTS       - Optimization options. Default is none. To enable
    #                          debugging specify as OPT_OPTS=-g4.
    #	  OPTS           - User specific compile options.
    #	  USER_SRCS      - Additional user sources, such as files needed by
    #			   S-functions.
    #	  USER_INCLUDES  - Additional include paths
    #			   (i.e. USER_INCLUDES="-Iwhere-ever -Iwhere-ever2")
    #			   (For Lcc, have a '/'as file separator before the
    #			   file name instead of a '\' .
    #			   i.e.,  d:\work\proj1/myfile.c - required for 'gmake')
    #
    #       This template makefile is designed to be used with a system target
    #       file that contains 'rtwgensettings.BuildDirSuffix' see grt.tlc
    
  • Раздел Macros read by make_rtw — Задает макросы, которые говорят make_rtw, как обработать TMF. Вот является представительный раздел Macros read by make_rtw от GRT TMFs в (открытом) matlabroot/rtw/c/grt:

    #------------------------ Macros read by make_rtw ------------------------------
    #
    # The following macros are read by the build procedure:
    #
    #  MAKECMD         - This is the command used to invoke the make utility
    #  HOST            - What platform this template makefile is targeted for
    #                    (i.e. PC or UNIX)
    #  BUILD           - Invoke make from the build procedure (yes/no)?
    #  SYS_TARGET_FILE - Name of system target file.
    
    MAKECMD         = "%MATLAB%\bin\win64\gmake"
    SHELL           = cmd
    HOST            = PC
    BUILD           = yes
    SYS_TARGET_FILE = grt.tlc
    BUILD_SUCCESS	= *** Created
    
    # Opt in to simplified format by specifying compatible Toolchain
    TOOLCHAIN_NAME = "LCC-win64 v2.4.1 | gmake (64-bit Windows)"
    
    MAKEFILE_FILESEP = /

    Макросы в этом разделе могут включать:

    • MAKECMD — Указывает, что команда раньше вызывала сделать утилиту. Например, если MAKECMD = mymake, то вызванная команда make

      mymake -f model_or_sharedutils.mk

    • HOST — Задает платформу, предназначенную этим TMF. Это может быть PC, UNIX, computer_name (см. команду computer MATLAB), или ANY.

    • SHELL — Задает команду интерпретатора операционной системы для платформы. Для Windows это может быть cmd.

    • BUILD — Сообщает make_rtw, должен ли он вызвать make из процедуры сборки. Задайте yes или no.

    • SYS_TARGET_FILE — Задает имя системного конечного файла или значения any. Это используется для непротиворечивости, проверяющей make_rtw, чтобы проверить системный конечный файл, заданный в панели Target selection панели Code Generation диалогового окна Configuration Parameters. Если вы задаете any, можно использовать TMF с любым системным конечным файлом.

    • BUILD_SUCCESS — Дополнительный макрос, который задает сообщение успеха сборки, которое будет отображено для завершения make на PC. Например,

      BUILD_SUCCESS = ### Successful creation of

      Макрос BUILD_SUCCESS, если используется, заменяет стандартное сообщение успеха сборки, найденное в TMFs, распределенном со связанными целями генератора кода (такими как GRT):

        @echo ### Created executable $(MODEL).exe

      Ваш TMF должен включать или стандартное сообщение успеха сборки или использовать макрос BUILD_SUCCESS. Для примера использования BUILD_SUCCESS смотрите matlabroot/rtw/c/grt/grt_lcc.tmf или пример кода выше этого списка макросов.

    • BUILD_ERROR — Дополнительный макрос, который задает сообщение об ошибке сборки, которое будет отображено, когда с ошибкой сталкиваются во время процедуры make. Например,

      BUILD_ERROR = ['Error while building ', modelName]

    • VERBOSE_BUILD_OFF_TREATMENT = PRINT_OUTPUT_ALWAYS — Дополнительный макрос, чтобы включать, если вы хотите, чтобы make-файл вывод был отображен независимо от установки Многословной опции сборки в Code Generation> панель Debug.

    • DOWNLOAD — Дополнительный макрос, который можно задать как да или нет. Если задано как да (и BUILD=yes), то make вызывается во второй раз с целью загрузки.

      make -f model_or_sharedutils.mk download

    • DOWNLOAD_SUCCESS — Дополнительный макрос, который можно использовать, чтобы задать сообщение успеха загрузки, которое будет использоваться при поиске завершенной загрузки. Например,

      DOWNLOAD_SUCCESS = ### Downloaded
    • DOWNLOAD_ERROR — Дополнительный макрос, который можно использовать, чтобы задать сообщение об ошибке загрузки, которое будет отображено, когда с ошибкой сталкиваются во время загрузки. Например,

      DOWNLOAD_ERROR = ['Error while downloading ', modelName]

  • Раздел Tokens expanded by make_rtw — Задает лексемы, которые расширяет make_rtw. Вот является краткая выборка от представительного раздела Tokens expanded by make_rtw от GRT TMFs в (открытом) matlabroot/rtw/c/grt:

    #---------------------- Tokens expanded by make_rtw ----------------------------
    #
    # The following tokens, when wrapped with "|>" and "<|" are expanded by the
    # build procedure.
    #
    #  MODEL_NAME          - Name of the Simulink block diagram
    #  MODEL_MODULES       - Any additional generated source modules
    #  MAKEFILE_NAME       - Name of makefile created from template makefile <model>.mk
    #  MATLAB_ROOT         - Path to where MATLAB is installed.
    ...
    
    MODEL                = |>MODEL_NAME<|
    MODULES              = |>MODEL_MODULES<|
    MAKEFILE             = |>MAKEFILE_NAME<|
    MATLAB_ROOT          = |>MATLAB_ROOT<|
    ...

    Для получения дополнительной информации о лексемах TMF, смотрите Лексемы Make-файла Шаблона, Расширенные make_rtw.

  • Последующие разделы отличаются на основе компилятора, хоста и цели. Некоторые общие разделы включают Model and reference models, External mode, Tool Specifications или Tool Definitions, Include Path, C Flags, Additional Libraries и Source Files.

  • Раздел Rules — Содержит сделать правила, использованные в создании исполняемого файла из сгенерированного исходного кода. Правила сборки обычно характерны для вашей версии, делают. Раздел Rules может сопровождаться связанными разделами, такими как Dependencies.

Настройте и создайте make-файлы шаблона

Введение

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

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

Подготовка make-файла шаблона

Чтобы настроить или создать новый TMF, необходимо скопировать существующий GRT или ERT TMF от одного из следующих местоположений:

matlabroot/rtw/c/grt (open)
matlabroot/rtw/c/ert (open)

Поместите копию в ту же папку как связанный системный конечный файл (STF). Обычно, это - папка mytarget/mytarget в целевой структуре папок. Затем переименуйте свой TMF (например, mytarget.tmf) и измените его.

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

TMF: mytarget.tmf

Используя выражения макросов и сопоставления с образцом в make-файле шаблона

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

Сделать служебные процессы model_or_sharedutils.mk и генерируют набор команд, основанных на правилах зависимости, заданных в model_or_sharedutils.mk. После того, как make генерирует набор команд для создания или восстановления test, make выполняет их.

Например, чтобы создать программу под названием test, make должен соединить объектные файлы. Однако, если объектные файлы не существуют или устарели, make должен скомпилировать исходный код. Таким образом между исходными и объектными файлами существует зависимость.

Каждая версия make отличается немного по своим функциям и как заданы правила. Например, рассмотрите программу под названием test, который создается из двух источников, file1.c и file2.c. Используя большинство версий make, правила зависимости были бы

test: file1.o file2.o
        cc -o test file1.o file2.o

file1.o: file1.c
        cc -c file1.c

file2.o: file2.c
        cc -c file2.c

В этом примере принята среда UNIX [2]. В среде PC расширения файла и компиляция и команды ссылки отличаются.

В обработке первого правила

test: file1.o file2.o

make видит, что, чтобы создать test, он должен создать file1.o и file2.o. Чтобы создать file1.o, make обрабатывает правило

file1.o: file1.c

Если file1.o не существует, или если file1.o является более старым, чем file1.c, make компилирует file1.c.

Формат TMFs следует вышеупомянутому примеру. Наши TMFs используют дополнительные функции make, такие как выражения сопоставления с образцом файла и макросы. В большинстве версий make макрос задан с

MACRO_NAME = value

Ссылки на макросы сделаны с $(MACRO_NAME). Когда make видит эту форму выражения, он заменяет value $(MACRO_NAME).

Можно использовать выражения сопоставления с образцом, чтобы сделать правила зависимости более общими. Например, использование GNU[3] Делает, вы могли заменить два правила “file1.o: file1.c” и “file2.o: file2.c” на одно правило

%.o : %.c
        cc -c $<

Обратите внимание на то, что $< в предыдущем примере является специальным макросом, который приравнивается к файлу зависимости (то есть, file1.c или file2.c). Таким образом, с помощью макросов и символа сопоставления с образцом "%", предыдущий пример может уменьшаться до

SRCS = file1.c file2.c
OBJS = $(SRCS:.c=.o)

test: $(OBJS)
        cc -o $@ $(OBJS)

%.o : %.c
        cc -c $<

Обратите внимание на то, что макрос $@ выше является другим специальным макросом, который приравнивается к имени текущей цели зависимости в этом случае test.

Этот пример генерирует список объектов (OBJS) из списка источников (SRCS) при помощи текстовой функции замены макрорасширения. Это заменяет расширение исходного файла (например, .c) с расширением объектного файла (.o). Этот пример также обобщил правило сборки для программы, test, чтобы использовать специальный макрос "$@".

Настройка Сгенерированных Make-файлов с rtwmakecfg

TMFs обеспечивают лексемы, которые позволяют вам добавить следующие элементы в сгенерированные make-файлы:

  • Исходные папки

  • Включайте папки

  • Имена библиотеки времени выполнения

  • Объекты модуля этапа выполнения

S-функции могут добавить эту информацию в make-файл при помощи функции файла rtwmakecfg.m. Эта функция особенно полезна при создавании модели, которая содержит один или несколько Блоков s-function, такой как блоки драйвера устройства.

Добавить информацию, имеющую отношение к S-функции к make-файлу,

  1. Создайте функциональный rtwmakecfg в файле rtwmakecfg.m. Генератор кода сопоставляет этот файл с вашей S-функцией на основе ее местоположения папки.

  2. Измените TMF своей цели, таким образом, что он поддерживает макрорасширение для получения информации, возвращенной функциями rtwmakecfg.

После фазы TLC процесса сборки, при генерации make-файла от TMF, процесс сборки ищет файл rtwmakecfg.m в папке, которая содержит компонент S-функции. Если это находит файл, процесс сборки вызывает функцию rtwmakecfg. Для получения дополнительной информации смотрите Использование rtwmakecfg.m API, чтобы Настроить Сгенерированные Make-файлы (Simulink Coder).

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

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

Обработайте Модификации Make-файла по шаблону.  Добавьте расширение лексемы NCSTATES после расширения лексемы NUMST, можно следующим образом:

NUMST = |>NUMST<|
NCSTATES = |>NCSTATES<|

Кроме того, добавьте NCSTATES в макрос CPP_REQ_DEFINES, как в следующем примере:

CPP_REQ_DEFINES = -DMODEL=$(MODEL) -DNUMST=$(NUMST) -DNCSTATES=$(NCSTATES) \
-DMAT_FILE=$(MAT_FILE)
-DINTEGER_CODE=$(INTEGER_CODE) \
-DONESTEPFCN=$(ONESTEPFCN) -DTERMFCN=$(TERMFCN) \
-DHAVESTDIO
-DMULTI_INSTANCE_CODE=$(MULTI_INSTANCE_CODE) \

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

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

К моделям поддержки, которые имеют непрерывное время, обновите статический основной модуль, чтобы принять во внимание TID01EQ, можно следующим образом:

  1. Прежде чем на NUMST ссылаются в файле, добавьте следующий код:

    #if defined(TID01EQ) && TID01EQ == 1 && NCSTATES == 0
    #define DISC_NUMST (NUMST - 1)
    #else
    #define DISC_NUMST NUMST
    #endif
  2. Замените экземпляры NUMST в файле DISC_NUMST.

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

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

Примечание

Если вы используете TMF без переменной MODELREFS, файл может использоваться с предыдущим релизом программного обеспечения Simulink. Если вы хотите свой TMF к ссылке модели поддержки, добавьте MODELREFS в make-файл.

Похожие темы


[1]  UNIX является зарегистрированной торговой маркой Open Group в Соединенных Штатах и других странах.

[2]  UNIX является зарегистрированной торговой маркой Open Group в Соединенных Штатах и других странах.

[3]  GNU является зарегистрированной торговой маркой Фонда свободного программного обеспечения.