目录
前言
自动代码生成到指令文件夹
.c和.h放到指定文件夹
总结
接上回,通过模块化建模后,每个子模型生成的代码都放在比较深且不同的目录,找了半天也没找到像AUTOSAR那样直接打包代码的方法, 还是用Embeded coder去生成代码,生成的代码比较分散,文件夹比较多:
Simulink 自动代码生成System Composer的使用Architecture Model_卡洛斯伊的博客-CSDN博客
当然可以把Simulink生成代码的目录和模型直接放到软件工程里面,生成代码直接在Makefile里面把文件路径设置好,只是这样就会让整个Project看起来很臃肿,这里就总结一个自己的操作,清爽的提取出生成的代码仅供参考
生成代码前运行以下脚本:
orig = Simulink.fileGenControl('get','CodeGenFolderStructure');
Simulink.fileGenControl('set','CodeGenFolderStructure',...
Simulink.filegen.CodeGenFolderStructure.TargetEnvironmentSubfolder);
myCodeGenFolder = fullfile('E:','Code_generate_test');
Simulink.fileGenControl('set', ...
'CodeGenFolder',myCodeGenFolder, ...
'keepPreviousPath',true, ...
'createDir',true);
这几句的意思就是把生成的代码文件夹换成自己定义的,这里自定义的文件夹是E:\Code_generate_test
Simulink.fileGenControl('reset'); %如果不想用自定义的文件夹,就用默认的
生成代码后的文件夹就变成了:
对应的就是三个部分的代码,如下:
Model code 就是主模型生成的代码
Model Reference code 就是每个子模型生成的代码
Shared Code 就是共享的文件,每个模型生成的代码都会调用到的部分
生成代码后每个模型的代码还是放在各自的文件夹,且代码包含.c和.h及其他文件
目前没找到好的解决办法,这里通过批处理(.bat)的方式把文件夹里的.c和.h索引出来,并放到指定文件夹,操作如下:
通过批处理文件, 如下除了.bat都是Simulink生成的,代码都放在ARM7里面
双击之后,多了两个文件夹,里面分别存放了.c和.h文件,用这种方法就可以直接生成代码到指定的路径,不需要手动拷贝了,提高效率
创建的批处理文件如下,大致流程是创建两个文件夹分别存放.c和.h用,还有两个txt用来存放搜索到的.c和.h的文件目录,然后搜索ARM7文件夹,把.c和.h的文件提取到txt文本并复制到指定的文件夹,最后删除txt文件
@echo off
md E:\Code_generate_test\Ccode
md E:\Code_generate_test\Hcode
dir E:\Code_generate_test\Cdir.txt
dir E:\Code_generate_test\Hdir.txt
dir /s/b/a-d E:\Code_generate_test\ARM7\*.c* >E:\Code_generate_test\Cdir.txt
for /f "delims=" %%i in (E:\Code_generate_test\Cdir.txt) do copy "%%i" E:\Code_generate_test\Ccode
dir /s/b/a-d E:\Code_generate_test\ARM7\*.h* >E:\Code_generate_test\Hdir.txt
for /f "delims=" %%i in (E:\Code_generate_test\Hdir.txt) do copy "%%i" E:\Code_generate_test\Hcode
del E:\Code_generate_test\Cdir.txt
del E:\Code_generate_test\Hdir.txt
echo copy completed!
pause
解决方法也许不止一种,因为目前没找到更好的方案只能采取这种方式,这里记录一下方便日后回顾