主要内容

通过将布尔数据打包到位字段中优化生成的代码

这个例子展示了如何通过将布尔数据打包到位字段中来优化生成的代码。当您选择模型配置参数时将布尔数据打包到位字段中, Embedded Coder®将布尔信号打包成1位位字段,减少RAM消耗。缺省情况下,该优化是启用的。这种优化减少了RAM消耗。请注意,这种优化可能会增加代码大小和执行速度。

示例模型

考虑模型rtwdemo_pack_boolean

模型=“rtwdemo_pack_boolean”;open_system(模型);

禁用优化

  1. 打开“配置参数”对话框。

  2. 优化窗格中,清晰的将布尔数据打包到位字段中

或者,你可以使用命令行API禁用优化:

set_param(模型,“BooleansAsBitfields”“关闭”);

为构建和检查过程创建一个临时文件夹(在系统临时文件夹中)。

currentDir = pwd;[~,cgDir] = rtwdemodir();

生成没有优化的代码

使用Embedded Coder®构建模型。

slbuild(模型)
###开始构建过程:rtwdemo_pack_boolean成功完成构建过程:rtwdemo_pack_boolean构建摘要顶层模型目标构建:模型动作重建原因===================================================================================================== rtwdemo_pack_boolean生成和编译的代码生成信息文件不存在。构建1 / 1模型(0个模型已经更新)构建持续时间:0h 0m 15.348s

查看未经过优化的生成代码。这几行代码是插入的rtwdemo_pack_boolean.h

hfile = fullfile(cgDir,“rtwdemo_pack_boolean_ert_rtw”“rtwdemo_pack_boolean.h”);rtwdemodbtype (hfile/*阻塞信号和状态'/*外部输入'1 0);
/*为系统''阻塞信号和状态(默认存储)*/ typedef struct {boolean_T LogicalOp1;/* '/Logical Op1' */ boolean_T LogicalOp2;/* '/Logical Op2' */ boolean_T LogicalOp5;/* '/Logical Op5' */ boolean_T LogicalOp3;/* '/Logical Op3' */ boolean_T LogicalOp4;/* '/Logical Op4' */ boolean_T RelationalOperator;/* '<根>/关系运算符' */ boolean_T UnitDelay_DSTATE;/* '<根>/单位延迟' */}DW;

启用优化

  1. 打开“配置参数”对话框。

  2. 优化窗格中,选择将布尔数据打包到位字段中

或者,你可以使用命令行API来启用优化:

set_param(模型,“BooleansAsBitfields”“上”);

使用优化生成代码

使用Embedded Coder®构建模型。

slbuild(模型)
###开始构建过程:rtwdemo_pack_boolean成功完成构建过程:rtwdemo_pack_boolean构建摘要构建的顶级模型目标:模型动作重建原因==================================================================================== rtwdemo_pack_boolean生成和编译的代码生成的代码已过时。构建1 / 1模型(0个模型已经更新)构建持续时间:0h 0m 14.68s

查看生成的带有优化的代码。这几行代码是插入的rtwdemo_pack_boolean.h

hfile = fullfile(cgDir,“rtwdemo_pack_boolean_ert_rtw”“rtwdemo_pack_boolean.h”);rtwdemodbtype (hfile/*阻塞信号和状态'/*外部输入'1 0);
/*为系统''块信号和状态(默认存储)*/ typedef struct {struct {uint_T LogicalOp1:1;/* '/Logical Op1' */ uint_T LogicalOp2:1;/* '/Logical Op2' */ uint_T LogicalOp5:1;/* '/Logical Op5' */ uint_T LogicalOp3:1;/* '/Logical Op3' */ uint_T LogicalOp4:1;/* '/Logical Op4' */ uint_T RelationalOperator:1;/* '<根>/关系运算符' */ uint_T UnitDelay_DSTATE:1;/* '<根>/单位延迟' */}bitsForTID0;} DW;

选择将布尔数据打包到位字段中启用模型配置参数位字段声明器类型说明符.若要进一步优化代码,请选择uchar_t.然而,优化的好处位字段声明器类型说明符设置取决于你选择的目标。

关闭模型和代码生成报告。

bdclose rtwdemoclean(模型);cd (currentDir)

另请参阅

相关的话题