ESP32 基础篇: 启动时 rst cause 和 boot mode
简介
在 ESP32 启动时, ROM CODE 会读取 GPIO 状态和 rst cause 状态, 进而决定 ESP32 工作模式。 通过了解和掌握 rst cause 和 boot mode, 有助于定位某些系统问题。
例如: ESP32 启动时会有如下打印:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ROM CODE 波特率为 115200
系统复位介绍和 ESP32 启动时 rst cause
系统复位介绍
系统提供三种级别的复位方式,分别是 CPU 复位,内核复位,系统复位。 所有的复位都不会影响 MEM 中的数据。如图展示了整个子系统的结构以及每种复位方式:
-
CPU 复位:只复位 CPU 的所有寄存器。 内核复位:除了 RTC,会把整个 digital 的寄存器全部复位,包括 CPU、所有外设和数字 GPIO。 系统复位:会复位整个芯片所有的寄存器,包括 RTC。
大多数情况下, APP_CPU 和 PRO_CPU 将被立刻复位,有些复位源只能复位其中一个。 APP_CPU 和 PRO_CPU 的复位原因也各自不同: 当系统复位起来之后, PRO_CPU 可以通过读取寄存器 RTC_CNTL_RESET_CAUSE_PROCPU 来获取复位源; APP_CPU 则可以通过读取寄存器 RTC_CNTL_RESET_CAUSE_APPCPU 来获取复位源。
ESP32 启动时 rst cause
例如 ESP32 启动时会有如下打印:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
其中 rst 简单说明如下:
ESP32 上电 boot mode
ESP32 上电时会判断 strapping 管脚的状态, 并决定 boot mode. 例如常见的两种上电打印:
下载固件模式:
rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
芯片运行模式:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
以 ESP32-WROOM-32 为例说明。 boot 值由 strapping 管脚 的 6 位值 [MTDI, GPIO0, GPIO2, GPIO4, MTDO, GPIO5] 共同决定。
下面是关于 Stripping 管脚 相关说明: 说明:
-
固件可以通过配置一些寄存器比特位, 在启动后改变“内置 LDO (VDD_SDIO) 电压”和“SDIO 从机信号输入输出时序”的设定。 因为模组内置了 3.3 V SPI flash, 所以上电时不能将 MTDI 置 1。
