Глобальная переменная повторного использования блокирует Выходные параметры в сгенерированном коде

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

Пример

В Командном окне введите rtwdemo_reuse_global.

Сгенерируйте код без оптимизации

  1. На диалоговом окне Configuration Parameters проверьте, что Повторное использование памяти выбрано.

  2. Очиститесь глобальная переменная Повторного использования блокируют выходные параметры и нажимают Apply.

  3. На Генерации кода> панель Отчета, выберите метрики Static кода.

  4. Во временной папке вашей системы создайте папку для сборки и инспекционного процесса.

Нажмите Ctrl+B, чтобы сгенерировать код.

### Starting build procedure for: rtwdemo_reuse_global
### Successful completion of build procedure for: rtwdemo_reuse_global

Build Summary

Top model targets built:

Model                 Action                       Rebuild Reason                                    
=====================================================================================================
rtwdemo_reuse_global  Code generated and compiled  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 6.2978s

Просмотрите сгенерированный код без оптимизации. Вот фрагмент rtwdemo_reuse_global.c.

/* Model step function */
void rtwdemo_reuse_global_step(void)
{
  /* Sum: '<Root>/Sum' incorporates:
   *  Delay: '<Root>/Delay'
   *  Inport: '<Root>/In1'
   */
  rtDW.Delay_DSTATE += rtU.In1;

  /* Outport: '<Root>/Out1' incorporates:
   *  Delay: '<Root>/Delay'
   */
  rtY.Out1 = rtDW.Delay_DSTATE;
}

Сгенерированный код содержит копию данных к глобальной переменной rtDW.Delay_DSTATE. Откройте Статический Метрический Отчет Кода. Общее количество чтений и записей для глобальных переменных равняется 8. Общий размер составляет 32 байта.

Включите оптимизацию и сгенерируйте код

  1. На диалоговом окне Configuration Parameters выберите глобальную переменную Reuse, блокируют выходные параметры и нажимают Apply.

  2. Сгенерируйте код.

  3. Просмотрите сгенерированный код с оптимизацией. Вот фрагмент rtwdemo_reuse_global.c.

### Starting build procedure for: rtwdemo_reuse_global
### Successful completion of build procedure for: rtwdemo_reuse_global

Build Summary

Top model targets built:

Model                 Action                       Rebuild Reason                   
====================================================================================
rtwdemo_reuse_global  Code generated and compiled  Generated code was out of date.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 6.4308s

/* Model step function */
void rtwdemo_reuse_global_step(void)
{
  /* Sum: '<Root>/Sum' incorporates:
   *  Delay: '<Root>/Delay'
   *  Inport: '<Root>/In1'
   */
  rtY.Out1 += rtU.In1;
}

Генератор кода устраняет копию данных, уменьшает два оператора до одного оператора и три глобальных переменные к двум глобальным переменным.

Откройте Статический Метрический Отчет Кода. Для глобальных переменных эта оптимизация сокращает общее количество чтений и записей для глобальных переменных от 8 до 5 и общий размер от 32 байтов до 24 байтов.

Смотрите также

Похожие темы