首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 23-09-22 00:45
  • 3675
  • 10680
blog.csdn.net

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

这里写目录标题

  • 1 问题引入
  • 2 cgt文件
    • 2.1 Simulink中配置cgt文件
    • 2.2 cgt文件内容
  • 3 自定义cgt文件
  • 4 总结

1 问题引入

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

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

#pragma section ".fastram" ax
int foo (void);
#pragma section
  • 1
  • 2
  • 3

同样的,想要生成这种代码不应该通过手动修改,而是配置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模板文件的内容和自定义方法还是比较简单的。本文没有详细讲解注释的定义,如果需要自定义一些工作单位信息在头部注释中,也可以研究一下。

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/109555660"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top