Zephyr下ESP32S3开发环境搭建(Linux篇)

发布于:2025-08-19 ⋅ 阅读:(16) ⋅ 点赞:(0)

1.环境准备

建议用使用Ubuntu22.04 LTE,因为LTE版本是被维护的阶段,运行update时,更新会比较顺利。

这里不详述Ubuntu22.04 LTE的搭建,搭建好以后,更新下:

sudo apt update
sudo apt upgrade

2.1 版本要求说明

确保cmake / python3 / dtc的版本不低于如下要求:

cmake的版本使用默认的apt install cmake安装也可以满足要求,若是想升级高版本,可以使用下面的命令:

wget https://apt.kitware.com/kitware-archive.sh
sudo bash kitware-archive.sh

2.2 安装依赖

需要安装以下依赖:

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

安装完成后,验证对应版本如下:

3.拉zephyr

3.1 Python虚拟环境

(1)创建虚拟环境

python3 -m venv ~/zephyrproject/.venv

(2)激活虚拟环境

source ~/zephyrproject/.venv/bin/activate

3.2 获取Zephyr

(1)安装west

pip install west

(2)获取Zephyr源码

完成初始化,后面的所有过程,请注意路径要对应,不要自己创建文件夹放置。

west init ~/zephyrproject
cd ~/zephyrproject

此时程序会开始下载,若是下载失败,可以使用下面方式:

~/zephyrproject下会有一个.venv目录。你可以进行上面路径下修改对应的下载链接,当然如果你的环境下载github很快,大可不必进行修改,可以跳过这个步骤:

使用下面命令开始下载源码:
west update
这个过程如果下载困难,可以将链接换成如下:

(3)Cmake自动构建

导出 Zephyr CMake 包。这使得 CMake 能够自动加载构建 Zephyr 应用程序所需的应用代码。

west zephyr-export

(4)安装 Python 依赖项

Zephyr 的 west 扩展命令 “west packages” 可用于安装 Python 依赖项。

west packages pip --install

4.安装zephyr SDK

Zephyr 软件开发工具包(SDK)包含适用于 Zephyr 各支持架构的工具链,其中包括构建 Zephyr 应用程序所需的编译器、汇编器、链接器及其他程序。

在 Linux 系统上,该工具包还包含额外的主机工具,例如定制的 QEMU 和 OpenOCD 构建版本,这些工具用于 Zephyr 应用程序的仿真、烧录和调试。

1安装Zephyr SDK

cd ~/zephyrproject/zephyr
west sdk install

此处west sdk install执行后若是无法下载成功可以参考下面步骤若是环境可以下载成功下面步骤可以忽略

通过浏览器官网或者下面链接下载sdk下载后压缩解压~目录如果放在其他目录执行west sdk install依然提示失败

如下图所示 注意 路径

若是自己 下载 需要 手动 执行 下面 脚本
cd ~/zephyr-sdk-0.17.2
./setup.sh
       这个指令也会 下载 很多 依赖 压缩 若是 环境 下载 困难 可以 通过 浏览 下载 放在 ~/ zephyr - sdk - 0.17.2 但是 需要 set up . s h 防止 重新 下载 如下 暂时 下载 步骤 屏蔽 各个 tar . g z 文件 完成 解压 完成 可以 这段 释放 然后 运行 . / s e t u p . s h

再运行:
./zephyr-sdk-x86_64-hosttools-standalone-0.10.sh
运行完成后 回到 ~/ zephyrproject / zephyr 运行 west sdk install 此时 结果 如下

5.编译

1通过指令查看当前SDK支持开发名称如下

west boards
如下是 ESP 3 2 S 2 支持 board

2问题解决

此处我选择esp32s3_devkitm根据board选择一个支持esp32s3_devkitm示例如下

问题1直接使用esp32s3_devkitm提示如下信息

解决方法根据提示-b使用提示两个有效目标即可

esp32s3_devkitm/esp32s3/procpu
esp32s3_devkitm/esp32s3/appcpu
查找两个 目标 支持 示例 如下

3编译指定文件

以上支持board目标都是procpu若是使用appcpu也会遇到各种问题此处列举选择一个支持procpu示例samples/basic/blinky_pwm进行编译如下

west build -p always -b esp32s3_devkitm/esp32s3/procpu samples/basic/blinky_pwm -d build_2

编译完成生成目标zephyr.elf路径如上图所示

4编译boot

使用--sysbuild可以编译bootimage指令如下

west build -p always -b esp32s3_devkitm/esp32s3/procpu --sysbuild samples/basic/blinky_pwm -d build_5

结果如下所示:

6.烧录

1驱动权限

直接使用west flash -d build_2命令提示如下一系列问题

问题1ESP32接入系统提示问题如下

[18342.944491] usb 2-2.2: usbfs: USBDEVFS_CONTROL failed cmd brltty rqt 128 rq 6 len 255 ret -71

[18343.034783] usb 2-2.2: USB disconnect, device number 5

[18347.259867] usb 2-2.2: new full-speed USB device number 6 using uhci_hcd

[18347.458580] usb 2-2.2: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64

[18347.458591] usb 2-2.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0

[18347.458593] usb 2-2.2: Product: USB Serial

[18347.460910] ch341 2-2.2:1.0: ch341-uart converter detected

[18347.469726] usb 2-2.2: ch341-uart converter now attached to ttyUSB0

[18348.148295] input: BRLTTY 6.4 Linux Screen Driver Keyboard as /devices/virtual/input/input10

[18348.171749] usb 2-2.2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1

[18348.183083] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0

[18348.183124] ch341 2-2.2:1.0: device disconnected

解决

sudo systemctl stop brltty
sudo systemctl disable brltty
sudo apt remove brltty

问题2没有访问权限

(.venv) skylab@skylab-virtual-machine:~/zephyrproject/zephyr$ west flash -d build_2

-- west flash: rebuilding

ninja: no work to do.

-- west flash: using runner esp32

-- runners.esp32: reset after flashing requested

-- runners.esp32: Flashing esp32 chip on None (921600bps)

esptool v5.0.2

Found 33 serial ports...

Serial port /dev/ttyUSB0:

/dev/ttyUSB0 failed to connect: Could not open /dev/ttyUSB0, the port is busy or doesn't exist.

([Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0')

Hint: Try to add user into dialout or uucp group.

解决

添加权限

sudo usermod -aG dialout skylab
参照之前 链接 添加 open ocd 配置
wget https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20230921/openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz
tar -xvf ./openocd-esp32-linux-amd64-0.12.0-esp32-20230921.tar.gz
cp ~/openocd-esp32/bin/openocd ~/zephyr-sdk-0.17.2/sysroots/x86_64-pokysdk-linux/usr/bin/
cp -r ~/openocd-esp32/share/openocd/* ~/zephyr-sdk-0.17.2/sysroots/x86_64-pokysdk-linux/usr/share/openocd/
添加文件/etc/udev/rules.d/40-dfuse.rules 内容 如下
SUBSYSTEMS=="usb", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="10??", GROUP="plugdev", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55??", GROUP="plugdev", MODE="0666"
保存后 再次 udev reload 如下
sudo udevadm control --reload
做完以上 操作 需要 重启 系统 部分 配置 生效。

2烧写

west flash -d build_2

7.运行

ESP32S3串口使用串口工具打开可以看到相关输出

对应工程定义输出对应


网站公告

今日签到

点亮在社区的每一天
去签到