Управление файлами процесса сборки

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

  • Открытый интерфейс для точек входа модели

  • Перечисленные типы, соответствующие встроенным типам данных

  • Структуры данных, которые описывают сигналы модели, состояния и параметры

Генератор кода создает model.* файлы во время генерации кода и процесса сборки. Можно настроить имена файлов для сгенерированного заголовка, источника и файлов данных. Для получения дополнительной информации смотрите Настроить сгенерированные имена файлов (Embedded Coder). Генератор кода создает дополнительные папки и файлы зависимостей для поддержки общих утилит и моделей-ссылок. Дополнительные сведения о папках, которые создает процесс сборки, см. в разделе Управление папками процесса сборки. Для примера, который показывает, как использовать проект для управления папками процесса сборки, смотрите Сгенерировать код и Моделировать модели в проекте.

В зависимости от архитектуры модели и опций генерации кода процесс сборки для системного целевого файла на основе GRT может создать файлы, которые процесс сборки не генерирует для системного целевого файла на основе ERT. Кроме того, для системных целевых файлов на основе ERT, пакеты процесса сборки генерируют файлы по-другому, чем для системных целевых файлов на основе GRT. Смотрите раздел Управление упаковкой файлов модулей Сгенерированный код (Embedded Coder).

Примечание

По умолчанию процесс сборки удаляет иностранные (не сгенерированные) исходные файлы в папке сборки. Сохранить зарубежные исходные файлы в папке build можно, следуя инструкциям в Preserve External Code Files in Build Folder.

Таблица описывает файлы, сгенерированные принципалом. В пределах сгенерированных имен файлов, показанных в таблице, model представляет имя модели, для которой вы генерируете код. The subsystem представляет имя подсистемы в модели. Когда вы выбираете параметр Create code generation report, генератор кода производит набор HTML файлов. Существует один HTML для каждого исходного файла плюс model_contents.html индексный файл в html подпапка в папке сборки. Исходные файлы и файлы заголовков в таблице имеют зависимости. Описания других зависимостей файла см. в разделе Управление зависимостями файла процесса сборки и Добавление зависимостей процесса сборки.

ФайлОписание

builtin_typeid_types.h

Задает перечисляемый тип, соответствующий встроенным типам данных.

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

  • Ваша модель содержит диаграмму Stateflow, которая использует сообщения.

  • Ваша модель строения позволяет MAT-file logging.

  • Ваша модель строения включает опции C API в Code Generation > Interface.

modelsources.txt

Список дополнительных источников для включения в компиляцию.

model.bat

Содержит окна® пакетные команды файла, которые устанавливают окружение компилятора и активируют make утилита.

Для получения дополнительной информации об использовании этого файла см. Model.bat.

model.c

model.cpp

Соответствует файлу модели.

Целевой компилятор языка генерирует этот файл исходного кода C или C++. Файл содержит:

  • Включите файлы model.h и model_private.h

  • Данные, кроме данных, помещенных в model_data.c

  • Модельный код планировщика

  • Модельный код решателя

  • Моделируйте регистрационный код

  • Код алгоритма

  • Опциональные функции обертки GRT

model.exe (платформа Windows)

model (UNIX® и платформы Macintosh)

Исполняемый программный файл.

Сборка модели генерирует этот файл, если вы не задаете явно, что генератор кода производит только код. Сборка генерирует исполняемый файл в текущей папке (не в папке сборки) под управлением make утилита вашей системы разработки.

model.h

Задает структуры данных моделей и открытый интерфейс для точек входа модели и структур данных. Предоставляет интерфейс к структуре данных модели реального времени (model_rtM) через макросы доступа.

Подсистема .c или .cpp файлы в модели включают model.h. Этот файл включает:

  • Экспортированный Simulink® символы данных

  • Экспортированный Stateflow® машинные родительские данные

  • Моделируйте структуры данных, включая rtM

  • Моделируйте функции точки входа

Для получения дополнительной информации см. model.h.

model.mk

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

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

model.rtw

Представляет скомпилированную модель.

По умолчанию процесс сборки удаляет этот ASCII-файл, когда процесс сборки завершен. Файл можно сохранить для проверки.

model_capi.h

model_capi.c

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

Для получения дополнительной информации см. раздел Обмен данными между сгенерированным и Внешним кодом с использованием C API.

model_data.c

