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

相关推荐
驱动探索者7 天前
Zephyr 获取 cpu 占用率异常bug分析
bug·rtos·zephyr
apolloyhl10 天前
FreeRTOS内核:核心数据结构与任务切换原理解析
arm开发·嵌入式·rtos
SXSBJS_XYT20 天前
在资源有限的M0单片机上运行RTOS
单片机·rt-thread·rtos
赋能大师兄1 个月前
嵌入式软件的几种程序架构
rtos·事件驱动·前后台系统·时间片轮询·面向对象/组件化
华清远见IT开放实验室1 个月前
STM32学习路线!软硬件兼修:裸机+RTOS+LVGL+硬件设计+项目实战 (STM32多核心开发板)
stm32·嵌入式·开发板·rtos·课程·软硬件·裸机开发
jz-炸芯片的zero1 个月前
【Zephyr存储专题】16_内存泄露检测可视化脚本自动化
自动化·嵌入式·ai编程·zephyr
jz-炸芯片的zero1 个月前
【Zephyr电源与功耗专题】15_功耗优化测试工具与手段
嵌入式·zephyr·功耗
linweidong1 个月前
跨平台驱动开发:打造兼容多款MCU的硬核方案
驱动开发·单片机·嵌入式硬件·bsp·rtos·spi驱动·hal设计
义薄云天us2 个月前
Apache NuttX 入门指南
apache·rtos·nuttx