Справьтесь с упаковкой файла модулей сгенерированного кода

Генератор кода производит модули кода. Файл, группирующий управления конфигурацией, куда генератор кода помещает код в модули кода и заголовочные файлы.

Чтобы определить местоположение и исследовать файлы сгенерированного кода, используйте отчет генерации кода HTML. Отчет генерации кода обеспечивает гиперссылки в комментариях, что вы щелкаете, чтобы просмотреть сгенерированный код в Браузере документации MATLAB®. Для получения дополнительной информации смотрите Трассируемость в Отчете Генерации кода.

Модули сгенерированного кода

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

Модули кода и Заголовочные файлы, Затронутые Упаковкой Файла, обобщают структуру исходного кода, который производит генератор кода.

Можно настроить сгенерированный набор файлов несколькими способами:

  • Файл упаковочные форматы: Управляйте количеством исходных файлов, сгенерированных для вашей модели. В диалоговом окне Configuration Parameter, на панели Code Generation > Code Placement, задают параметр File packaging format. Для получения дополнительной информации смотрите, Настраивают Модули Сгенерированного кода.

  • Невиртуальная генерация кода подсистемы: Дайте программному обеспечению генерации кода команду генерировать отдельные функции в отдельных файлах кода для невиртуальных подсистем. Можно управлять именами функций и файлов кода. Для получения дополнительной информации смотрите Генерацию Управления Функций для Подсистем (Simulink Coder).

  • Пользовательские классы памяти: Используйте пользовательские классы памяти, чтобы разделить сгенерированные структуры данных в различные файлы на основе имен файлов, которые вы задаете. Для получения дополнительной информации смотрите, Применяют Пользовательские Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра.

  • Функции упаковки модуля (MPF): Направьте сгенерированный код в необходимый набор .c или .cpp и файлов .h, и управляйте внутренней организацией сгенерированных файлов. Для получения дополнительной информации смотрите Данные, Функцию и Настройку Файла.

Модули кода и заголовочные файлы, затронутые упаковкой файла

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

model.c или .cpp

Содержит точки входа для кода, реализующего образцовый алгоритм (например, model_step, model_initialize и model_terminate).

model_private.h

Содержит локальные макросы и локальные данные, которых требуют модель и подсистемы. Этот файл включен в model.c файл как оператор #include. Вы не должны включать model_private.h при взаимодействии через интерфейс с рукописным кодом к сгенерированному коду модели.

model.h

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

Генератор кода:

  • Производит отдельный заголовочный файл для каждого Функционального блока Simulink в модели.

  • Включает model.h в подсистему .c или файлы .cpp модели.

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

model_data.c или .cpp

Содержит (если условно сгенерировано) объявления для структуры данных параметров, постоянной структуры данных блока I/O и любых нулевых представлений для образцовых типов данных структуры. Если модель не использует эти структуры данных и обнуляет представления, model_data.c или .cpp не сгенерированы. Эти структуры и нулевые представления объявляются extern в model.h.

model_types.h

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

rtwtypes.h

Задает типы данных, структуры и макросы, требуемые сгенерированным кодом. Для получения дополнительной информации смотрите Размещение Управления rtwtypes.h для Разделяемого Служебного Кода (Simulink Coder).

multiword_types.h

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

  • MAT-file logging

  • Code Generation> Interface> External mode

model_reference_types.h

Содержит определения типа для синхронизации мостов. Файл сгенерирован для цели модели-ссылки или модели, содержащей блоки модели - ссылки.

builtin_typeid_types.h

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

  • MAT-file logging

  • Любая опция API C в Code Generation> Interface

zero_crossing_types.h

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

ert_main.c или .cpp

(дополнительный файл), Если Генерировать пример основная опция программы находится на (значении по умолчанию), этот файл, сгенерирован. Для получения дополнительной информации смотрите, Генерируют пример основная программа.

rtmodel.h

(дополнительный файл), Если Генерировать пример основная опция программы выключена, этот файл, сгенерирован. Для получения дополнительной информации смотрите, Генерируют пример основная программа.

Содержит директивы #include, требуемые rt_main.c или rt_cppclass_main.cpp статический основной программный модуль. Включает rtmodel.h, чтобы получить доступ к образцово-специфичным структурам данных и точкам входа, потому что статический основной программный модуль не создается во время генерации кода.

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

