Zephyr 开发 ESP32-C61-DevKitC-1:从板卡特性到构建、烧录与调试全指南
2026/9/17 1:53:37 网站建设 项目流程

Zephyr 开发 ESP32-C61-DevKitC-1:从板卡特性到构建、烧录与调试全指南

【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr

ESP32-C61-DevKitC-1 是乐鑫(Espressif)推出的入门级开发板,基于集成 2.4 GHz Wi-Fi 6 与蓝牙 LE 的 ESP32-C61-WROOM-1 模组,在 Zephyr RTOS 中拥有完整的一等公民支持。本文以 Zephyr 官方板卡文档(boards/espressif/esp32c61_devkitc/doc/index.rst)为骨架,结合仓库内的设备树、Kconfig 与构建脚本,系统讲解该板卡的硬件特性、Zephyr 支持情况、Simple Boot 与 MCUboot 两种启动方式、sysbuild/手动构建流程、基于 snippet 的板卡变体,以及 OpenOCD 调试方法,帮助你在这块板上快速完成从"点亮串口"到"跑通 Wi-Fi 6 应用"的完整开发闭环。

ESP32-C61-DevKitC-1 板卡概览

ESP32-C61-DevKitC-1 是一块入门级开发板,核心是 ESP32-C61-WROOM-1 通用模组,配备8 MB SPI Flash2 MB PSRAM,并集成完整的2.4 GHz Wi-Fi 6Bluetooth LE功能。板卡官方型号信息定义在 board.yml(full_name: ESP32-C61-DevKitC,SoC 为esp32c61)。

在硬件布局上,板卡两侧排针几乎引出了所有 I/O 引脚,开发者既可以用杜邦线连接外设,也可以直接把板卡插到面包板上进行原型验证。

注:本文所有开发板官方信息与命令均以当前 Zephyr 仓库实际内容为准;Espressif 官方板卡用户指南等外部资料不在本文引用范围内。

ESP32-C61 SoC 特性一览

ESP32-C61 是一颗低成本 SoC,集成了 2.4 GHz Wi-Fi 6 与 Bluetooth 5(LE),并带有可靠的安全特性。其核心特性(来源:soc-esp32c61-features.rst)包括:

  • CPU:32 位 RISC-V 内核,最高主频 160 MHz
  • 存储:256 KB ROM、320 KB 内部 SRAM,配合外部 Flash 工作
  • 无线:Wi-Fi 802.11ax 2.4 GHz(向下兼容 IEEE 802.11b/g/n)、蓝牙 LE(Bluetooth 5 认证),Wi-Fi 与蓝牙通过内部共存机制共享同一天线

数字接口:

接口数量/规格
GPIO30 路
UART3 路
通用 SPI1 路
I2C1 路
I2S1 路
USB Serial/JTAG 控制器1 个
SDIO 2.0 从机控制器1 个
LED PWM 控制器最多 6 通道
通用 DMA(GDMA)2 发 2 收
事件任务矩阵(ETM)1 套

模拟接口:1 路 12 位 SAR ADC(最多 4 通道)、1 路温度传感器。

定时器:1 个 52 位系统定时器、2 个 54 位通用定时器、3 个看门狗定时器。

低功耗:面向典型场景提供四种功耗模式——Active、Modem-sleep、Light-sleep、Deep-sleep。

安全:Secure boot、Flash 加密、硬件密码学加速(ECC、ECDSA、SHA)、随机数发生器(RNG)。

Zephyr 中的板卡定义与支持特性

在 Zephyr 中,该板卡的标识符为esp32c61_devkitc,架构为riscv,工具链使用 Zephyr 官方工具链。完整的支持矩阵定义在 esp32c61_devkitc.yaml:

identifier: esp32c61_devkitc name: ESP32-C61-DevKitC vendor: espressif type: mcu arch: riscv toolchain: - zephyr supported: - adc - counter - gpio - watchdog - uart - spi - i2c - dma - entropy - pwm - netif:wifi

也就是说,该板卡在 Zephyr 下当前可用的驱动包括 ADC、计数器、GPIO、看门狗、UART、SPI、I2C、DMA、熵源、PWM 以及 Wi-Fi 网络接口。

板级默认配置(defconfig)

板卡默认配置见 esp32c61_devkitc_defconfig:

CONFIG_CONSOLE=y CONFIG_SERIAL=y CONFIG_UART_CONSOLE=y CONFIG_GPIO=y

它默认开启串口控制台(console 默认挂在uart0)与 GPIO 支持。此外 Kconfig 中为板卡追加了 4096 字节堆内存池:

config HEAP_MEM_POOL_ADD_SIZE_BOARD int default 4096 if BOARD_ESP32C61_DEVKITC

Kconfig 选择关系见 Kconfig.esp32c61_devkitc,即BOARD_ESP32C61_DEVKITC选中SOC_ESP32C61SOC_ESP32C61_REV_1_0

