Определение необходимых файлов и интерфейсов для вызова сгенерированного кода во внешнем процессе построения.
Узнайте, как:
Сбор файлов, необходимых для создания интегрированного кода вне Simulink ®.
Взаимодействие с внешними переменными и функциями.
Сведения о модели примера и связанных примерах см. в разделе Подготовка модели алгоритма управления для генерации кода C.
Для создания кода Embedded Coder ® требуются файлы поддержки, предоставляемые MathWorks ®. Чтобы переместить созданный код в другую среду разработки, такую как выделенная система сборки, необходимо переместить эти файлы поддержки. Эти файлы можно упаковать в zip-файл с помощью packNGo утилита. Эта утилита находит и упаковывает файлы, необходимые для создания исполняемого образа. Утилита использует инструменты для настройки процесса сборки после создания кода, которые включают buildinfo_data структура и packNGo функция. Эти файлы включают внешние файлы, которые определяются на панели Создание кода (Code Generation) > Пользовательский код (Custom Code) диалогового окна Параметры конфигурации модели (Model Configuration Parameters). Утилита сохраняет buildinfo MAT-файл в model_ert_rtw папка.
Откройте пример модели, rtwdemo_PCG_Eval_P5.
Эта модель настроена на выполнение packNGo после генерации кода.
Чтобы создать zip-файл вручную:
Загрузить файл buildInfo.mat (расположен в rtwdemo_PCG_Eval_P5_ert_rtw подпапка).
В командной строке введите команду packNGo(buildInfo).
Количество файлов в zip-файле зависит от версии Embedded Coder ® и конфигурации используемой модели. Компилятору может потребоваться подмножество файлов в zip-файле. Скомпилированный размер исполняемого файла (RAM/ROM) зависит от процесса связывания. Компоновщик, вероятно, включает только необходимые файлы объектов.
В этом примере показано, как интегрировать созданный код в существующую базу кода. Пример использует IDE Eclipse™ и компилятор Cygwin™/gcc. Необходимые задачи интеграции являются общими для сред интеграции.
Полная встроенная система управления состоит из нескольких аппаратных и программных компонентов. Алгоритмы управления - это только один тип компонента. Другими компонентами могут быть:
Операционная система (ОС)
Уровень планирования
Физический аппаратный ввод-вывод
Низкоуровневые драйверы аппаратных устройств
Как правило, созданный код в этих компонентах не используется. Вместо этого созданный код включает интерфейсы, которые соединяются с этими компонентами. MathWorks ® предоставляет библиотеки блоков аппаратных интерфейсов для многих обычных встроенных контроллеров. Примеры см. в библиотеке блоков «Встроенные цели».
В этом примере представлены файлы, показывающие, как можно построить полную систему. Основной файл: example_main.c, которая содержит простую основную функцию, выполняющую только основные действия для выполнения кода.

Файл:
Определяет функциональные интерфейсы (прототипы функций).
Включает файлы, объявляющие внешние данные.
Определяет extern данные.
Инициализирует данные.
Вызывает моделируемое оборудование.
Вызывает алгоритмические функции.
Порядок выполнения функции соответствует порядку выполнения подсистемы в модели тестового электрического жгута и в rtwdemo_PCG_Eval_P5.h. При изменении порядка выполнения в example_main.cрезультаты, которые создает исполняемое изображение, отличаются от результатов моделирования.
Интеграция требует согласования интерфейсов данных и функций сгенерированного кода и существующего системного кода. В этом примере example_main.c файл импортирует и экспортирует данные через #include заявления и extern декларации. Файл также вызывает функции из сгенерированного кода.
Система имеет три входных сигнала: pos_rqst, fbk_1, и fbk_2. Сгенерированный код обращается к двум сигналам обратной связи посредством прямой ссылки на импортированные глобальные переменные (класс хранения ImportedExtern). Код обращается к сигналу позиции через импортированный указатель (класс хранения ImportedExternPointer).
Рукописный файл defineImportedData.c определяет переменные и указатель. Созданный код не определяет переменные и указатель, поскольку их определяет рукописный код. Вместо этого созданный код объявляет импортированные данные (extern) в файле rtwdemo_PCG_Eval_P5_Private.h. В реальной системе данные обычно поступают от других программных компонентов или от аппаратных устройств.
Посмотреть defineImportedData.c.

Посмотреть rtwdemo_PCG_Eval_P5_Private.h.
В этом примере доступ к выходным данным системы не выполняется. В примере «Тест сгенерированного кода» показано, как можно сохранить выходные данные в стандартном файле журнала. Доступ к выходным данным можно получить, обратившись к файлу. rtwdemo_PCG_Eval_P5.h.
Посмотреть rtwdemo_PCG_Eval_P5.h.
Созданный код содержит несколько структур, в которых хранятся часто используемые данные, в том числе:
Значения состояния блока (интегратор, передаточные функции)
Локальные параметры
Время
В таблице перечислены общие структуры данных. В зависимости от конфигурации модели в создаваемом коде появляется комбинация этих структур. Данные объявлены в файле rtwdemo_PCG_Eval_P5.h, но в этом примере доступ к этим данным не осуществляется.
Data Type Data Name Data Purpose
Constants |model_cP| Constant parameters Constants |model_cB| Constant block I/O Output |model_U| Root and atomic subsystem input Output |model_Y| Root and atomic subsystem output Internal data |model_B| Value of block output Internal data |model_D| State information vectors Internal data |model_M| Time and other system level data Internal data |model_Zero| Zero-crossings Parameters |model_P| Parameters
По умолчанию функции, создаваемые генератором кода, имеют void Func(void) интерфейс. Если настроить модель или атомарную подсистему для генерации исходного кода, генератор кода создаст более сложный прототип функции. В этом примере example_main функция вызывает сгенерированные функции с допустимыми входными аргументами.

Вызовы функции PI_Cntrl_Reusable использовать смесь отдельных неструктурированных глобальных переменных и структур данных Simulink ® Coder™. Эти переменные определяются рукописным кодом. Типы структуры определены вrtwdemo_PCG_Eval_P5.h.
Этот пример использует IDE Eclipse™ и отладчик Cygwin™ GCC, чтобы построить встроенную систему. В примере представлены установочные файлы для обеих программ. Номера компонентов и версий программного обеспечения:
Eclipse™ SDK 3.2
Eclipse™ CDT 3.3
Cygwin™/GCC 3.4.4-1
Cygwin™/GDB 20060706-2
Сведения об установке и использовании Eclipse™ и GCC см. в разделе Установка и использование Cygwin и Eclipse.
Чтобы установить файлы для этого примера, щелкните гиперссылку:
Кроме того, чтобы установить файлы вручную, выполните следующие действия.
Создать папку построения (Eclipse_Build_P5).
Распакуйте файл rtwdemo_PCG_Eval_P5.zip в папку построения.
Удалить файлы rtwdemo_PCG_Eval_P5.c, ert_main.c и rt_logging.c, которые заменены на example_main.c.
Отладчик Eclipse™ можно использовать для пошагового выполнения и оценки выполнения сгенерированного кода C. См. пример Установка и использование Cygwin и Eclipse.
Для выполнения модели с входными данными см. Тест сгенерированного кода.