Simulink代码生成: 自定义cgt文件

本文研究了Simulink代码生成所用到的cgt文件,并配置该文件生成自定义的代码。

1 问题引入

在之前的一篇博客《自定义Storage Class配置》中,为了生成出全局变量段定义的#pragma指令,对storage class进行了一定程度的自定义。

同理,代码中的函数也是需要通过#pragma指令,定义到某个flash段中。例如下面的代码:

#pragma section ".fastram" ax
int foo (void);
#pragma section

同样的,想要生成这种代码不应该通过手动修改,而是配置Simulink生成。博主研究以后发现,生成代码的时候遵循一套模板文件,就是cgt文件。简单修改一下cgt文件就可以达到想要的效果。

2 cgt文件

cgt文件的全称是Code Generation Template,就是代码生成的模板,其中规定了代码生成的注释形式,以及代码的区块的划分。具体可以参考help文档。

2.1 Simulink中配置cgt文件

1)打开Simulink配置界面,点击左侧的Template分类栏,就会显示出配置的模板。
在这里插入图片描述
2)点击右侧的Browse,就可以选择cgt模板。Edit可以直接编辑模板。
在这里插入图片描述

2.2 cgt文件内容

1)进入ert_code_template.cgt模板,可以大概先浏览一下其中的结构。首先,双%开头的行是模板的注释,生成代码的时候这部分内容不会生成出来。这些注释可以帮助我们理解模板中每一块是做什么的,以便于我们自由定制。
在这里插入图片描述
2)往下看,就到了文件相关注释信息部分(Custom file banner section),是可选部分(optional)。这部分模板是<FileBanner style=“classic”>和</FileBanner>包夹起来的。
在这里插入图片描述
这里不再细说其中的语法,一般注释也不会去仔细研究,可以看一下下图中生成的代码,对照一下。
在这里插入图片描述
3)接下来是代码主体部分,包括Includes、Defines、Functions等片段,用%<xxx>表示。
在这里插入图片描述
这里的代码主体段,可以插入任意的代码。但是根据注释中所描述的要求,不能调整片段顺序,或者删除某个片段。例如最上面的是%<Includes>,就不能把%<Includes>移动到某个片段后面。

3 自定义cgt文件

有了第2章的概念以后,就可以通过自定义cgt文件来解决开篇中提到的问题。

1)打开默认的cgt文件存放路径,将ert_code_template.cgt文件拷贝一个副本,命名为ert_code_template_custom.cgt
在这里插入图片描述
2)用文本编辑器或者Matlab编辑器打开ert_code_template_custom.cgt,在%<Functions>片段的前后加上#pragma section指令,并保存。
在这里插入图片描述
3)打开Simulink,将Source file template配置成自定义的ert_code_template_custom.cgt,并保存配置。
在这里插入图片描述
4)Ctrl + B生成代码,可以看到源文件中的函数前后加上了#pragma section指令。
在这里插入图片描述

4 总结

cgt模板文件的内容和自定义方法还是比较简单的。本文没有详细讲解注释的定义,如果需要自定义一些工作单位信息在头部注释中,也可以研究一下。

>>返回个人博客总目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值