Точка входа является местоположением в коде, где передача программного управления (выполнение) происходит. Основная функция (main()
) точка входа к программе C/C++ и называется, когда приложение начинает выполняться. Вызовы других функций, например, от main
функционируйте, обеспечьте точки входа, чтобы функционировать код. Программное управление передается вызванной функции. Функциональный код выполняется, и по окончании, возвращает управление в main
или другая вызывающая функция.
При создании кода для модели генератор кода задает набор функций точки входа, которые можно вызвать, чтобы выполнить сгенерированный код. Можно вызвать сгенерированные функции из внешнего кода или от версии сгенерированной основной функции, которую вы изменяете.
Раздел Code Interface Report отчета генерации кода перечисляет функции точки входа, которые генератор кода производит для модели. Для получения дополнительной информации смотрите, Анализируют Интерфейс Сгенерированного кода.
Тип функций точки входа, которые генератор кода производит для модели и интерфейса вызова для функций, зависит от того, является ли модель:
Основанный на уровне или модель экспорта функций
Сконфигурированный для допускающего повторное использование, генерации кода мультиэкземпляра
В зависимости от стиля и настройки модели, генератор кода производит один или несколько из этих функций точки входа.
Функциональная категория | Функция | Описание |
---|---|---|
Инициализировать/Отключить |
| Код инициализации для модели. В начале кода приложения вызовите функцию однажды. Не используйте эту функцию, чтобы сбросить структуру данных модели реального времени ( |
| Код для того, чтобы выключить систему. Для основанных на ERT моделей можно подавить генерацию этой функции путем очистки параметра конфигурации модели Terminate function required (набор по умолчанию). | |
Выполнение |
| Для блоков в основанной на уровне модели, выходе и коде обновления. Если вы очищаете параметр конфигурации модели Single output/update function (Simulink Coder) (выбранный по умолчанию), вместо того, чтобы произвести |
| Для экспортированной модели функции, экспортируемой функции для подсистемы. | |
| Для экспортированной модели функции, экспортируемой функции для Функционального блока Simulink. | |
| Если модель включает Функциональный блок Сброса, сгенерированный код сброса. Чтобы сбросить условия или утвердить, вызовите функцию от кода приложения. | |
| Для образца модели, выхода и кода обновления. | |
isr_num | Для блока Async Interrupt, кода процедуры обработки прерывания (ISR). | |
Разделяемая утилита |
| Для разделяемых служебных функций, выходного кода. |
По умолчанию, для топ-моделей, генератор кода производит код, который не является допускающим повторное использование или повторно используемым. Функции точки входа имеют void-void
интерфейс. Код связывается с другим кодом путем прямого доступа к структурам глобальных данных, которые находятся в общей памяти.
Если ваше приложение требует допускающий повторное использование, код функции точки входа мультиэкземпляра, можно сконфигурировать генератор кода, чтобы вызвать каждую функцию (экземпляр) с уникальными данными. В этом случае код повторно используем.
Вы конфигурируете, являются ли функции точки входа допускающими повторное использование с параметром конфигурации модели Code interface packaging (Simulink Coder) и связанные параметры. Установки параметров, которые вы выбираете, зависят от факторов, таких как выборы настройки для системного конечного файла, языка программирования и интерфейса аргумента.
По умолчанию, для GRT - и основанные на ERT системные конечные файлы, генератор кода производит одно экземпляр C функции точки входа. Сгенерированный код:
Создает функцию выполнения без аргументов (void-void
).
Выделяет память статически (во время компиляции) для структур данных модели.
Настройки параметра конфигурации модели по умолчанию для конфигурирования кода функции точки входа одно экземпляра:
Language (Simulink Coder) набор к C
.
Code interface packaging (Simulink Coder) набор к Nonreusable function
.
Можно сконфигурировать генератор кода, чтобы произвести допускающие повторное использование функции точки входа в C или для GRT - или для основанного на ERT системного конечного файла. Однако функциональные интерфейсы, которые генератор кода производит по умолчанию, варьируются. Предположение, что параметр конфигурации модели Language (Simulink Coder) установлен в C
и Code interface packaging (Simulink Coder) установлен в Reusable function
, генератор кода производит этот код функции точки входа для каждого системного сценария конечного файла.
Системный конечный файл | Интерфейс |
---|---|
Основанный на GRT |
|
Основанный на ERT |
|
Если вы используете основанный на ERT системный конечный файл и хотите сгенерировать допускающий повторное использование, мультиэкземпляр C функции точки входа, которые повторно используемы, рассматривают:
Используя динамическое выделение памяти, чтобы инициализировать структуры данных модели. Выберите Use dynamic memory allocation for model initialization.
При упаковке значений корневого уровня модели Inport блокируется в структуру, упаковке значений блоков Выходного порта корневого уровня во вторую структуру и передаче структур функции выполнения в качестве аргументов ссылкой. Установите Pass root-level I/O as на Structure reference
.
Упаковка значений корневого уровня модели блоки Inport и Выход блокируются в структуру данных модели реального времени и передача той структуры к функции выполнения в качестве аргумента ссылкой. Установите Pass root-level I/O as на Part of model data structure
.
Интерфейс класса C++ инкапсулирует данные модели как свойства класса и функции точки входа как методы класса. Тот интерфейс доступен для использования с основанными на ERT системными конечными файлами. Чтобы использовать интерфейс, установите Language (Simulink Coder) на C++
и набор Code interface packaging (Simulink Coder) к C++ class
. Вы можете:
Предварительный просмотр и настраивает интерфейс класса C++ путем нажатия на Configure C++ Class Interface. Индивидуальная настройка означает, что можно сгенерировать код для интеграции с внешним кодом и проверить, что код выполняет кодирование стандартов.
Сконфигурируйте видимость наследования классов путем определения, сгенерировать ли структуру параметров блоков как общедоступный, частный, или защищенный элемент данных. Установите Parameter visibility на public
, private
, или protected
.
Сгенерируйте код интерфейса C++ для параметров блока модели, которые удовлетворяют требования скорости или приспособляемости выполнения кода. Код может быть не встроен или встроенные методы доступа. Установите Parameter access на Method
или Inlined method
.
Сгенерируйте код интерфейса C++ для корневого уровня модели Inport и Outport blockset, который встречает скорости выполнения кода, приспособляемости данных или данным упаковочные требования. Код может быть одним из этих типов методов доступа.
Для типа метода доступа | Установите Внешний доступ к вводу-выводу К |
---|---|
Невстроенный | Method |
Встроенный | Inlined method |
Невстроенный основанный на структуре | Structure-based method |
Встроенный структурированный - базирующийся | Inlined structure-based method |
Сконфигурируйте видимость наследования классов путем определения, сгенерировать ли структуру ввода-вывода корневого уровня как общедоступный, частный, или защищенный элемент данных. Установите External I/O visibility на public
, private
, или protected
.
В зависимости от требований к приложению, таких как интегрирование или податливость со стандартами кода, вы можете должны быть сконфигурировать, как генератор кода производит объявления для функций точки входа. Embedded Coder® обеспечивает несколько параметров конфигурации.
Примените правило именования функции по умолчанию к категории функций через модель. Например, правило именования значения по умолчанию может произвести
функция для каждого уровня в многоскоростной модели. В редакторе Отображений Кода, на вкладке Function Defaults, сопоставляют функциональную категорию с функциональным шаблоном настройки, который задан, чтобы использовать правило именования функции (см. Редактор Отображений Кода). Можно заменить именование по умолчанию функции, меняя имя на вкладке Functions (см., что Значение по умолчанию Переопределения Называет для Функций Точки входа Индивидуума C или Значения по умолчанию Переопределения C Интерфейс Ступенчатой функции). model
шаг
Сконфигурируйте интерфейсы для отдельных функций точки входа. В редакторе Отображений Кода, на вкладке Functions, задают имена отдельных функций (см., что Значение по умолчанию Переопределения Называет для Функций Точки входа Индивидуума C). Для
(выполнение) функционирует, можно настроить целый интерфейс функции точки входа (см. Значение по умолчанию Переопределения C Интерфейс Ступенчатой функции).model
шаг
Если ваше приложение требует, чтобы вы сконфигурировали размещение функций точки входа в памяти, например, чтобы оптимизировать сгенерированный код для определенного оборудования, можно применить раздел memory по умолчанию к категории функций через модель. В редакторе Отображений Кода сопоставьте функциональную категорию с функциональным шаблоном настройки, который задан, чтобы использовать определенный раздел memory. См. Редактор Отображений Кода.
После генерации кода для модели используйте представление Code, чтобы рассмотреть сгенерированные функции точки входа и, если применимо, переменные, представляющие внешние порты ввода и вывода.
Добавьте #include
операторы к вашему внешнему коду, которые включают сгенерированные заголовочные файлы, которые объявляют функции точки входа модели.
Добавьте #include
оператор, который включает сгенерированный файл rtwtypes.h
. Этот файл предоставляет определения типа, #define
операторы и перечисления.
Инициализируйте целевые структуры данных и оборудование, такие как ADCs или DACs.
Если применимо инициализируйте данные для каждого экземпляра допускающей повторное использование модели.
Если применимо запишите входные данные в сгенерированные переменные, которые представляют блоки модели Inport.
Вызовите сгенерированные функции точки входа или настройте использование rt_OneStep
функция.
Если применимо считайте данные из сгенерированных переменных, которые представляют блоки модели Outport.
Для получения дополнительной информации смотрите, Развертывают Сгенерированные Программы Независимого исполняемого файла В Целевой компьютер.