Сконфигурируйте генерацию кода для образцовых функций точки входа

Что такое функция точки входа?

Точка входа является местоположением в коде, где передача программного управления (выполнение) происходит. Основная функция (main()) является точкой входа к программе C/C++ и вызвана, когда приложение начинает выполняться. Вызовы других функций, например, от функции main, обеспечивают точки входа, чтобы функционировать код. Программное управление передается вызванной функции. Функциональный код выполняется, и по окончании, возвращает управление в main или другую вызывающую функцию.

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

Раздел Code Interface Report отчета генерации кода перечисляет функции точки входа, которые генератор кода производит для модели. Для получения дополнительной информации смотрите, Анализируют Интерфейс Сгенерированного кода (Embedded Coder).

Категории и типы сгенерированных функций точки входа

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

  • Основанный на уровне или модель экспорта функций

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

В зависимости от стиля и настройки модели, генератор кода производит один или несколько из этих функций точки входа.

Функциональная категорияФункцияОписание
Инициализировать/Отключитьmodel_initialize

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

model_terminate

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

Выполнениеmodel_step

Для блоков в основанной на уровне модели, выводе и коде обновления. Если вы очищаете образцовую функцию вывода/обновления Single параметра конфигурации (выбранный по умолчанию), вместо того, чтобы произвести функцию model_step, генератор кода производит функции model_output и model_update.

model_function-nameДля экспортированной модели функции, экспортируемой функции для подсистемы.
function-nameДля экспортированной модели функции, экспортируемой функции для Функционального блока Simulink.
model_reset

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

ref-modelДля эталонной модели, вывода и кода обновления.
isr_numinterrupt-number_vecinterrupt-vector-offsetДля блока Async Interrupt, кода процедуры обработки прерывания (ISR).
Разделяемая утилитаfunction-nameДля разделяемых служебных функций, выходного кода.

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

По умолчанию, для топ-моделей, генератор кода производит код, который не является допускающим повторное использование или повторно используемым. Функции точки входа имеют интерфейс void-void. Код связывается с другим кодом путем прямого доступа к структурам глобальных данных, которые находятся в общей памяти.

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

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

Настройки по умолчанию для Одно Экземпляра C функции точки входа

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

  • Создает функцию выполнения без аргументов (void-void).

  • Выделяет память статически (во время компиляции) для структур данных модели.

Образцовые настройки параметра конфигурации по умолчанию для конфигурирования кода функции точки входа одно экземпляра:

Сгенерируйте допускающий повторное использование, мультиэкземпляр C функции точки входа

Можно сконфигурировать генератор кода, чтобы произвести допускающие повторное использование функции точки входа в C или для GRT - или для основанного на ERT системного конечного файла. Однако функциональные интерфейсы, которые генератор кода производит по умолчанию, отличаются. Предположение, что образцовый Язык параметра конфигурации установлен в упаковку интерфейса C и Code, установлено в Reusable function, генератор кода производит этот код функции точки входа для каждого системного сценария конечного файла.

Системный конечный файлИнтерфейс
Основанный на GRT
  • Допускающий повторное использование, мультиэкземпляр C функции точки входа, которые повторно используемы.

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

  • Выделяет память динамически во времени выполнения для данных образцового экземпляра. Выделяет память путем вызывания функции, такой как malloc.

Основанный на ERT
  • Допускающий повторное использование, мультиэкземпляр C функции точки входа, которые повторно используемы.

  • Передает значение каждого образцового блока Inport корневого уровня и блока Outport к функции выполнения в качестве отдельного аргумента.

  • Выделяет память статически для структур данных модели.

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

  • Используя динамическое выделение памяти, чтобы инициализировать структуры данных модели. Выберите динамическое выделение памяти Use для образцовой инициализации.

  • При упаковке значений образцового корневого уровня Inport блокируется в структуру, упаковке значений блоков Выходного порта корневого уровня во вторую структуру и передаче структур функции выполнения в качестве аргументов ссылкой. Установите ввод-вывод корневого уровня Передачи относительно Structure reference.

  • Упаковка значений образцового корневого уровня блоки Inport и Вывод блокируются в структуру данных модели реального времени и передача той структуры к функции выполнения в качестве аргумента ссылкой. Установите ввод-вывод корневого уровня Передачи относительно Part of model data structure.

Сгенерируйте допускающий повторное использование, мультиэкземпляр функции точки входа C++

Интерфейс класса C++ инкапсулирует данные модели как свойства класса и функции точки входа как методы класса. Тот интерфейс доступен для использования с основанными на ERT системными конечными файлами. Чтобы использовать интерфейс, установите Язык на C++ и установите упаковку интерфейса Code на C++ class . Вы можете:

  • Предварительный просмотр и настраивает интерфейс класса C++ путем нажатия на Configure C ++ Class Interface. Индивидуальная настройка означает, что можно сгенерировать код для интеграции с внешним кодом и проверить, что код выполняет кодирование стандартов.

  • Сконфигурируйте видимость наследования классов путем определения, сгенерировать ли структуру параметров блоков как общедоступный, частный, или защищенный элемент данных. Установите видимость Параметра на public , private или protected.

  • Сгенерируйте код интерфейса C++ для параметров блока модели, которые удовлетворяют требования скорости или приспособляемости выполнения кода. Код может быть не встроен или встроенные методы доступа. Установите доступ к Параметру к Method или Inlined method.

  • Сгенерируйте код интерфейса C++ для образцового корневого уровня Inport и Outport blockset, который встречает скорости выполнения кода, приспособляемости данных или данным упаковочные требования. Код может быть одним из этих типов методов доступа.

    Для типа метода доступаУстановите Внешний доступ к вводу-выводу К
    НевстроенныйMethod
    ВстроенныйInlined method
    Невстроенный основанный на структуреStructure-based method
    Встроенный структурированный - базирующийсяInlined structure-based method

Сконфигурируйте сгенерированные объявления функции точки входа

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

Сконфигурируйте размещение функций точки входа в памяти

Если ваше приложение требует, чтобы вы сконфигурировали размещение функций точки входа в памяти, например, чтобы оптимизировать сгенерированный код для определенного оборудования, можно применить раздел memory по умолчанию к категории функций через модель. В Коде, Сопоставляющем Редактор, сопоставьте функциональную категорию с функциональным шаблоном настройки, который задан, чтобы использовать определенный раздел memory. См., что Код Сопоставляет Редактор.

Как взаимодействовать через интерфейс со сгенерированными функциями точки входа

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

  2. Добавьте операторы #include в свой внешний код, которые включают сгенерированные заголовочные файлы, которые объявляют образцовые функции точки входа.

  3. Добавьте оператор #include, который включает сгенерированный файл rtwtypes.h. Этот файл предоставляет определения типа, операторы #define и перечисления.

  4. Инициализируйте целевые структуры данных и оборудование, такие как ADCs или DACs.

  5. Если применимо инициализируйте данные для каждого экземпляра допускающей повторное использование модели.

  6. Если применимо запишите входные данные в сгенерированные переменные, которые представляют блоки модели Inport.

  7. Вызовите сгенерированные функции точки входа или настройте использование функции rt_OneStep.

  8. Если применимо считайте данные из сгенерированных переменных, которые представляют блоки модели Outport.

Для получения дополнительной информации смотрите, Развертывают Сгенерированные Программы Независимого исполняемого файла На Целевом компьютере (Embedded Coder).

Похожие темы