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

Описание

Сгенерируйте сигналы блока модели (блок ввода-вывода) и дискретные состояния (DWork), действующие с той же скоростью в одну и ту же структуру данных. В зависимости от того, сколько скоростей у модели, эти структуры содержат префиксы FuncInternalData0, FunctionInternalData1и так далее.

Category: Генерация кода > Интерфейс

Настройки

По умолчанию: off

На

Сохраните данные глобального блочного сигнала (блок ввода-вывода) и данные о глобальном состоянии (векторы DWork), работающие с одной скоростью в одной структуре данных в сгенерированном коде.

Прочь

Не храните данные глобального блочного сигнала (блок ввода-вывода) и данные о глобальном состоянии (векторы DWork), работающие с одной скоростью в одной структуре данных в сгенерированном коде

Совет

Установка этого параметра на On повышает эффективность кэша при развертывании модели в многоядерном аппаратном окружении, удовлетворяющей следующим требованиям:

  • Модель имеет несколько скоростей и имеет Treat each discrete rate as a separate task, набор параметров для on.

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

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

Пример

Для модели, которая генерирует этот код:

/* Block signals and states (default storage) for system '<Root>' */
typedef struct {
  real_T RTBS2F;                       /* '<Root>/RTBS2F' */
  real_T UDS;                          /* '<Root>/UDS' */
  real_T Sum3;                         /* '<Root>/Sum3' */
  real_T Sum1;                         /* '<Root>/Sum1' */
  real_T UDF_DSTATE;                   /* '<Root>/UDF' */
  real_T UDS_DSTATE;                   /* '<Root>/UDS' */
  real_T RTBS2F_Buffer0;               /* '<Root>/RTBS2F' */
  real_T MIXEDDSM;                     /* '<Root>/DSMM' */
  real_T SLOWDSM;                      /* '<Root>/DSMS' */
} DW_demo1_T;

Если вы выбираете Generate separate internal data per entry-point function, сгенерированный код теперь выглядит как этот код:

/* Block signals and states (default storage) for system '<Root>' */
typedef struct {
  real_T RTBS2F_Buffer0;               /* '<Root>/RTBS2F' */
  real_T MIXEDDSM;                     /* '<Root>/DSMM' */
} DW_demo1_T;

/* Internal Data Grouped For Same Function, for system '<Root>' */
typedef struct {
  real_T RTBS2F;                       /* '<Root>/RTBS2F' */
  real_T Sum3;                         /* '<Root>/Sum3' */
  real_T UDF_DSTATE;                   /* '<Root>/UDF' */
} FuncInternalData0_demo1_T;

/* Internal Data Grouped For Same Function, for system '<Root>' */
typedef struct {
  real_T UDS;                          /* '<Root>/UDS' */
  real_T Sum1;                         /* '<Root>/Sum1' */
  real_T UDS_DSTATE;                   /* '<Root>/UDS' */
  real_T SLOWDSM;                      /* '<Root>/DSMS' */
} FuncInternalData1_demo1_T;

Зависимости

  • Этот параметр требует Embedded Coder® лицензия при генерации кода.

  • Этот параметр активируется путем выбора параметра Combine signal/state structures.

Информация о командной строке

Параметр: GroupInternalDataByFunction
Тип: Вектор символов
Значение: 'on' | 'off'
По умолчанию: 'off'

Рекомендуемые настройки

ПриложениеНастройка
ОтладкаНикакого влияния
ТрассируемостьНикакого влияния
ЭффективностьНа
Меры безопасностиНикакого влияния

Похожие темы