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

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

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

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

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

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

В фигуре, файлы modelH, model_private.h, и subsystemH зависьте от заголовочного файла rtwtypes.h. Если вы используете системные конечные файлы, которые не основаны на системном конечном файле ERT, исходные файлы, которые вы генерируете, могут иметь дополнительные зависимости от tmwtypes.h и simstruc_types.h.

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

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

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

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

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

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

Для получения дополнительной информации смотрите, Генерируют Разделяемый Служебный Код для Функций Фиксированной точки (Simulink Coder).

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

<math.h>

Задает математические константы

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

ERT — Сгенерированный код включает этот файл, когда код соблюдает вашу настройку модели для решателя Stop time и также:

  • Ваша настройка модели включает параметру MAT-file logging. Смотрите, что MAT-файл регистрирует (Simulink Coder).

  • Ваша настройка модели включает параметру External mode.

<float.h>

Обеспечивает математические функции с плавающей точкой

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

ERT — Сгенерированный код включает этот файл, когда ваша модель содержит математическую функцию с плавающей точкой, если заменяющая запись библиотеки кода не заменяет функцию. Для получения дополнительной информации смотрите, Выбирают Code Replacement Library (Simulink Coder).

<stddef.h>

Задает NULL

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

<stdio.h>

Обеспечивает функции файлового ввода-вывода

GRT — Сгенерированный код включает этот файл, когда ваша модель включает блок To File.

ERT — Сгенерированный код включает этот файл когда также:

<stdlib.h>

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

GRT — Сгенерированный код включает этот файл когда также:

  • Ваша модель включает график Stateflow®.

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

ERT — Сгенерированный код включает этот файл когда также:

  • Ваша модель включает диаграмму Stateflow, и вы выбираете параметр конфигурации модели Support: floating-point numbers.

  • Ваша модель включает блок математической функции, сконфигурированный для 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. Системные конечные файлы, выведенные из этих основных системных конечных файлов, могут иметь дополнительные зависимости от заголовка. Генерация кода для блоков из blocksets, целевых процессоров и пользовательских S-функций может ввести дополнительные зависимости от заголовка.

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

builtin_typeid_types.h

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

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

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

  • Ваша настройка модели включает: MAT-file logging. Смотрите, что MAT-файл регистрирует (Simulink Coder).

  • Ваша настройка модели выбирает опции C API в Code Generation> Interface.

dt_info.h

Задает структуры данных для режима external mode

GRT и ERT — Сгенерированный код включает этот файл, когда ваша настройка модели включает режим external mode.

ext_work.h

Задает функции режима external mode

GRT и ERT — Сгенерированный код включает этот файл, когда ваша настройка модели включает режим external mode.

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-file logging. Смотрите, что MAT-файл регистрирует (Simulink Coder).

  • Ваша настройка модели выбирает External mode.

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

  • MultiwordTypeDef к 'User defined'

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

rtGetInf.h

rtGetNaN.h

rt_nonfinite.h

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

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

  • Ваша модель содержит S-функции.

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

  • Ваша настройка модели выбирает параметр MAT-file logging. Смотрите, что MAT-файл регистрирует (Simulink Coder).

  • Ваша настройка модели выбирает параметр Classic call interface.

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

  • Ваша модель содержит S-функции.

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

  • Ваша настройка модели выбирает параметр MAT-file logging. Смотрите, что MAT-файл регистрирует (Simulink Coder).

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-файл регистрирует (Simulink Coder).

rt_mxclassid.h

Задает mxArray перечисления ID класса

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

rtw_continuous.h

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

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

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

rtw_extmode.h

Режим external mode поддержек

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

ERT — Сгенерированный код включает этот файл, когда ваша настройка модели выбирает режим external mode и когда код уже не включает 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 и simstruc_types.h. Смотрите simstruc_types.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 содержит определения и modelH содержит заголовочные файлы.

sysran_types.h

Режим external mode поддержек

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

ERT — Сгенерированный код включает этот файл, когда ваша настройка модели выбирает режим external mode и когда код уже не включает simstruc.h.

zero_crossing_types.h

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

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

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

Если сгенерировано, содержимое zero_crossing_types.h всегда то же самое.

Похожие темы