三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

避开网络陷阱:手把手教你离线部署Simulink-STM32硬件在环环境

避开网络陷阱:手把手教你离线部署Simulink-STM32硬件在环环境

1. 为什么需要离线部署STM32硬件支持包

第一次用Simulink做STM32开发时,我就被在线安装坑惨了。当时在公司内网环境,Matlab的"获取硬件支持包"按钮点了十几次都没反应,进度条永远卡在1%。后来才发现,很多国内开发者都会遇到类似问题:

  • 网络环境限制:企业内网/校园网常有防火墙阻挡MathWorks服务器连接
  • 版本兼容性问题:不同Matlab版本对硬件包有特定要求,在线安装容易出错
  • 安装过程不可控:下载中途断网会导致整个安装失败,需要重头再来

实测下来,离线安装有三大优势:

  1. 稳定性:提前下载好的安装包不受网络波动影响
  2. 可重复性:相同安装包可在多台设备部署
  3. 版本可控:能精确选择与当前Matlab匹配的硬件包版本

2. 准备工作:获取离线安装器

2.1 下载Support Software Downloader

首先需要这个官方工具,它相当于一个"离线安装包下载器"。注意版本必须与Matlab主程序一致(比如Matlab 2021b就用R2021b版本)。下载地址在MathWorks官网搜索"Support Software Downloader"就能找到。

我习惯在D盘新建MATLAB_Addons文件夹,专门存放这些安装包。下载完成后双击运行,会遇到几个关键步骤:

  1. 账号验证:需要输入MathWorks账号(即使使用社区版也要验证)
  2. 版本选择:这里要特别注意,如果选错版本会导致后续安装失败
  3. 搜索硬件包:输入"STM32"或"Nucleo"等关键词,勾选需要的支持包

2.2 选择合适的硬件支持包

STM32系列有多个硬件包,常见的有:

  • STM32 Nucleo:官方开发板通用支持
  • STM32 Discovery:带额外传感器的开发板
  • STM32 Hardware-in-the-Loop:硬件在环专用

以Nucleo F103RB为例,建议同时下载这两个包:

  • Simulink Coder Support Package for STMicroelectronics Nucleo Boards
  • Embedded Coder Support Package for STMicroelectronics Discovery Boards

3. 离线安装实战步骤

3.1 定位安装程序

安装包下载完成后,找到Matlab安装目录下的关键程序:

C:\Program Files\MATLAB\R2021b\bin\win64\install_supportsoftware.exe

这个路径可能会因安装位置不同而变化。有个快速定位技巧:在Matlab命令窗口输入:

fullfile(matlabroot,'bin','win64','install_supportsoftware.exe')

3.2 命令行安装

打开CMD窗口,切换到上述目录,执行如下命令(注意替换路径):

SupportSoftwareInstaller.exe -archives "D:\Downloads\STM32_Support_Packages"

这里有几个常见坑点:

  • 路径包含空格时要用引号包裹
  • 路径建议用英文,避免中文目录
  • 管理员权限运行CMD能避免权限问题

3.3 安装后验证

安装完成后,在Matlab命令行输入:

targethardware

如果看到STM32相关选项,说明安装成功。也可以打开Simulink库浏览器,检查是否存在"STM32 Nucleo"分类。

4. 创建硬件在环测试工程

4.1 基础模型搭建

我们来做个LED闪烁测试:

  1. 新建Simulink空白模型
  2. 从库浏览器添加:
    • Pulse Generator(周期1秒,占空比50%)
    • Digital Write(引脚设为PB8)
  3. 用连线工具连接两个模块

4.2 关键配置参数

点击"模型设置",需要特别注意:

  1. 硬件板选择:STM32 Nucleo F103RB
  2. External Mode:设置正确的COM端口
  3. 编译器选项:确保已安装ARM Cortex-M工具链

硬件连接要点:

  • 使用原装ST-LINK调试器
  • USART2(PA2/PA3)用于通信
  • 开发板LED默认接PB8引脚

4.3 下载与调试

点击"Monitor & Tune"按钮后:

  1. 观察Matlab命令窗口的编译输出
  2. 首次运行会耗时较长(需要编译代码)
  3. 成功后会看到开发板LED开始闪烁

如果遇到下载失败,检查:

  • 驱动是否安装(设备管理器查看ST-LINK)
  • 开发板供电是否正常
  • 防火墙是否阻止了Matlab通信

5. 常见问题解决方案

5.1 安装包校验失败

典型报错:"The archive is corrupt or incomplete"

  • 解决方法:重新下载安装包,建议用下载工具(如IDM)确保文件完整

5.2 硬件识别异常

现象:设备管理器看到未知设备

  • 安装ST-LINK驱动:https://www.st.com/en/development-tools/stsw-link009.html
  • 更新固件:使用ST-LINK Utility工具

5.3 编译错误

常见错误:"Toolchain not found"

  • 安装ARM Cortex-M编译器:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm
  • 在Matlab中配置路径:setenv('ARM_COMPILER_PATH','C:\Program Files (x86)\GNU Tools ARM Embedded\9 2019-q4-major')

6. 进阶技巧与优化建议

6.1 多版本共存管理

我习惯为每个项目创建独立的MATLAB版本环境:

  1. 使用matlab -regserver命令注册不同版本
  2. 通过bat脚本快速切换:
@echo off set MATLAB_VER=R2021b start "" "C:\Program Files\MATLAB\%MATLAB_VER%\bin\matlab.exe"

6.2 自定义硬件支持包

对于非官方开发板,可以修改硬件定义文件:

  1. 复制Nucleo_F103RB.m文件并重命名
  2. 修改引脚定义和时钟配置
  3. 保存到matlabroot\toolbox\target\supportpackages\stm32

6.3 性能优化技巧

提升HIL运行效率的配置:

  1. 在配置参数中启用"Optimizations"
  2. 将解算器类型改为"Fixed-step"
  3. 调整通信波特率(最高可设921600)
  4. 关闭调试信息输出

这些配置能让硬件在环的响应速度提升3-5倍,特别适合需要快速控制的应用场景。

← 返回列表