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闪烁。

相关推荐
mftang1 天前
Nordic nRF52805 Zephyr OS下低功耗模式应用详细介绍-D
watchdog·低功耗·zephyr
W.W.H.2 天前
优先级反转问题(含解决案例)
互斥锁·rtos·互斥量·实时系统·优先级反转·优先级继承
硬汉嵌入式3 天前
Zephyr 十周年报告:开源嵌入式创新的十年历程
zephyr
fitpolo5 天前
串行通讯(I2C)
zephyr
.普通人5 天前
freertos源码解析(里面的源码来源于另一个博主,我这里只是讲一下我自己的理解)
操作系统·rtos
dqsh068 天前
振兴中华之threadX RTOS移植到stm32用stm32cubeMX 保姆级教程
stm32·单片机·嵌入式硬件·rtos·threadx
Truffle7电子11 天前
STM32理论 —— FreeRTOS:中断管理、列表
stm32·单片机·嵌入式硬件·rtos
Truffle7电子12 天前
STM32理论 —— FreeRTOS:任务
stm32·嵌入式·rtos
大熊背16 天前
ISP离线模式应用(二)-如何利用 ISP 离线模式 加速 3DNR 收敛
linux·算法·rtos·isp pipeline·3dnr
aspirestro三水哥17 天前
9.3工欲善其事必先利其器
rtos·xenomai