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

相关推荐
aspirestro三水哥1 天前
8.5CPU隔离与亲和性
rtos·xenomai
帅得不敢出门2 天前
MacOS安装VSCode在QEMU上模拟跑FreeRtos
ide·vscode·macos·freertos·rtos
liu_endong3 天前
RTOS基于7840——任务创建、启动、切换、删除
mcu·rtos·杰发科技·autochips·车规芯片
香水5只用六神6 天前
【RTOS快速入门】05_动态_静态创建任务(2)
c语言·stm32·单片机·嵌入式硬件·freertos·rtos·嵌入式软件
香水5只用六神6 天前
【RTOS快速入门】06_任务状态理论讲解(1)
c语言·stm32·单片机·嵌入式硬件·freertos·rtos·嵌入式软件
香水5只用六神7 天前
【RTOS快速入门】07_同步互斥与通信概述
单片机·嵌入式硬件·学习·操作系统·freertos·rtos·嵌入式软件
香水5只用六神7 天前
【RTOS快速入门】05_动态_静态创建任务(1)
c语言·开发语言·单片机·嵌入式硬件·freertos·rtos·嵌入式软件
mftang24 天前
Zephyr RTOS中的k_stack相关函数
zephyr·k_stack
fitpolo1 个月前
向控制台打印消息并进行日志记录
zephyr
智驾2 个月前
【瑞萨RA8D1 LVGL/LWIP评测】二、CPKCOR-RA8D1B Zephyr工程适配
瑞萨·zephyr·ra8d1 lvgl/lwip