文档

在生成的代码中消除死代码路径

这个示例展示了代码生成器如何从生成的代码中消除无用(即未使用的)代码路径。这种优化提高了执行速度并节约了ROM和RAM的消耗。

例子

在模型中rtwdemo_deadpathElim,离开Sum块的信号分成两个单独的代码路径。顶部路径不是死代码路径。如果用户禁用断言块,底部路径将成为死代码路径。

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

使用启用断言块生成代码

  1. 对于Assertion块,打开块参数对话框。

  2. 选择启用断言盒子。或者,使用命令行API来启用断言块。

set_param([模型' / Assert1 '],“启用”“上”);

为构建和检查过程创建一个临时文件夹。

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

构建的模型。

rtwbuild(模型)
###启动模型的构建过程:rtwdemo_deadpathElim

因为启用了Assertion块,所以这些行rtwdemo_deadpathElim.c包括增益和断言块的代码。

用= fullfile (cgDir,“rtwdemo_deadpathElim_grt_rtw”“rtwdemo_deadpathElim.c”);rtwdemodbtype(用“/ *模型步骤”/*模型初始化函数*/0 1);
void rtwdemo_deadpathElim_step(void) {/* Sum: '/Sum1'合并:* Constant: '/Constant1' * Inport: '/In1' */ rtwdemo_deadpathElim_Y. */ rtwdemo_deadpathElim_Y. */着干活= rtwdemo_deadpathElim_U。三机一体+ 1.0;/* Assertion: '/Assert1'合并:* Gain: '/G1' */ utAssert(2.0 * rtwdemo_deadpathElim_Y. txt . txt . txt . txt . txt . txt . txt . txt . txt . txt。着干活! = 0.0);}

使用禁用的断言块生成代码

禁用断言块以生成死代码路径。代码生成器检测死代码路径,并将其从生成的代码中删除。

  1. 对于断言块,打开块参数对话框。

  2. 请取消启用断言盒子。

或者,使用命令行API禁用Assertion块。

set_param([模型' / Assert1 '],“启用”“关闭”);

构建的模型。

rtwbuild(模型)
###启动模型的构建过程:rtwdemo_deadpathElim

由于Assertion块被禁用,这些行rtwdemo_deadpathElim.c不包括增益和断言块的代码。

rtwdemodbtype(用“/ *模型步骤”/*模型初始化函数*/0 1);
void rtwdemo_deadpathElim_step(void) {/* Outport: '/Out1'合并:* Constant: '/Constant1' * Inport: '/In1' * Sum: '/Sum1' */ rtwdemo_deadpathElim_Y. */ rtwdemo_deadpathElim_Y. */着干活= rtwdemo_deadpathElim_U。三机一体+ 1.0;}

关闭模型并清理。

bdclose rtwdemoclean(模型);cd (currentDir)

有关代码生成器如何消除生成代码中的死代码路径的另一个示例,请参见rtwdemo_deadpath

相关的话题