exponenta event banner

Управление зависимостями файлов процесса построения

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

Зависимости между созданными исходными файлами и файлами заголовков отображаются на рисунке. Стрелки, идущие от точки файла к включаемым в него файлам. Существуют другие зависимости, например, от файлов заголовков Simulink ®tmwtypes.h и simstruc_types.h, плюс файлы библиотеки C или C++. На рисунке показаны отношения включения только между файлами, созданными в папке построения. Эти файлы могут ссылаться на служебный и ссылочный код модели, расположенный в папке создания кода. Дополнительные сведения о папках и файлах, создаваемых процессом построения, см. в разделах Управление папками процессов построения и Управление файлами процессов построения.

Две таблицы определяют условия, которые управляют созданием файлов зависимостей для целей GRT и ERT. Для управления зависимостями, связанными со сборкой, рассмотрите, как эти условия применяются к модели и процессу создания кода. Затем настройте параметры модели и параметры генерации кода для управления зависимостями файлов процесса построения.

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

Файлы заголовков родительской системы (model.h) включать файлы заголовков дочерних подсистем (subsystem.h). В более многоуровневых моделях подсистемы аналогичным образом включают файлы заголовков своих детей в иерархию моделей. Как следствие, подсистемы способны рекурсивно просматривать свои дочерние подсистемы и просматривать корневую систему, потому что каждая subsystem.c или subsystem.cpp включает model.h и model_private.h.

На рисунке файлы model.h, model_private.h, и subsystem.h зависит от файла заголовка rtwtypes.h. При использовании системных целевых файлов, не основанных на системном целевом файле ERT, создаваемые исходные файлы могут иметь дополнительные зависимости от tmwtypes.h и simstruc_types.h.

Системные заголовочные файлы

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

Генератор кода включает в себя некоторые системные файлы заголовков для широко определенных случаев. Например, сгенерированный код включает <stddef.h> если модель содержит служебную функцию, для которой требуется этот файл заголовка. Этот подход помогает определить зависимости заголовочных файлов:

  1. Задайте для параметра конфигурации модели Размещение общего кода значение 'Shared location' и построить модель. Генератор кода помещает служебные функции в __sharedutils папка.

  2. Используйте утилиту поиска в файле (например, программу grep) для поиска .c и .h файлы в __sharedutils папка для #include. В результатах поиска перечислены утилиты с зависимостями заголовочных файлов.

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

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

Системный файл заголовкаОписание и условия включения для целевых системных файлов GRT или ERT

<math.h>

Определение математических констант

GRT - сгенерированный код не включает этот файл.

ERT - генерируемый код включает этот файл, когда код соответствует конфигурации модели для времени остановки решателя и либо:

  • Конфигурация модели включает ведение журнала MAT-файлов параметров. См. раздел Ведение журнала файлов MAT.

  • Конфигурация модели включает параметр Внешний режим.

<float.h>

Математические функции с плавающей запятой

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

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

<stddef.h>

Определяет значение NULL

GRT и ERT - сгенерированный код включает этот файл, если модель содержит служебную функцию, требующую этого файла.

<stdio.h>

Предоставляет функции ввода-вывода файлов

GRT - сгенерированный код включает этот файл, если модель включает блок «В файл».

ERT - сгенерированный код включает этот файл, если:

<stdlib.h>

Предоставляет служебные функции, такие как целочисленные версии div() и abs()

GRT - сгенерированный код включает этот файл, если:

  • Модель включает диаграмму Stateflow ®.

  • Модель включает блок математических функций, сконфигурированный для mod() или rem(), которые генерируют вызовы div().

ERT - сгенерированный код включает этот файл, если:

  • Модель включает диаграмму Stateflow, и выбирается параметр конфигурации модели Support: числа с плавающей запятой.

  • Модель включает блок математических функций, сконфигурированный для mod() или rem(), которые генерируют вызовы div().

<string.h>

Предоставляет функции памяти, такие как memset() и memcpy()

GRT - сгенерированный код включает этот файл при вызове кода инициализации модели.memset().

ERT - сгенерированный код включает этот файл при вызове кода инициализации блока или модели.memcpy() или memset().

Для получения списка соответствующих блоков в окне команд введите:

showblockdatatypetable

Ищите блоки с N2 запиской. Пропускание вызовов для memset() из кода инициализации модели выберите параметры конфигурации модели Remove root level I/O zero initialization и Remove internal data zero initialization.

Файлы заголовков генератора кода

Зависимости в таблице для созданных файлов заголовков применяются к системным целевым файлам grt.tlc и ert.tlc. Системные целевые файлы, полученные из этих базовых целевых файлов системы, могут иметь дополнительные зависимости заголовков. Создание кода для блоков из блоков, встроенных целей и пользовательских S-функций может привести к дополнительным зависимостям заголовков.

Файл заголовкаОписание и условия включения для целевых системных файлов GRT или ERT

builtin_typeid_types.h

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

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

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

  • Конфигурация модели позволяет вести журнал MAT-файлов. См. раздел Ведение журнала файлов MAT.

  • Конфигурация модели выбирает параметры C API в меню «Создание кода» > «Интерфейс».

dt_info.h

Определяет структуры данных для внешнего режима

