You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过软件将ESP32C3切换至第一阶段Bootloader?

软件触发ESP32C3进入原生第一阶段Bootloader方案

针对ESP-IDF v5.1中rtc_wdt_protect_off等函数不支持ESP32C3的问题,可通过直接操作芯片寄存器的方式,软件触发设备重启并进入ROM中的原生第一阶段Bootloader(即串口下载模式),无需依赖硬件引脚。

实现原理

ESP32C3的ROM Bootloader会在复位后检查RTC存储寄存器的特定标志位,若检测到预设的下载触发标志,将直接进入第一阶段Bootloader的下载模式,而非启动第二阶段Bootloader或应用程序。我们可以通过设置该标志位后触发系统复位,实现目标效果。

代码实现

#include <stdio.h>
#include <driver/rtc_cntl.h>
#include <esp_rom_sys.h>
#include <esp_intr_alloc.h>

void enter_rom_bootloader(void) {
    // 关闭所有中断,避免复位过程被干扰
    esp_intr_noniram_disable();
    
    // 设置RTC_STORE0寄存器的标志位,告知ROM Bootloader进入下载模式
    REG_WRITE(RTC_CNTL_STORE0_REG, 0x00000001);
    
    // 触发系统复位,重启后ROM会检测标志并进入第一阶段Bootloader
    esp_rom_sys_reset();
}

关键说明

  • 该方法直接操作ESP32C3的底层寄存器,无需依赖ESP-IDF中仅支持ESP32/S3的WDT相关函数。
  • 复位后,ROM Bootloader读取RTC_CNTL_STORE0_REG的值,若为0x00000001则进入第一阶段下载模式,完全符合原生第一阶段Bootloader的触发逻辑。
  • 执行此函数后设备会立即重启,应用程序后续代码不会继续执行,需提前做好状态保存。

内容的提问来源于stack exchange,提问作者mejha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 11:35:06