Уменьшайте ROM и потребление RAM и копии данных и скорость выполнения увеличения сгенерированного кода. Сконфигурируйте генератор кода, чтобы снова использовать глобальные переменные путем выбора глобального блока Повторного использования параметра конфигурации модели выходные параметры.
В Командном окне введите rtwdemo_reuse_global.
На диалоговом окне Configuration Parameters проверьте, что Повторное использование памяти выбрано.
Очиститесь глобальная переменная Повторного использования блокируют выходные параметры и нажимают Apply.
На Генерации кода> панель Отчета, выберите Generate статические метрики кода.
Во временной папке вашей системы создайте папку для сборки и инспекционного процесса.
Нажмите 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 7.0859s
Просмотрите сгенерированный код без оптимизации. Вот фрагмент 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 байта.
На диалоговом окне Configuration Parameters выберите глобальную переменную Reuse, блокируют выходные параметры и нажимают Apply.
Сгенерируйте код.
Просмотрите сгенерированный код с оптимизацией. Вот фрагмент 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.5281s /* 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 байтов.
Глобальная переменная повторного использования блокирует выходные параметры