这个示例展示了代码生成器如何从生成的代码中消除无用(即未使用的)代码路径。这种优化提高了执行速度并节约了ROM和RAM的消耗。
在模型中rtwdemo_deadpathElim,离开Sum块的信号分成两个单独的代码路径。顶部路径不是死代码路径。如果用户禁用断言块,底部路径将成为死代码路径。
模型=“rtwdemo_deadpathElim”;open_system(模型);
对于Assertion块,打开块参数对话框。
选择启用断言盒子。或者,使用命令行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);}
禁用断言块以生成死代码路径。代码生成器检测死代码路径,并将其从生成的代码中删除。
对于断言块,打开块参数对话框。
请取消启用断言盒子。
或者,使用命令行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.