当前位置: 首页 > ds >正文

openvela之STM32开发板部署

一、引言

在嵌入式开发中,开发环境的搭建是项目启动的基础。本文以 STM32F746G-DISCO 开发板为例,基于 Ubuntu 系统,详细梳理从编译环境配置到调试工具准备的完整流程,为后续程序开发与烧录筑牢根基。

二、搭建开发环境

1. 配置编译环境

编译 openvela 需配置对应开发环境,可参考openvela 快速入门配置开发环境,完成基础依赖、工具链等配置。

2. 安装编译工具

STM32 开发需特定交叉编译工具,执行以下命令安装:

sudo apt install gcc-arm-none-eabi binutils-arm-none-eabi

说明:gcc-arm-none-eabi 是针对 ARM 架构的交叉编译器,binutils-arm-none-eabi 是配套的二进制工具集,二者共同为程序编译提供基础支撑。

3. 安装 Java 运行环境

STM32CubeProgrammer 依赖 Java 环境运行,推荐安装 OpenJDK 11(兼容性最佳):

sudo apt install openjdk-11-jre

验证:安装完成后,执行 java -version,若显示 openjdk version "11.0.x" 相关信息,说明 Java 环境配置成功。

三、准备程序烧录工具:STM32CubeProgrammer 安装

STM32CubeProgrammer 是 ST 官方推出的程序烧录与调试工具,支持通过 ST-Link 连接开发板,以下是完整安装流程:

1. 下载安装包

从 STM32CubeProgrammer 官方下载页 选择 Linux 64-bit 版本(如 stm32cubeprg-lin-v2-20-0.zip),默认保存到 ~/Downloads 目录。
在这里插入图片描述

2. 解压

mkdir ~/stm32cubeprog	#为避免文件混乱,建议为 STM32CubeProgrammer 单独创建工作目录,方便后续管理
cd ~/Downloads  # 进入下载目录
mv stm32cubeprg-lin-v2-20-0.zip ~/stm32cubeprog/ 
cd ~/stm32cubeprog/  # 进入专属目录
unzip stm32cubeprg-lin-v2-20-0.zip  # 解压文件

解压后会生成同名文件夹(如 stm32cubeprg-lin-v2-20-0),内含安装脚本。

在这里插入图片描述

3. 执行安装脚本

cd stm32cubeprg-lin-v2-20-0  # 进入解压后的文件夹
chmod +x SetupSTM32CubeProgrammer-2.20.0.linux  # 添加执行权限
sudo ./SetupSTM32CubeProgrammer-2.20.0.linux  # 运行安装脚本

按照脚本提示一路回车(采用默认配置即可),程序会自动安装到
/usr/local/STMicroelectronics/STM32Cube/STM32CubeProgrammer/ 目录。

4. 配置环境变量(实现全局调用)

# 打开用户环境变量配置文件
nano ~/.bashrc# 添加程序路径:在文件末尾粘贴以下内容(路径需与实际安装目录一致):
export PATH=$PATH:/usr/local/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin# 按 Ctrl+X 退出编辑,输入 Y 确认保存,回车完成操作;
# 执行以下命令使配置立即生效:
source ~/.bashrc

5. 验证安装与启动

直接在终端输入以下命令启动工具:

STM32CubeProgrammer

在这里插入图片描述

若弹出软件界面,说明安装成功。若提示 “权限不足”,执行以下命令赋予可执行权限:

sudo chmod +x /usr/local/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin/STM32CubeProgrammer

四、安装 USB 设备连接依赖库

为保障 STM32CubeProgrammer 与开发板的 USB 通信,需安装 libusb 库:

sudo apt-get install libusb-1.0.0-dev

说明:该库为 USB 设备底层通信提供必要支持,避免后续连接开发板时出现 “设备无法识别” 的问题。

五、配置 ST-Link 驱动(stsw-link 软件包处理)

ST-Link 是开发板的调试接口,需安装驱动规则确保系统有权限访问设备

1. 下载安装包

前往 ST 官网下载 stsw-link 软件包,假设下载文件为 stsw-link007-v3-16-9.zip ,执行以下命令处理:

# 进入下载目录(以 ~/Downloads 为例,可按需修改)
cd ~/Downloads  
# 创建专门文件夹存放
mkdir stlink  
# 移动压缩包到新文件夹
mv stsw-link007-v3-16-9.zip stlink/  
# 进入目标文件夹
cd stlink  
# 解压软件包
unzip stsw-link007-v3-16-9.zip  

2. 安装驱动规则

进入解压后的驱动规则目录(以实际路径为准,如 ~/stlink/stsw-link007/AllPlatforms/StlinkRulesFilesForLinux ),执行安装脚本赋予 ST-Link 设备访问权限:

# 进入规则文件目录
cd ~/stlink/stsw-link007/AllPlatforms/StlinkRulesFilesForLinux  

在这里插入图片描述

根据压缩包中的 readme.txt 文件指引完成安装,readme.text内容如下:

在这里插入图片描述

# readme.text提示具体安装命令如下:
sudo sh st-stlink-udev-rules-xxxx-linux-noarch.sh
# 通过StlinkRulesFilesForLinux 目录查看,执行安装脚本,按提示输入 I ACCEPT 确认许可
sudo sh st-stlink-udev-rules-1.0.3-2-linux-noarch.sh  