Содержит (если условно сгенерирован) объявления для структуры данных параметров и структуры данных вводов-выводов постоянного блока и нулевые представления для типов данных структуры, которые использует модель.

Сборка модели генерирует этот файл, когда модель использует эти структуры данных. The extern объявления для структур появляются в model.h. При наличии этот файл содержит:

  • Вводы-выводы постоянных блоков

  • Включите файлы model.h и model_private.h

  • Определения для нулевых представлений для определяемых пользователем типов данных структуры, которые использует модель

  • Постоянные параметры

model_dt.h

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

model_private.h

Содержит локальные define константы и локальные данные для модели и подсистем.

Сгенерированные исходные файлы из сборки модели включают этот файл. Когда вы соединяете внешний код с сгенерированным кодом из модели, включите model_private.h. Файл содержит:

  • Импортированные символы данных Simulink

  • Импортированные родительские данные машины Stateflow

  • Точки входа Stateflow

  • Детали Simulink Coder™ (различные макросы, enums, и так далее, которые являются частными для кода)

Дополнительные сведения см. в разделе Управление зависимостями файла процесса сборки.

model_reference_types.h

Содержит определения типов для мостов синхронизации.

Сборка модели генерирует этот файл для модели-ссылки или модели, содержащей блоки модели-ссылки.

model_targ_data_map.m

(необязательный файл) Содержит MATLAB® языковые команды, которые используются во режиме external mode для инициализации подключения к режиму external mode.

model_types.h

Предоставляет прямое объявление для структуры данных модели реального времени и структуры данных параметров.

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

multiword_types.h

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

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

  • Ваша модель использует типы данных с несколькими словами.

  • Ваша модель строения позволяет MAT-file logging.

  • Ваша модель строения включает Code Generation > Interface > External mode.

rtGetInf.c

rtGetInf.h

rtGetNaN.c

rtGetNaN.h

rt_nonfinite.c

rt_nonfinite.h

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

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

  • Модель содержит S-функции.

  • Сгенерированный код из модели требует нефинитных чисел.

  • Ваша модель строения позволяет MAT-file logging.

  • Ваша модель строением выбирает grt.tlc как System target file и включает Classic call interface.

rtmodel.h

Содержит #include директивы, требуемые статическими основными программными модулями, такими как rt_main.c.

Процесс сборки не создает эти модули во время генерации кода. Модули включают в себя rtmodel.h для доступа к структурам данных и точкам входа для конкретной модели. Если вы создаете свой собственный основной программный модуль, обязательно включите rtmodel.h.

rtwtypes.h

Предоставляет основные определения типов, #define операторы и перечисления.

Для системных целевых файлов на основе ERT, которые не генерируют интерфейс GRT и не имеют нелинейных S-функций, rtwtypes.h не включает simstruc_types.h.

Для получения дополнительной информации см. rtwtypes.h и Управление зависимостями файла процесса сборки.

rtw_proj.tmw

sl_proj.tmw

Файлы маркеров.

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

rt_defines.h

Содержит определения типов для специальных математических констант (таких как и e) и задает UNUSED_PARAMETER макрос.

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

rt_sfcn_helper.h

rt_sfcn_helper.c

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

Нелинейные S-функции используют функции rt_CallSys, rt_enableSys, и rt_DisableSys вызов дочерних подсистем вызова функций.

subsystem.c

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

subsystem.h

(необязательный файл) Содержит экспортированные символы для невиртуальных подсистем.

model.bat

Этот файл содержит команды пакетного файла Windows, которые устанавливают окружение компилятора и активируют make утилита.

Если для процесса сборки используется подход набора инструментальных средств, можно также использовать этот пакетный файл для извлечения информации из сгенерированного make-файла, model.mk. Информация включает определения макросов и значения, которые появляются в файле make, такие как CFLAGS(Флаги компилятора C) и CPP_FLAGS(Флаги компилятора C++). С папкой, содержащей model.bat выбранная в качестве текущей рабочей папки, в Командном окне введите:

>> system('model.bat info')

На платформах UNIX и Macintosh генератор кода не создает model.bat файл. Чтобы извлечь информацию для сборок набора инструментальных средств из сгенерированного make-файла в этих системах, в Командном окне введите:

>> system('gmake -f model.mk info')

model.h

