Ubuntu下搭建zephyrOS开发环境
- 一、ubuntu依赖安装
- [二、获取 Zephyr 并安装 Python 依赖项](#二、获取 Zephyr 并安装 Python 依赖项)
- [三、安装 Zephyr SDK](#三、安装 Zephyr SDK)
- 四、编译及烧录
参考资料:Zephyr项目文档:https://docs.zephyrproject.org/latest/develop/getting_started/index.html
一、ubuntu依赖安装
bash
sudo apt update
sudo apt upgrade
sudo apt install --no-install-recommends git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget python3-dev python3-venv python3-tk \
xz-utils file make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1
二、获取 Zephyr 并安装 Python 依赖项
创建Zephyr虚拟环境:
bash
python3 -m venv ~/zephyrproject/.venv
激活虚拟环境:
bash
source ~/zephyrproject/.venv/bin/activate
激活后,shell 终端名称将带有前缀(.venv),可以随时使用deactivate命令停用虚拟环境 。
安装west工具:
bash
pip install west
获取Zephyr源码:
bash
west init ~/zephyrproject
cd ~/zephyrproject
west update
注: 执行 west init ~/zephyrproject 命令时,会出现以下报错:ModuleNotFoundError: No module named 'imp'

原因:python 3.12及以上版本中,移除了 imp 库,改用了 importlib 库
解决办法:
1.手动安装python 3.11或以下版本
2.修改源码
将报错提示最下方core.py源码中的 imp 库函数进行修改:


导出Zephyr CMake 包,这样 CMake 就可以自动加载构建 Zephyr 应用程序所需的样板代码:
bash
west zephyr-export
安装python的west packages依赖项:
bash
west packages pip --install
三、安装 Zephyr SDK
Zephyr软件开发工具包 (SDK) 包含 Zephyr 支持的每种架构的工具链,其中包括编译器、汇编器、链接器以及构建 Zephyr 应用程序所需的其他程序。
对于 Linux 系统,还包含额外的主机工具,例如用于模拟、烧录和调试 Zephyr 应用程序的自定义 QEMU 和 OpenOCD 构建。
bash
cd ~/zephyrproject/zephyr
west sdk install
这里有两个问题需要注意:
1.可以通过west sdk install --help命令,查看该命令具体的参数设置,选择合适的路径来安装SDK。
2.这个west sdk install直接使用会有以下报错:
bash
AttributeError:
"safe_load()" has been removed, use
yaml = YAML(typ='safe', pure=True)
yaml.load(...)
instead of file "~/zephyrproject/.venv/lib/python3.12/site-packages/pykwalify/core.py", line 91
data = yaml.safe_load(stream)

可以看到又是之前那个core.py文件里的问题(忍不住吐槽一下,核心功能代码这么多坑),主要原因是yaml的依赖包太新了,旧版的api已移除,方案还是降级或改代码两种,这里还是改代码吧(python不熟,不知道是哪个包)。
按照提示修改yaml的函数格式:

然后把本文件中用到的yaml.safe_load换成新的格式,就可以正确执行命令了:



四、编译及烧录
这里笔者以合宙的ESP32C3为例,在luatos目录下找到对应的开发板名称,使用以下命令进行编译:
bash
cd ~/zephyrproject/zephyr
# west build -p always -b <your-board-name> samples/basic/blinky
west build -p always -b esp32c3_luatos_core samples/basic/blinky


烧录:
bash
west flash
注:ubuntu下普通用户没有串口设备读写权限,可以临时使用chmod命令添加(测试修改dialout不管用)

烧录完成后重启设备即可看到LED闪烁。