前言

最近想要使用 Niri 窗口管理器 的 Arch Linux 进行 STM32 的嵌入式开发,于是探索了一下环境搭建的路线。

为了使用 STM32CubeMX 方便的图形化配置与代码生成功能,同时了解到 STM32CubeMX 是支持 Linux 系统的。

软件包搜索

首先使用 pacman 进行查找,发现没有相关软件包:

pacman -Ss stm32

而使用 yay 查找 AUR 后,发现当中有 stm32cubemxstm32cubeide 的软件包:

yay -Ss stm32

STM32CubeMX 安装与问题排查

安装

若想仅仅安装 STM32CubeMX 这个工具,然后搭配开源编译器等使用,可以直接安装:

yay -S stm32cubemx

图形渲染问题

但是安装了 STM32CubeMX 后发现其在 Niri 的环境下使用存在异常:

  • 启动软件后勉强能够显示初始界面
  • 当需要点击其中的某些按钮(比如选择芯片)时,弹出的浮窗是空白显示的
  • 尝试点击空白处,发现能够有一定的交互效果

这说明是 图形渲染 的问题。

解决方案

一番探索后发现,这是由于 Java D3D 与窗口重定向 造成的问题。

可以通过设置如下环境变量来解决:

export _JAVA_AWT_WM_NONREPARENTING=1
export J2D_D3D=false

建议将上述环境变量添加到 ~/.bashrc~/.zshrc 中永久生效:

echo 'export _JAVA_AWT_WM_NONREPARENTING=1' >> ~/.bashrc
echo 'export J2D_D3D=false' >> ~/.bashrc
source ~/.bashrc

STM32CubeIDE 安装

倘若不想自己搭配编译工具链与调试工具,可以直接使用 STM32CubeIDE(目前 Windows 上普遍使用的 Keil 不支持 Linux)。

安装问题

但是使用 yay 直接安装 stm32cubeide 会因为几个报错直接退出。

其实这是正常情况。

正确安装步骤

在安装 STM32CubeIDE 时,我们应该根据报错信息,在 ST 官网 将报错信息中提到的以下文件下载:

  1. stm32cubeide 压缩包
  2. st-link-server 压缩包

将下载的文件放到用户目录下的 .cache/yay/ 对应的文件夹下:

# 假设下载到了 ~/Downloads 目录
cp ~/Downloads/stm32cubeide_*.tar.gz ~/.cache/yay/stm32cubeide/
cp ~/Downloads/stlink-server_*.tar.gz ~/.cache/yay/stlink/

此时再次使用 yay 进行安装就能够成功完成安装了:

yay -S stm32cubeide

验证安装

启动 STM32CubeIDE 后便能够正常使用了:

stm32cubeide

总结

本文仅为想要使用 Arch Linux + Niri 进行 STM32 开发,但是发现配置环境时出现与我相同问题而不知所措的小伙伴作出简单的经验分享。

关键要点

问题解决方案
STM32CubeMX 浮窗空白设置 _JAVA_AWT_WM_NONREPARENTING=1J2D_D3D=false
STM32CubeIDE 安装失败手动下载官方压缩包放到 ~/.cache/yay/ 对应目录

希望这篇分享能帮助到同样在 Linux 上进行嵌入式开发的朋友们!


参考资料