Чтобы применить сгенерированный код исходный код и заголовки из процесса сборки, полезно понять файлы, которые генерирует процесс сборки, и условия, которые управляют генерацией файлов. Эта информация обеспечивает доступ к сгенерированному коду ресурсам, таким как:
Открытый интерфейс для точек входа модели
Перечисленные типы, соответствующие встроенным типам данных
Структуры данных, которые описывают сигналы модели, состояния и параметры
Генератор кода создает
файлы во время генерации кода и процесса сборки. Можно настроить имена файлов для сгенерированного заголовка, источника и файлов данных. Для получения дополнительной информации смотрите Настроить сгенерированные имена файлов (Embedded Coder). Генератор кода создает дополнительные папки и файлы зависимостей для поддержки общих утилит и моделей-ссылок. Дополнительные сведения о папках, которые создает процесс сборки, см. в разделе Управление папками процесса сборки. Для примера, который показывает, как использовать проект для управления папками процесса сборки, смотрите Сгенерировать код и Моделировать модели в проекте.model
.*
В зависимости от архитектуры модели и опций генерации кода процесс сборки для системного целевого файла на основе 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
подпапка в папке сборки. Исходные файлы и файлы заголовков в таблице имеют зависимости. Описания других зависимостей файла см. в разделе Управление зависимостями файла процесса сборки и Добавление зависимостей процесса сборки.
Файл | Описание |
---|---|
| Задает перечисляемый тип, соответствующий встроенным типам данных. Сборка модели генерирует этот файл, когда применяется одно или несколько из следующих условий:
|
| Список дополнительных источников для включения в компиляцию. |
| Содержит окна® пакетные команды файла, которые устанавливают окружение компилятора и активируют Для получения дополнительной информации об использовании этого файла см. Model.bat. |
| Соответствует файлу модели. Целевой компилятор языка генерирует этот файл исходного кода C или C++. Файл содержит:
|
| Исполняемый программный файл. Сборка модели генерирует этот файл, если вы не задаете явно, что генератор кода производит только код. Сборка генерирует исполняемый файл в текущей папке (не в папке сборки) под управлением |
| Задает структуры данных моделей и открытый интерфейс для точек входа модели и структур данных. Предоставляет интерфейс к структуре данных модели реального времени ( Подсистема
Для получения дополнительной информации см. model.h. |
| Сгенерированный make-файл, который управляет компиляцией и связыванием сгенерированного кода в конечный двоичный файл Если вы задаете |
| Представляет скомпилированную модель. По умолчанию процесс сборки удаляет этот ASCII-файл, когда процесс сборки завершен. Файл можно сохранить для проверки. |
| (необязательные файлы) Содержат структуры данных, которые описывают сигналы модели, состояния и параметры без использования режима external mode. Для получения дополнительной информации см. раздел Обмен данными между сгенерированным и Внешним кодом с использованием C API. |
| Содержит (если условно сгенерирован) объявления для структуры данных параметров и структуры данных вводов-выводов постоянного блока и нулевые представления для типов данных структуры, которые использует модель. Сборка модели генерирует этот файл, когда модель использует эти структуры данных. The
|
| (необязательный файл) Объявляет структуры, которые содержат тип данных и информацию о переходе типа данных для сгенерированных структур данных моделей для поддержки режима external mode. |
| Содержит локальные Сгенерированные исходные файлы из сборки модели включают этот файл. Когда вы соединяете внешний код с сгенерированным кодом из модели, включите
Дополнительные сведения см. в разделе Управление зависимостями файла процесса сборки. |
| Содержит определения типов для мостов синхронизации. Сборка модели генерирует этот файл для модели-ссылки или модели, содержащей блоки модели-ссылки. |
| (необязательный файл) Содержит MATLAB® языковые команды, которые используются во режиме external mode для инициализации подключения к режиму external mode. |
| Предоставляет прямое объявление для структуры данных модели реального времени и структуры данных параметров. Сгенерированные файлы заголовков из сборки модели включают этот файл. Объявления функций переиспользуемых функций могут использовать эти структуры. |
| Содержит определения типов для многословных типов данных и их фрагментов размера слова. Если ваш код использует типы данных с несколькими словами, включите этот файл заголовка. Сборка модели генерирует этот файл, когда применяется одно или несколько из следующих условий:
|
| Объявляет и инициализирует глобальные нефинитные значения для A сборки модели генерирует эти файлы, когда применяются одно или несколько из следующих условий:
|
| Содержит Процесс сборки не создает эти модули во время генерации кода. Модули включают в себя |
| Предоставляет основные определения типов, Для системных целевых файлов на основе ERT, которые не генерируют интерфейс GRT и не имеют нелинейных S-функций, Для получения дополнительной информации см. rtwtypes.h и Управление зависимостями файла процесса сборки. |
| Файлы маркеров. Процесс сборки генерирует эти файлы, чтобы помочь |
| Содержит определения типов для специальных математических констант (таких как и e) и задает Сборка модели генерирует этот файл, когда сгенерированный код требует математического определения константы или когда тело функции не обращается к необходимому аргументу функции модели. |
| (необязательные файлы) Обеспечивают функции, которые не встроенные S-функции используют в модели. Нелинейные S-функции используют функции |
| (необязательный файл) Содержит исходный код C для каждой нелинейной невиртуальной подсистемы или скопируйте код, когда подсистема сконфигурирована для размещения кода в отдельном файле. |
| (необязательный файл) Содержит экспортированные символы для невиртуальных подсистем. |
model
.batЭтот файл содержит команды пакетного файла Windows, которые устанавливают окружение компилятора и активируют make
утилита.
Если для процесса сборки используется подход набора инструментальных средств, можно также использовать этот пакетный файл для извлечения информации из сгенерированного make-файла,
. Информация включает определения макросов и значения, которые появляются в файле make, такие как model
.mkCFLAGS
(Флаги компилятора C) и CPP_FLAGS
(Флаги компилятора C++). С папкой, содержащей
выбранная в качестве текущей рабочей папки, в Командном окне введите:model
.bat
>> system('model.bat info')
На платформах UNIX и Macintosh генератор кода не создает
файл. Чтобы извлечь информацию для сборок набора инструментальных средств из сгенерированного make-файла в этих системах, в Командном окне введите:model
.bat
>> 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
.hmain.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 */
Другие внешние исходные файлы могут потребовать включения
для интерфейса с данными моделями, для примера экспортированных глобальных параметров или сигналов. The model
.h
сам файл может иметь дополнительные зависимости заголовка из-за требований сгенерированного кода. См. Файлы заголовка системы и файлы заголовка генератора кода. model
.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 для Общего кода утилиты.