第一章 开发环境搭建与模型基础
做嵌入式代码生成,第一步就是把家伙事儿备齐。我见过太多人一上来就急着写模型,结果环境没配好,折腾半天连个LED都点不亮。今天咱们就把MATLAB/Simulink的开发环境从头捋一遍。
1.1 MATLAB/Simulink安装与配置
安装这事看着简单,其实坑不少。我个人习惯是直接装最新版,但如果你要对接老项目,最好查一下兼容性列表。
安装步骤其实就三步:
- 下载安装包(建议用官网,别去第三方下,容易中招)
- 选择许可证(个人用学生版或家庭版,企业用网络版)
- 勾选组件(Simulink、Embedded Coder、Stateflow是必选)
嗯,这里要特别说一下组件选择。很多人图省事全选,结果硬盘爆了。你想想看,做嵌入式开发,核心组件就这几个:
| 组件名称 | 用途 | 是否必选 |
|---|---|---|
| MATLAB | 基础计算与脚本 | 必选 |
| Simulink | 图形化建模 | 必选 |
| Embedded Coder | 嵌入式代码生成 | 必选 |
| Stateflow | 状态机建模 | 推荐 |
| Fixed-Point Designer | 定点数优化 | 按需 |
1.2 嵌入式Coder许可证
说到许可证,这可是个容易踩坑的地方。Embedded Coder不是MATLAB自带的,需要单独购买许可证。我刚开始做项目时,以为装了MATLAB就能生成代码,结果一编译就报错,提示缺少许可证。
license('test','Embedded_Coder'),如果返回1,说明许可证有效。返回0的话,赶紧去配许可证吧。
许可证配置有两种方式:
- 网络许可证:公司常用,需要配置license server地址
- 单机许可证:个人用,把.lic文件放到MATLAB安装目录下的licenses文件夹
配置完成后,重启MATLAB。在命令行输入 ver,看看Embedded Coder有没有列出来。有就对了,没有就检查一下环境变量。
1.3 模型设置与求解器配置
模型设置这块,说白了就是告诉Simulink:你要生成什么样的代码。我见过有人直接用默认设置,结果生成的代码又大又慢,根本没法用。
打开模型设置(Ctrl+E),重点看这几个地方:
- 求解器(Solver):嵌入式代码一般用固定步长,选discrete(离散)求解器。连续求解器会生成大量浮点运算,在MCU上跑不动。
- 硬件实现(Hardware Implementation):这里要选对芯片型号。比如STM32F4系列,选ARM Cortex-M4。选错了,生成的代码可能不兼容。
- 代码生成(Code Generation):目标选ert.tlc(嵌入式实时目标),别选grt.tlc(通用实时目标),后者生成的代码太臃肿。
- Solver: discrete (fixed-step)
- Fixed-step size: 0.001 (根据你的采样周期来)
- Hardware Implementation: 选对应MCU
- System target file: ert.tlc
- Language: C
为什么会这样配置?你想想看,嵌入式系统是实时系统,采样周期固定。用变步长求解器,CPU负载忽高忽低,很容易出问题。我在项目中遇到过,用变步长跑PID控制,结果采样时间抖动,控制效果一塌糊涂。
1.4 基础建模练习
光说不练假把式。咱们来搭一个简单的模型——LED闪烁控制。这个例子虽然简单,但涵盖了代码生成的核心流程。
模型结构:
- 输入:1kHz时钟信号
- 处理:计数器分频,每500ms翻转一次
- 输出:GPIO控制信号
建模步骤:
- 拖一个Pulse Generator,频率设1000Hz,占空比50%
- 加一个Counter模块,计数到500清零
- 加一个Relational Operator,判断计数是否等于500
- 加一个Data Type Conversion,输出转成boolean
- 加一个Outport,命名LED
// 生成的代码片段(简化版)
void LED_step(void)
{
/* 计数器逻辑 */
if (counter >= 499) {
counter = 0;
LED = !LED; // 翻转LED状态
} else {
counter++;
}
}
嗯,这里要注意。生成的代码里,变量命名和数据类型都是可以配置的。我个人习惯在模型里就把信号名起好,比如counter、LED,这样生成的代码可读性高,调试起来也方便。
模型建好后,按Ctrl+B生成代码。看看生成的.c和.h文件,是不是跟你手写的代码结构很像?这就是Embedded Coder的厉害之处——它生成的代码是可读的、可维护的,不是那种天书一样的机器码。
最后,用一张图来总结本章的知识体系:
这张图把本章的四个核心模块串起来了。从安装配置开始,到许可证验证,再到模型设置,最后用实例验证整个流程。每一步都是环环相扣的,缺一个都不行。
好了,环境搭好了,模型也跑通了。接下来你就可以放心地往里面加控制算法、通信协议了。记住,基础打牢了,后面才能飞得起来。
公众号:蓝海资料掘金营,微信deep3321