ubuntu 下 CubeMX + cmake + gcc-arm-none-eabi + ozone 开发环境搭建

null-qwerty

本文使用的开发板为 RoboMaster 开发板 C 型,其芯片为 STM32F407IG,开发环境为 ubuntu 24.04。

首先下载 J-Link 驱动的依赖 libreadline 库:

1
sudo apt-get install libreadline-dev

SEGGER 官网下载 J-Link 驱动,选择 Linux 版本的 deb 安装包

J-Link 驱动下载

会有一些跳转,根据引导走就行了。下载完成后,使用 dpkg 安装:

1
sudo dpkg -i JLink_Linux_Vxxx_x86_64.deb

驱动程序将被安装到 /opt/SEGGER/JLink 目录下,同时会在 /etc/udev/rules.d 目录下生成一个 99-jlink.rules 文件,用于配置 J-Link 的权限。将 JLink 目录添加到环境变量中:

1
2
echo 'export PATH=$PATH:/opt/SEGGER/JLink' >> ~/.bashrc
source ~/.bashrc

如果使用的是 zsh,将 ~/.bashrc 替换为 ~/.zshrc 即可。

使用如下命令验证 J-Link 驱动是否安装成功:

1
jlink --version

如果安装成功,会显示 J-Link 的版本信息。

J-Link 接 C 板,插入 J-Link

jlinkconnect

然后执行以下命令:

1
JLinkExe

jlinkexe

提示输入 connect,并输入芯片型号,这里输入 STM32F407IG,然后选择 SWD,speed 可以使用默认的 4000kHz,如下图所示则连接成功。

jlinkexe2

CubeMX 安装

ST 官网下载 CubeMX,选择 Linux 版本的安装包,下载完成后解压。

CubeMX 下载

笔者在使用 6.12.1 版本时,JxBrowser Engine 在刚打开 CubeMX 的时候直接报 crash 导致窗口无法正常打开,切换至 6.11.1 版本后问题解决。

解压后进入文件夹,执行 ./SetupSTM32CubeMX-x.xx.x 安装 CubeMX,根据提示安装即可。

打开 CubeMX,登录账号,登录后点击 INSTALL/REMOVE 安装 STM32F4 芯片包。

CubeMX 芯片包下载

新建工程

先安装 gcc-arm-none-eabi 工具链:

1
sudo apt install gcc-arm-none-eabi

打开 CubeMX,新建工程,选择芯片型号,这里选择 STM32F407IGHx,点击 Start Project,打开 Project Manager,选择 Toolchain/IDECMake,点击 Generate Code

CubeMX 工程配置

在项目根目录打开 vscode,Core/Src/main.c 就是主函数所在的文件:

vscode 打开CubeMX 工程

发现静态分析崩了,原因是使用了 clangd 进行了静态分析,在没有编译过的情况下,clangd 无法找到头文件,所以会报错。这里 cmake 一下就好了。

1
2
3
mkdir build
cd build
cmake ..

CubeMX 工程静态分析

clangd 的配置可以看这里

在根目录创建 .JLinkScripts 文件,内容如下:

1
2
3
4
5
speed 4000
device STM32F407IG
r
loadfile ./JLink-test.elf
q

其中 JLink-test.elf 为编译生成的 elf 文件,路径相对于 Makefile 文件。

CMakelists.txt 中添加如下内容:

1
2
3
4
add_custom_command(OUTPUT flash
COMMAND JLinkExe -if SWD -CommanderScript ${CMAKE_SOURCE_DIR}/.JLinkScripts
)
add_custom_target(Flash DEPENDS flash)

这样在执行 make Flash 的时候就会自动烧录。

1
2
3
4
cd build
cmake ..
make -j
make Flash

make Flash

ozone 安装及使用

SEGGER 官网下载 ozone,选择 Linux 版本的安装包,下载完成后使用 dpkg 安装。

ozone 下载

安装完成后,使用如下命令启动 ozone:

1
ozone

这里使用一个蜂鸣器工程为例。

插上 J-Link,连接 C 板,打开 ozone,选择 STM32F407IG, svd 文件在如图所示的路径下:

ozone 配置

Target Interface 选择 SWD,然后选择底下识别到的 J-Link:
ozone 配置

选择需要调试的 elf 文件:
ozone 配置

第四页可以保持默认,然后点击 Finish,就可以开始调试了:
ozone 配置
ozone 调试页面

点击左上角的绿色图标开始调试,再点击右边的继续按钮,程序就会开始运行,直到遇到断点。

watch data 中可以添加需要监视的变量,如下图所示,并绘制出变量的变化曲线。

ozone 监视变量

其他功能可以自行探索。

效果

  • 标题: ubuntu 下 CubeMX + cmake + gcc-arm-none-eabi + ozone 开发环境搭建
  • 作者: null-qwerty
  • 创建于 : 2024-10-03 20:31:38
  • 更新于 : 2024-10-08 12:13:18
  • 链接: https://www.null-qwerty.top/2024/10/03/ubuntu-下-CubeMX-cmake-gcc-arm-none-eabi-ozone-开发环境搭建/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
ubuntu 下 CubeMX + cmake + gcc-arm-none-eabi + ozone 开发环境搭建