model_capi.c или .cpp

model_capi.h

(дополнительный файл), Обеспечивает структуры данных, которые позволяют под управлением программе получить доступ к образцовым сигналам, состояниям и параметрам без режима external mode. Чтобы изучить, как сгенерировать и использовать model_capi.c или .cpp и файлы .h, смотрите, обмениваются Данными Между Сгенерированным и Внешним Кодом Используя API C (Simulink Coder).

Написанные пользователем модули кода

Код, который вы пишете, чтобы взаимодействовать через интерфейс со сгенерированным типовым кодексом обычно, включает индивидуально настраиваемый основной модуль. Основывайте этот модуль на основной программе, предоставленной программным обеспечением генерации кода. Этот индивидуально настраиваемый основной модуль может также включать обработчиков прерываний, блоки драйвера устройства и другие S-функции и другой контрольный или поддерживающий код. Шаги, чтобы настроить среду разработки, чтобы поддержать индивидуально настраиваемый основной модуль включают:

  1. Установите рабочую папку для своих собственных модулей кода.

  2. Поместите свою рабочую папку на путь MATLAB.

  3. В минимуме сообщите процессу сборки о местоположении ваших исходных и объектных файлов с Additional build information в Code Generation> панель Custom Code.

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

Для получения информации о том, как настроить ваш основанный на ERT системный конечный файл для ваших производственных требований, смотрите Целевую Разработку (Simulink Coder).

Настройте модули сгенерированного кода

Параметр конфигурации доступен, чтобы задать, как пакеты генератора кода сгенерировали исходный код в файлы. Параметр конфигурации опции File packaging format расположен в диалоговом окне Configuration Parameter, на Code Generation> панель Code Placement, в разделе Code packaging. Опциями является Modular, Compact (with separate data file) и Compact. Таблица описывает сгенерированные файлы и удаленные файлы для каждого файла упаковочный формат.

Сгенерированные файлы согласно файлу упаковочный формат

Файл упаковочный форматСгенерированные файлыУдаленные файлы
Modular (значение по умолчанию)

model.c

(дополнительные) файлы подсистемы

model.h

model_types.h

model_private.h

model_data.c (условное выражение)

'none'

Compact (with separate data file)

model.c

model.h

model_data.c (условное выражение)

model_private.h

model_types.h (условное выражение, смотрите Удаленные Файлы Согласно Файлу Упаковочный Формат),

Compact

model.c

model.h

model_data.c

model_private.h

model_types.h (условное выражение, смотрите Удаленные Файлы Согласно Файлу Упаковочный Формат),

Таблица описывает размещение содержимого из удаленных файлов.

Удаленные файлы согласно файлу упаковочный формат

Удаленный файлСгенерированное содержимое в файле
model_private.hmodel.c и model.h
model_types.hmodel.h
model_data.cmodel.c

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

Configuration Parameter> Code Generation> Interface> выбор Shared code placement взаимодействует с файлом упаковочные операции. Если вы задаете Shared code placement как Shared location, генератор кода генерирует отдельные файлы для служебного кода в общем ресурсе, независимо от файла упаковочный формат. Если вы задаете Shared code placement как Auto, генератор кода генерирует код для утилит согласно файлу упаковочный выбор формата.

  • Modular: Некоторые совместно использованные служебные файлы находятся в папке сборки.

  • Compact (with separate data file): Служебный код сгенерирован в model.c.

  • Compact: Служебный код сгенерирован в model.c.

Файл упаковочные форматы Compact и Compact (with separate data file) генерирует model_types.h для моделей, содержащих:

  • Различный блок Subsystem. Файл model_types.h включает директивы препроцессору, задающие различные объекты, сопоставленные с различным блоком.

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

Файл упаковочные форматы Compact и Compact (with separate data file) не совместим с:

  • Модель, содержащая подсистему, которая сконфигурирована, чтобы сгенерировать отдельные исходные файлы

  • Модель, содержащая невстроенную S-функцию

  • Модель, для которой Shared code placement установлен в Auto, который использует объекты данных, для которых Data scope установлен в Exported

Похожие темы