设备树要点

从 esp32c61_devkitc.dts 可以看到板级设备树的几个关键决策:

  • chosen 节点zephyr,consolezephyr,shell-uart均指向uart0zephyr,code-partition指向slot0_partition(分区布局来自espressif/partitions_0x0_default.dtsi);
  • Flash/PSRAMflash0配置为 8 MB,psram0配置为 2 MB,与 WROOM-1 模组规格一致;
  • UART0:默认启用,波特率 115200;
  • I2C0:启用,时钟频率为 FAST(400 kHz),SDA/SCL 分别使用 GPIO22/GPIO23(开漏),并绑定默认引脚控制(pinctrl);
  • SPI2:作为通用 SPI 启用;
  • 外设trng0(真随机数)、gpio0wdt0wifiesp32_bt_hci均默认启用;
  • 用户按键user_button1作为 gpio-keys 注册(GPIO9,上拉 + 低电平有效,触发INPUT_KEY_0),别名sw0

GPIO 的引脚复用由 esp32c61_devkitc-pinctrl.dtsi 提供(uart0_defaulti2c0_defaultspim2_default等 pin control 状态)。

系统要求:获取 ESP32 二进制固件

Espressif HAL 需要 RF 二进制 blob 才能正常工作。在完成west update之后,运行以下命令获取这些文件:

west blobs fetch hal_espressif

官方文档(system-requirements.rst)建议在每次west update之后都执行该命令,以保证 RF blob 与当前 HAL 版本匹配。

构建与烧录

该板卡支持两种镜像加载方式,区别在于是否使用二级引导程序。

Simple Boot(简单启动)

Simple Boot 将应用直接烧录为单一二进制镜像,不经过二级引导程序。在未做额外配置的情况下,这是构建应用的默认选项。

⚠️ 注意:Simple Boot 不提供任何安全特性,也不支持 OTA 更新。

MCUboot Bootloader

如果希望使用 MCUboot 引导程序,至少需要构建并烧录一次 bootloader。用户可以通过在板卡默认配置文件(defconfig)中加入以下配置来切换:

CONFIG_BOOTLOADER_MCUBOOT=y

对于该板卡,Kconfig.sysbuild 中已将 bootloader 选择默认设为BOOTLOADER_MCUBOOT。选择 MCUboot 后,构建应用有两种方式:sysbuild手动构建

方式一:sysbuild

sysbuild 可以一次性构建并烧录启动 ESP32 SoC 所需的全部镜像(bootloader + 应用)。使用 sysbuild 构建示例应用:

west build -b esp32c61_devkitc samples/hello_world --sysbuild

默认情况下,ESP32 sysbuild 会生成bootloader(MCUboot)应用两种镜像,也可配置生成其他类型的镜像。

sysbuild 的构建目录结构与传统 Zephyr 构建不同,输出按 domain 子目录组织:

build/ ├── hello_world │ └── zephyr │ ├── zephyr.elf │ └── zephyr.bin ├── mcuboot │ └── zephyr │ ├── zephyr.elf │ └── zephyr.bin └── domains.yaml

⚠️ 注意:使用--sysbuild时,一旦执行 pristine(干净)构建,bootloader 会被重新构建并重新烧录。

方式二:手动构建

开发迭代期间追求"尽量快地构建与烧录",可以一次只构建一个镜像,使用传统构建方式。以下命令对手动构建与 sysbuild 都适用,两者唯一的区别是构建目录结构不同:

west build -b esp32c61_devkitc samples/hello_world

⚠️ 记住:bootloader(MCUboot)至少需要烧录一次。

烧录同样使用常规的flash目标:

west flash
下载模式遗留问题

在暴露了内置 USB Serial/JTAG 控制器的目标上,芯片在west flash之后可能停留在下载模式而不会启动新镜像,直到重新上电。如果遇到这种情况,可以带看门狗复位方式烧录,让芯片自行重启:

west flash --reset-type watchdog-reset

更快地烧录与更干净的日志

为了缩短开发循环,--esp-skip-flashed会在设备上通过MD5 校验确认 flash 中已存在与目标一致的二进制时跳过写入:

west flash --esp-skip-flashed

如果追求更快的重新烧录,--esp-diff只写入与上次镜像不同的区域。它对比的是本地缓存的副本而不是读取设备,因此只有在自上次west flash以来 flash 未被其他工具、板卡或手动写入修改时才应使用:

west flash --esp-diff

在 CI 等场景下可以抑制进度输出以获得更干净的日志:

west flash --esp-no-progress

打开串口监视器

使用以下命令打开串口监视器:

west espressif monitor

板卡自动复位并启动后,在监视器中应看到类似输出:

***** Booting Zephyr OS vx.x.x-xxx-gxxxxxxxxxxxx ***** Hello World! <board>