Заголовочный файл model.h объявляет структуры данных моделей и открытый интерфейс для точек входа модели и структур данных. Этот файл заголовка также обеспечивает интерфейс со структурой данных модели реального времени (model_M) при помощи макросов доступа. Если ваш код взаимодействует с функциями модели или структурами данных моделей, включите model.h:

  • Экспортированные глобальные сигналы

    extern int32_T INPUT;    /* '<Root>/In' */
  • Определения глобальных структур

    /* Block parameters (auto storage) */
    extern Parameters_mymodel mymodel_P;
  • Модель реального времени (RTM) определения макросов

    #ifndef rtmGetSampleTime
    # define rtmGetSampleTime(rtm, idx) 
    ((rtm)->Timing.sampleTimes[idx])
    #endif
  • Моделируйте функции точки входа (пример ERT)

    extern void mymodel_initialize(void);
    extern void mymodel_step(void);
    extern void mymodel_terminate(void);

The main.c (или .cpp) файл включает model.h. Если сборка модели генерирует main.c (или .cpp) файл из TLC скрипта, источник TLC может включать model.h.

#include "%<CompiledModel.Name>.h"

Если main.c является статическим исходным файлом, можно использовать фиксированное имя файла заголовка rtmodel.h. Этот файл включает model.h файл заголовка:

#include "model.h"     /* If main.c is generated */

или

#include "rtmodel.h"   /* If static main.c is used */

Другие внешние исходные файлы могут потребовать включения model.h для интерфейса с данными моделями, для примера экспортированных глобальных параметров или сигналов. The model.h сам файл может иметь дополнительные зависимости заголовка из-за требований сгенерированного кода. См. Файлы заголовка системы и файлы заголовка генератора кода.

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

rtwtypes.h

Заголовочный файл rtwtypes.h определяет типы данных, структуры и макросы, требуемые сгенерированным кодом. Вы включаете rtwtypes.h для целевых файлов системы GRT и ERT вместо включения tmwtypes.h.

Часто сгенерированный код требует, чтобы целочисленные операции переполнялись или недействовали с определенными значениями. Для примера, когда код ожидает 16-битного целого числа, код не принимает 8-битный или 32-битный целый тип. Язык C не устанавливает стандарт количества бит в типах, таких как char, int, и другие. Таким образом, не существует общепринятого типа данных на C, который мог бы использоваться для размерных целых чисел.

Чтобы учесть эту функцию языка C, сгенерированный код использует размерные целые типы, такие как int8_T, uint32_T, и другие, которые не являются стандартными типами C. В rtwtypes.hсгенерированный код преобразует эти типоразмерно-целочисленные типы в соответствующий базовый тип ключевого слова C с помощью информации на Hardware Implementation панели параметров конфигурации.

Генератор кода производит оптимизированную версию rtwtypes.h для целевых файлов на основе ERT, когда применяются эти условия:

  • Configuration Parameters > Code Generation > Interface > Advanced parameters > Classic call interface > не выбран.

  • Модель не содержит неинстрированных S-функций.

Включите rtwtypes.h. Если вы включаете его для системных целевых файлов GRT, например, легче использовать свой код с системными целевыми файлами на основе ERT.

Для целевых файлов системы GRT и ERT, расположение rtwtypes.h зависит от того, использует ли процесс сборки расположение общих утилит. Если используется общее местоположение, генератор кода помещает rtwtypes.h в slprj/target/_sharedutils; в противном случае помещает rtwtypes.h в папке сборки (model_ target_rtw). См. «Задание сгенерированных кодов».

Исходные файлы включают rtwtypes.h заголовочный файл, когда в исходных файлах используются имена типов генераторов кода или другие определения генераторов кода. Типичным примером являются файлы, которые объявляют переменные с помощью типа данных генератора кода, например uint32_T myvar.

Исходный файл, который используют генератор кода и S-функция, может использовать макрос препроцессора MATLAB_MEX_FILE. Определение макроса происходит от mex функция:

#ifdef  MATLAB_MEX_FILE
#include "tmwtypes.h"
#else
#include "rtwtypes.h"
#endif

Исходный файл генератора кода main.c (или .cpp) файл включает rtwtypes.h без предпроцессорных проверок.

#include "rtwtypes.h"

Пользовательские исходные файлы, которые генерирует Target Language Compiler, также могут испускать эти include операторы в их сгенерированный файл.

См. Раздел управления размещением rtwtypes.h для Общего кода утилиты.

Похожие темы