В этом примере показано, как оптимизировать созданный код путем упаковки булевых данных в битовые поля. При выборе параметра конфигурации модели Pack Boolean data to bitfields Embedded Coder ® упаковывает логические сигналы в 1-битовые поля, уменьшая потребление ОЗУ. По умолчанию оптимизация включена. Эта оптимизация снижает потребление ОЗУ. Помните, что эта оптимизация потенциально может увеличить размер кода и скорость выполнения.
Рассмотрим модель rtwdemo_pack_boolean.
model = 'rtwdemo_pack_boolean';
open_system(model);

Откройте диалоговое окно «Параметры конфигурации».
На панели Оптимизация снимите флажок Упаковать логические данные в битовые поля.
Кроме того, для отключения оптимизации можно использовать API командной строки:
set_param(model,'BooleansAsBitfields','off');
Создайте временную папку (во временной папке системы) для процесса сборки и контроля.
currentDir = pwd; [~,cgDir] = rtwdemodir();
Создайте модель с помощью встроенного кодера ®.
slbuild(model)
### Starting build procedure for: rtwdemo_pack_boolean ### Successful completion of build procedure for: rtwdemo_pack_boolean Build Summary Top model targets built: Model Action Rebuild Reason ===================================================================================================== rtwdemo_pack_boolean 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.8233s
Просмотр созданного кода без оптимизации. Эти строки кода находятся в rtwdemo_pack_boolean.h.
hfile = fullfile(cgDir,'rtwdemo_pack_boolean_ert_rtw','rtwdemo_pack_boolean.h'); rtwdemodbtype(hfile,'/* Block signals and states','/* External inputs',1,0);
/* Block signals and states (default storage) for system '<Root>' */
typedef struct {
boolean_T LogicalOp1; /* '<Root>/Logical Op1' */
boolean_T LogicalOp2; /* '<Root>/Logical Op2' */
boolean_T LogicalOp5; /* '<Root>/Logical Op5' */
boolean_T LogicalOp3; /* '<Root>/Logical Op3' */
boolean_T LogicalOp4; /* '<Root>/Logical Op4' */
boolean_T RelationalOperator; /* '<Root>/Relational Operator' */
boolean_T UnitDelay_DSTATE; /* '<Root>/Unit Delay' */
} DW;
Откройте диалоговое окно «Параметры конфигурации».
На панели «Оптимизация» выберите «Упаковать логические данные в битовые поля».
Кроме того, для оптимизации можно использовать API командной строки:
set_param(model,'BooleansAsBitfields','on');
Создайте модель с помощью встроенного кодера ®.
slbuild(model)
### Starting build procedure for: rtwdemo_pack_boolean ### Successful completion of build procedure for: rtwdemo_pack_boolean Build Summary Top model targets built: Model Action Rebuild Reason ==================================================================================== rtwdemo_pack_boolean 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 8.4724s
Просмотр созданного кода с оптимизацией. Эти строки кода находятся в rtwdemo_pack_boolean.h.
hfile = fullfile(cgDir,'rtwdemo_pack_boolean_ert_rtw','rtwdemo_pack_boolean.h'); rtwdemodbtype(hfile,'/* Block signals and states','/* External inputs',1,0);
/* Block signals and states (default storage) for system '<Root>' */
typedef struct {
struct {
uint_T LogicalOp1:1; /* '<Root>/Logical Op1' */
uint_T LogicalOp2:1; /* '<Root>/Logical Op2' */
uint_T LogicalOp5:1; /* '<Root>/Logical Op5' */
uint_T LogicalOp3:1; /* '<Root>/Logical Op3' */
uint_T LogicalOp4:1; /* '<Root>/Logical Op4' */
uint_T RelationalOperator:1; /* '<Root>/Relational Operator' */
uint_T UnitDelay_DSTATE:1; /* '<Root>/Unit Delay' */
} bitsForTID0;
} DW;
При выборе команды Упаковать логические данные в битовые поля активируется спецификатор типа декларатора Bitfield параметра конфигурации модели. Для дальнейшей оптимизации кода выберите uchar_t. Однако преимущество оптимизации параметра спецификатора типа декларатора Bitfield зависит от выбора целевого объекта.
Закройте отчет о модели и создании кода.
bdclose(model) rtwdemoclean; cd(currentDir)
Упаковать логические данные в битовые поля