GRT и ERT - сгенерированный код включает этот файл, когда конфигурация модели включает внешний режим.

ext_work.h

Определяет функции внешнего режима

GRT и ERT - сгенерированный код включает этот файл, когда конфигурация модели включает внешний режим.

fixedpoint.h

Поддержка неинлинговых S-функций с фиксированной точкой

GRT - сгенерированный код включает этот файл.

ERT - сгенерированный код включает этот файл, если :

  • Модель использует неинлинные S-функции.

  • Конфигурация модели выбирает параметр Classic call interface.

model_reference_types.h

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

GRT и ERT - созданный код включает этот файл при построении ссылочной модели или модели, содержащей блоки модели.

model_types.h

Определение специфичных для модели типов данных

GRT и ERT - сгенерированный код включает этот файл.

multiword_types.h

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

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

  • Модель использует многословные типы данных.

  • Конфигурация модели выбирает параметр ведения журнала MAT-файла. См. раздел Ведение журнала файлов MAT.

  • Конфигурация модели выбирает внешний режим.

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

  • MultiwordTypeDef кому 'User defined'

  • MultiwordLength до самой большой длины, которая требуется моделям.

rtGetInf.h

rtGetNaN.h

rt_nonfinite.h

Поддержка неокончательных чисел

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

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

  • Для созданного кода требуются нефиксированные числа.

  • Конфигурация модели выбирает параметр ведения журнала MAT-файла. См. раздел Ведение журнала файлов MAT.

  • Конфигурация модели выбирает параметр Classic call interface.

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

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

  • Для созданного кода требуются нефиксированные числа.

  • Конфигурация модели выбирает параметр ведения журнала MAT-файла. См. раздел Ведение журнала файлов MAT.

rt_defines.h

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

GRT и ERT - сгенерированный код включает этот файл, если:

  • Созданный код требует определения математической константы.

  • Тело функции не имеет доступа к аргументу требуемой функции модели.

rt_logging.h

Поддерживает ведение журнала файлов MAT и включает в себя:

rtwtypes.h
builtin_typeid_types.h
multiword_types.h
rt_mxclassid.h
rtw_matlogging.h

GRT - сгенерированный код включает этот файл.

ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает параметр MAT-file logging. См. раздел Ведение журнала файлов MAT.

rt_mxclassid.h

Определяет mxArray перечисления идентификаторов классов

GRT и ERT - сгенерированный код включает этот файл, когда код включаетrt_logging.c.

rtw_continuous.h

Поддержка непрерывного времени

GRT - сгенерированный код включает этот файл, когда код включаетsimstruc_types.h.

ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает параметр Support: continuous time и когда код еще не включаетsimstruc.h.

rtw_extmode.h

Поддерживает внешний режим

GRT - сгенерированный код включает этот файл, когда код включаетsimstruc_types.h.

ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает внешний режим и когда код еще не включаетsimstruc.h.

rtw_matlogging.h

Поддержка ведения журнала файлов MAT

GRT - сгенерированный код включает этот файл, когда код включаетsimstruc_types.h и rt_logging.h.

ERT - сгенерированный код включает этот файл, когда код включаетrt_logging.h.

rtw_solver.h

Поддерживает непрерывные состояния

GRT - сгенерированный код включает этот файл, когда код включаетsimstruc_types.h.

ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает параметр Support: continuous time и когда код еще не включаетsimstruc.h.

rtwtypes.h

Определение типов данных генератора кода

GRT - сгенерированный код включает этот файл. Использует подробную версию файла, которая включаетtmwtypes.h.

ERT - сгенерированный код включает этот файл. См. rtwtypes.h.

Генератор кода перезаписывает ранее созданный rtwtypes.h при включении (ранее отключенном) поддержки для:

  • Комплексные числа (SupportComplex установить в значение 'on').

  • Неинлинные S-функции (SupportNonInlinedSFcns установить в значение 'on')

Чтобы избежать перезаписи rtwtypes.h, вы можете:

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

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

simstruc.h

Поддерживает вызов неинлинных S-функций, использующих Simstruct определение; также включает в себя:

limits.h
string.h
tmwtypes.h
simstruc_types.h

GRT - сгенерированный код включает этот файл.

ERT - сгенерированный код включает этот файл, если :

  • Модель использует неинлинные S-функции.

  • Конфигурация модели выбирает параметр Classic call interface.

simstruc_types.h

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

rtw_matlogging.h
rtw_extmode.h
rtw_continuous.h
rtw_solver.h
sysran_types.h

GRT - сгенерированный код включает этот файл, когда код включаетrtwtypes.h.

ERT - сгенерированный код не включает этот файл. Для ERT,rtwtypes.h содержит определения, и model.h содержит файлы заголовков.

sysran_types.h

Поддерживает внешний режим

GRT - сгенерированный код включает этот файл, когда код включаетsimstruc_types.h.

ERT - сгенерированный код включает этот файл, когда конфигурация модели выбирает внешний режим и когда код еще не включаетsimstruc.h.

zero_crossing_types.h

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

GRT - сгенерированный код не включает этот файл для целей создания кода GRT.

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

При создании содержимое zero_crossing_types.h всегда одно и то же.

Связанные темы