Ubuntu下搭建zephyrOS开发环境

Ubuntu下搭建zephyrOS开发环境


参考资料: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闪烁。

相关推荐
切糕师学AI5 天前
NuttX RTOS是什么?
嵌入式·rtos
aspirestro三水哥6 天前
6.4非POSIXskin进程间通信
rtos·xenomai
aspirestro三水哥7 天前
6.2POSIX线程间通信
rtos·xenomai
鸿蒙小白龙8 天前
OpenHarmony轻量系统(Hi3861)RTOS API开发详解
openharmony·rtos·liteos·轻量系统
无聊到发博客的菜鸟17 天前
STM32 手册寄存器属性
stm32·单片机·嵌入式·rtos·寄存器
aspirestro三水哥17 天前
5.3RTDM用户层驱动
rtos·xenomai
无聊到发博客的菜鸟17 天前
STM32 RTC时钟不准的问题
stm32·嵌入式·rtc·rtos
TedLeeX17 天前
【Nordic随笔】离线安装NCS3.2.1教程
经验分享·nordic·zephyr·ncs·nrf54
智驾18 天前
【瑞萨RA x Zephyr评测】二、ADC模块测试
adc·瑞萨·zephyr·fpb-ra6e2
aspirestro三水哥20 天前
4.7POSIX进程与线程实例
rtos·xenomai