在这里插入图片描述

在这里插入图片描述

# 重新加载 udev 规则使配置生效
sudo udevadm control --reload-rules  
sudo udevadm trigger 

在这里插入图片描述

此步骤解决 Ubuntu 系统下 ST-Link 设备访问权限问题,确保开发板能被识别。

六、项目编译与验证

完成开发环境与工具链配置后,可通过官方示例项目验证环境有效性,以下以 STM32H746G-DISCO 基础工程为例说明编译流程:

1. 下载 openvela 源码

参考下载 openvela 源代码完成代码下载(详情可参考openvela之快速入门)。

2、编译 openvela 适配 STM32H746G-DISCO 的镜像

在完成代码仓库克隆和下载后,按以下流程为 STM32H746G-DISCO 开发板生成所需二进制文件:

cd ~/openvela_project/nuttx  # 进入内核目录
# 加载开发板配置(启用LVGL Demo)
./tools/configure.sh stm32f746g-disco:lvgl
# 如需自定义配置(如启用双缓冲),执行menuconfig
make menuconfig
# 开始编译
make

在这里插入图片描述

编译完成后,生成的文件位于 nuttx 目录下,包括:

  • nuttx.bin:二进制镜像
  • nuttx.hex:Intel HEX 格式(推荐用于 STM32CubeProgrammer 烧录)

在这里插入图片描述

3. 运行程序

  1. 烧录前准备
  • 确保开发板通过 ST-Link 与电脑连接(参考文档 12 中 “连接开发板”)
  • 启动 STM32CubeProgrammer,点击 “ST-LINK Connect” 建立连接,确认显示开发板序列号和目标信息(如 “STM32F746G-DISCO”)
  1. 执行烧录
  • 在 STM32CubeProgrammer 左侧选择 “Erasing & Programming”
  • 点击 “Browse” 选择编译生成的nuttx.hex文件
  • 勾选 “Skip flash erase before programming”(快速更新,首次烧录建议先执行 “Full chip erase”)
  • 点击 “Start Programming”,等待日志显示 “File download complete”

在这里插入图片描述
3. 运行 LVGL 示例程序
通过串口工具(如 Minicom)连接开发板的 UART 接口,验证程序运行(在此之前请关闭STM32CubeProgrammer工具避免资源占用):

# 启动Minicom,波特率115200,设备为/dev/ttyACM0(根据实际情况调整)
sudo minicom -D /dev/ttyACM0 -b 115200

以minicom串口调试(MobaXterm/)在串口终端中输入以下命令启动图形演示:

lvgldemo # 后台运行LVGL示例

在这里插入图片描述

七、常见问题与解决方案(补充)

  1. 烧录时提示 “Error: failed to download Sector
  • 解决方案:执行 “Full chip erase” 擦除芯片后重试,确保烧录文件地址(默认 0x08000000)与芯片 Flash 起始地址匹配。

在这里插入图片描述

  1. 串口无法输入命令
  • 解决方案:通过minicom -s进入配置,关闭硬件流控(Hardware Flow Control: No)和软件流控(Software Flow Control: No)。

在这里插入图片描述
在这里插入图片描述

总结

通过以上步骤,可完成 openvela 在 STM32F746G 开发板的环境搭建、编译、烧录及示例运行,后续可基于此扩展物联网应用开发,如集成传感器数据采集、网络通信等功能。

http://www.xdnf.cn/news/17554.html

相关文章:

  • BMS三大领域:电池、楼宇与业务管理系统解析
  • VisionMoE本地部署的创新设计:从架构演进到高效实现
  • 102-基于Spark的招聘数据预测分析推荐系统
  • Android中RecyclerView基本使用
  • SpringBoot配置生效优先级
  • CPU缓存(CPU Cache)和TLB(Translation Lookaside Buffer)缓存现代计算机体系结构中用于提高性能的关键技术
  • Irix HDR Pro:专业级 HDR 图像处理软件
  • ubuntu 端口占用 但是找不到进程 与docker 容器镜像相关
  • rem:CSS中的相对长度单位
  • B.10.01.3-性能优化实战:从JVM到数据库的全链路优化
  • 莫比乌斯反演学习笔记
  • .htaccess 文件上传漏洞绕过总结
  • Delphi:TList/TObjectList 设计中的 Notify 设计范式
  • 供应链需求预测项目如何设定合理的KPI、准确率指标(十四)
  • Spring Boot 集成 Quartz 实现定时任务(Cron 表达式示例)
  • Spark02 - SparkContext介绍
  • 【多模态目标检测数据集】【VEDAI】航空影像中的车辆检测:小目标检测基准
  • 2025年渗透测试面试题总结-10(题目+回答)
  • C语言:构造类型
  • C++学习之STL学习:map/set
  • 【面试题】cookie和session 的区别
  • 使用GTX ip core + SDI IP core实现SDI设计
  • BeanDefinition 与 Bean 生命周期(面试高频考点)
  • 《Learning To Count Everything》论文阅读
  • 鸿蒙开发中的Tabs组件详解
  • 使用 Visual Studio 2022 编译 PortAudio 项目
  • docker基础前置
  • Microsoft Office Visio(流程图)学习笔记
  • 【华为仓颉编程语言】标识符
  • 栈和队列应用实操