前言

前不久完成了ROS1导航小车的制作,有兴趣查看制作整体流程的可以看我上一篇博客。之后准备做一个ROS2的平衡车玩一玩,并将持续更新制作心得和流程。这一篇就先搭建环境,因为树莓派5镜像最小从24.04开始,所以使用Ubuntu24.04系统,之前使用Keil是在Windows系统,来回切换系统终归不方便,所以这次直接用Ubuntu24.04 + VSCode + STM32CubeMX 进行下位机的开发

(测试了ubuntu22.04和24.04都可以,感觉应该ubuntu其他版本不会有太多变化)

下载相关编译工具以及依赖

下载gcc

更新软件缓存并安装 GCC 核心包及依赖

sudo apt update && sudo apt install build-essential

检查 GCC 版本,确认安装成功

gcc --version
g++ --version

如果输出类似 gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 的信息,说明安装成功。

安装openocd

sudo apt install openocd
openocd --version

正常输出会包含 OpenOCD 的版本信息:

Open On-Chip Debugger 0.11.0

Licensed under GNU GPL v2

For bug reports, read

        http://openocd.org/doc/doxygen/bugs.html

安装stlink(如果是jlink就自行问AI)

sudo apt install stlink-tools
st-info --version

正常输出会显示类似 v1.7.0 的版本信息,说明工具安装完成。

关键配置:解决权限问题(必做)

默认情况下,普通用户访问 STLink 设备会提示 “权限不足”,需添加 udev 规则:

1. 创建 udev 规则文件

sudo nano /etc/udev/rules.d/99-stlink.rules

2. 粘贴以下内容并保存(Ctrl+O 回车,Ctrl+X 退出)

# STLink v1
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5750", MODE="0666", GROUP="plugdev"
# STLink v2
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="0666", GROUP="plugdev"
# STLink v2-1
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="0666", GROUP="plugdev"
# STLink v3
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374f", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3752", MODE="0666", GROUP="plugdev"

3. 重新加载 udev 规则并添加用户到 plugdev 组

sudo udevadm control --reload-rules
sudo udevadm trigger
sudo usermod -aG plugdev $USER

验证 STLink 设备连接

将 STLink 调试器插入电脑 USB 口,执行以下命令检测设备:

st-info --probe

如果输出包含 Found 1 stlink programmers 及设备信息(如芯片型号、ID 等),说明设备识别成功。

安装 ARM GDB

sudo apt install gdb-multiarch

验证安装

gdb-multiarch --version
# 查看安装路径(关键,用于 VS Code 配置)
which gdb-multiarch

安装 ARM 交叉编译工具链

sudo apt install gcc-arm-none-eabi

验证安装

arm-none-eabi-gcc --version
arm-none-eabi-g++ --version

下载STM32CubeMX

浏览器搜索STM32CubeMX,进入官网。选择Linux的STM32CubeMX

同意协议后,选择“作为访客下载”,填写你的邮箱验证后,它会发送一个链接到你的邮箱,点击链接即可下载。

如果是旧版本写好的工程移植到此,就选continue

将编译规则改为Makefile,点击生成工程。

VScode配置

配置Cortex-Debug

搜索插件Cortex-Debug进行下载

下载完后打开插件右键进行设置

注意换成你们自己的路径,如果是按照我描述的指令进行安装,通常路径是一致的:

    "cortex-debug.gdbPath": "/usr/bin/gdb-multiarch",       // ARM GDB 路径
    "cortex-debug.openocdPath.linux": "/usr/bin/openocd",   // OpenOCD 路径
    "makefile.configureOnOpen": true,                       // 打开文件时自动配置 Makefile
    "cortex-debug.armToolchainPath": "/usr/bin/"            // ARM 工具链根路径

配置launch.json

第一次点击会自动生成launch.json

文件需修改,直接复制粘贴过去即可:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "showDevDebugOutput": "parsed",             // 显示调试输出
            "cwd": "${workspaceRoot}",                  // 调试工作目录为项目根目录
            "executable": "./build/slave_computer.elf", // 指定要调试的 ELF 文件路径(没有将自动生成)
            "name": "Debug STM32",                      // 调试配置名称(自定义)
            "request": "launch",                        // 调试模式为 “启动调试”
            "type": "cortex-debug",                     // 指定调试类型为 Cortex-M 架构
            "servertype": "openocd",                    // 指定调试服务器为 OpenOCD
            "device": "stm32f427",                      // 指定目标芯片型号(修改成自己的)
            "gdbPath": "/usr/bin/gdb-multiarch",        // 指定 GDB 路径
            "configFiles": [                            // OpenOCD 配置文件
                "interface/stlink-v2.cfg",
                "target/stm32f4x.cfg"
            ]
        }
    ]
}

增添Makefile

打开Makefile文件增加一些内容:

进行编译

打开终端输入make进行编译:

插上STLink,连接开发板,点击进行调试即可运行代码:

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