其中<board>esp32c61_devkitc

板卡变体:用 snippet 切换 Flash/PSRAM

ESP32 板卡可以搭配不同的模组,涉及 SPI flash 大小、PSRAM 大小与 PSRAM 模式的多种组合。snippets/espressif目录下的 snippet 提供了一种模块化方式,在构建时应用这些变化而无需重复定义板卡。

支持的 snippet 变体如下:

Snippet 名称说明
Flash 容量
espressif-flash-4M4 MB Flash 的板卡
espressif-flash-8M8 MB Flash 的板卡
espressif-flash-16M16 MB Flash 的板卡
espressif-flash-32M32 MB Flash 的板卡
espressif-flash-64M64 MB Flash 的板卡
espressif-flash-128M128 MB Flash 的板卡
PSRAM 容量
espressif-psram-2M2 MB PSRAM 的板卡
espressif-psram-4M4 MB PSRAM 的板卡
espressif-psram-8M8 MB PSRAM 的板卡
PSRAM 利用方式
espressif-psram-reloc将 Flash(代码)重定位到 PSRAM
espressif-psram-wifi将 Wi-Fi 缓冲区放入 PSRAM

应用板卡变体时,在west build中使用-S标志,例如:

west build -b esp32c61_devkitc samples/hello_world -S espressif-flash-32M -S espressif-psram-4M

注意事项:

  • 这些 snippet 仅适用于所选 Flash/PSRAM 配置在硬件上得到支持的板卡;
  • 若不使用 Flash snippet,则采用板卡默认 Flash 容量;
  • 若不使用 PSRAM snippet,则采用板卡默认 PSRAM 容量。

ESP32-C61-DevKitC-1 的板载模组默认是 8 MB Flash + 2 MB PSRAM,因此使用espressif-flash-8M/espressif-psram-2M可显式声明与板载硬件一致的配置。

OpenOCD 调试

使用 ESP32 定制版 OpenOCD

Espressif 芯片需要带有 ESP32 特定补丁的定制 OpenOCD 构建。Zephyr SDK 自带 OpenOCD,但可能不支持 ESP32;构建时可通过 CMake 参数指定 Espressif OpenOCD 路径:

west build -b esp32c61_devkitc samples/hello_world -DOPENOCD=/path/to/openocd -DOPENOCD_DEFAULT_PATH=/path/to/openocd/scripts

对于该板卡,board.cmake 会优先在ESPRESSIF_TOOLCHAIN_PATH/openocd-esp32/bin中查找openocd,并依次引入esp32.board.cmakeopenocd.board.cmake;此外 support/openocd.cfg 提供了板级 OpenOCD 配置文件。

Zephyr 线程感知(Thread Awareness)

定制版 OpenOCD 支持 Zephyr RTOS 线程感知,使 GDB 能够:

  • 通过info threads列出所有线程;
  • 显示线程名称、优先级与状态;
  • 在线程上下文之间切换;
  • 展示任意线程的调用栈回溯(backtrace)。

要求:

  • OpenOCD ESP32 v0.12.0-esp32-20251215 或更新版本;
  • CONFIG_DEBUG_THREAD_INFO=y构建。

示例命令(带线程调试信息与自定义 OpenOCD 路径):

west build -b esp32c61_devkitc samples/hello_world -DCONFIG_DEBUG_THREAD_INFO=y -DOPENOCD=<path/to/bin/openocd> -DOPENOCD_DEFAULT_PATH=<path/to/openocd/share/openocd/scripts> west debug

从板卡定义到实际开发的关键路径小结

  • 板卡文档:boards/espressif/esp32c61_devkitc/doc/index.rst
  • 板卡元数据与支持矩阵:esp32c61_devkitc.yaml
  • 设备树与引脚复用:esp32c61_devkitc.dts、esp32c61_devkitc-pinctrl.dtsi
  • 构建/烧录/调试通用指南(被板卡文档 include 的公共片段):building-flashing.rst、board-variants.rst、openocd-debugging.rst
  • SoC 特性与系统要求:soc-esp32c61-features.rst、system-requirements.rst

结语

ESP32-C61-DevKitC-1 在 Zephyr 中是一块"开箱可用"的 Wi-Fi 6 + BLE 开发板:通过 esp32c61_devkitc.yaml 声明的 ADC、GPIO、I2C、SPI、UART、PWM、DMA、看门狗与 Wi-Fi 接口矩阵,配合 snippet 化的 Flash/PSRAM 变体机制和--esp-diff/--esp-skip-flashed等提速烧录手段,开发者可以快速迭代从外设驱动到无线网络的全栈应用。无论是用默认 Simple Boot 快速验证,还是通过 sysbuild 一键构建 MCUboot 双镜像方案,Zephyr 仓库中的设备树与板卡脚本已经为你铺好了从构建、烧录到 OpenOCD 线程级调试的完整路径。

【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询