本节我们来学习 Code Generation 相关内容,可以说 Code Generation 配置是自动代码生成最重要的配置,虽然很多情况下很多配置不需要改动(默认的配置就满足需求),但是明白它们是如何影响代码生成的对我们项目开发还是相当必要的,也便于我们在需要更改代码配置的时候做到心有数。接下来我将分几节对该部分内容进行讲解,主要是写一篇长文章需要耗费的时间太长了,博主还要上班实在没时间一次写那么多。
目录
一. 打开 Code Generation
建立如图所示的仿真模型,该模型在之前文章中出现过,不知道它是什么意思的去查找以前的内容,链接如下:
Simulink自动代码生成:原子子系统(Atomic Subsystem)
单机 Model Settings 图标打开 Configuration Parameters 对话框,之后就可以看到 Code Generation 选项了。在 Code Generation 选项下有很多子选项,之后我们将对这些子选项进行一一讲解,并演示它们对代码生成的影响,在此大家先不要着急。
二. 对 Code Generation 进行配置
2.1 对 Target selection 进行配置
选中 Code Generation 会看到对话框右侧有几个选项,下面对一些常用的选项进行讲解,若你们感兴趣也可以自己进行更深入的探究。
首先是 Target selection,该选项可以对系统目标文件,代码生成的目标语言进行配置,我们所生成的软件针对的是嵌入式系统,因此在 Browse 中选择 ert.tlc(Embedded Coder),代表生成的目标文件为嵌入式软件。Language 选项选择C而不是选择C++,通常情况嵌入式开发都是把C语言作为首选语言。
2.2 对 Build process 进行配置
(1)编译过程(Build process):在这里我们选择只生成代码。若不勾选此选项会多生成一些文件,对代码本身没有影响,因此为了减少生成不必要的文件我们对其进行勾选。
(2)对 Package code and artifacts 进行设置,在不勾选 Package code and artifacts 时生成的文件如下:
勾选 Package code and artifacts 并将压缩文件的名字改为 MyCalculation 后生成的文件如下:
对比之下可以看出文件路径中多了一个名为 MyCalculation 的压缩包,将压缩包解压后,可以看到里面包含了所有源文件和头文件。
Toolchain settings 包括以下配置参数:
Toolchain - 指定一组第三方软件工具,用来编译生成的代码。工具链可以包含编译器、链接器、存档器和其他预编译或编译后工具,用于在目标硬件上下载并运行可执行文件。
Toolchain 的默认值为 “Automatically locate an installed toolchain”。Toolchain 参数显示 “Automatically locate an installed toolchain” 下方的工具链的名称。
点击 Validate Toolchain 按钮,检查工具链是否存在,并验证代码生成器是否具有使用该工具链所需的信息。生成的 Validation Report 将指出选定的工具链是通过验证还是验证失败,并标识要解决的问题。
打开帮助文档可以看到 Toolchain 相关解释。
笔者这个没有出现 Validate 按钮,正常情况下应该是有的,如图所示,还请高人指点我的为什么没有。
Build configuration - 指定优化设置。默认情况下,Build Configuration 设置为 “Faster Builds”。您还可以选择 “Faster Runs”、“Debug” 和 “Specify”。如果选择 “Specify”,您可以自定义工具链的选项。当您点击 Apply 时,自定义工具链设置将应用于当前模型。
2.3 对 Code generation objectives 进行配置
首先对 Prioritized objectives 进行设置,它表示代码生成目标的优先级,也就是你生成的代码以什么为首要目标,比如代码执行最快,或是占用内存最少,或是要优先满足什么标准等。在此我选择大多数汽车行业都要遵循的标准MISRA C:2012 guidelines。
相关的解释在帮助文档中可以看到。
是否检查模型设置,点看下拉菜单可以看到三个选项:(1)在生成代码前不检测模型,(2)在生成代码前检测模型并发出警告,(3)在生成代码前检测模型并发出警告和停止代码生成。同时也可以点击 Check Model 手动进行代码检测。
检测完成后,可以得到模型检测报告,指出模型中不合理的地方,方便我们对其进行修改。
三. 总结
本节内容比较简单,接下来我们将用几节的时间对 Code Generation 其它子选项进行讲解。耐心的看完所有配置,相信大家会对代码生成有一个初步的认识,博主本人也只是一位普通的学习者,希望大家能互相探讨,互相进步。