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

相关推荐
都在酒里6 天前
FreeRTOS 综合实战:串口命令控制 LED 闪烁模式与系统监控
stm32·单片机·嵌入式硬件·嵌入式·rtos·嵌入式软件
都在酒里7 天前
FreeRTOS 手动移植教程(七):软件定时器 —— 不占硬件 Timer 的定时回调
stm32·单片机·嵌入式·rtos·嵌入式软件
都在酒里7 天前
FreeRTOS 手动移植教程(八):中断管理 —— 优先级、临界区与任务通知
stm32·单片机·嵌入式·rtos·嵌入式软件
都在酒里8 天前
FreeRTOS 手动移植教程(四):队列 —— 任务间通信的最佳起点
stm32·单片机·rtos
都在酒里8 天前
FreeRTOS 手动移植教程(二):任务管理——多任务创建、优先级抢占与删除
stm32·单片机·嵌入式硬件·rtos
都在酒里8 天前
FreeRTOS 手动移植教程(五):信号量 —— 任务同步与中断通知的优雅解决方案
stm32·单片机·rtos·嵌入式软件
云中飞鸿16 天前
VxWorks核心函数库分类详解
rtos
mftang16 天前
Zephyr RTOS 中k_mutex(互斥锁)功能介绍
互斥锁·zephyr·zephyr rtos·k_mutex
metaRTC17 天前
metaRTC8 freertos编程指南(bk7258/bk7259)
音视频·webrtc·rtos
fitpolo18 天前
蓝牙低功耗基3-蓝牙低功耗中的数据交4
zephyr