Hello,
I've got a few questions relating to the bootstrapping pins on the ESP module.
Specifically:
1) What is the purpose of the "timing of SDIO slave" strapping pins? I am guessing that the state of these doesn't really matter as it can also be configured in FW. But how can the flash memory properly configure the state of these registers on bootup if the proper configuration is required for the flash to communicate with the esp32 in the first place?
2) Similar question about "Voltage of Internal LDO (VDD_SDIO)". From my research it appears that all the flash memory modules included in the ESP-WROOM-32 module will be of the 3.3V variety. Is this configuration also managed by FW in addition to the MTDI pin? How can that happen if the voltage needs to be correct for the flash module to work? For example, if the MTDI pin was pulled high on bootup, thus selecting a 1.8V VDD_SDIO voltage level, would the flash memory overwrite that and force a 3.3V VDD_SDIO?
Thanks,
Connor
ESP-WROOM-32 Bootstrapping
-
- Posts: 9764
- Joined: Thu Nov 26, 2015 4:08 am
Re: ESP-WROOM-32 Bootstrapping
1. It's only used in SDIO boot mode, which is a mode where the ESP32 does not boot from external flash but from its SDIO interface; a host machine should send it data. Because there's no firmware running at that moment, the configuration has to be done using bootstrap pins.
2. If the flash voltage is too low, the chip usually isn't able to load firmware, crashing it before the firmware can take control. In theory, we could make firmware that selects 3.3V after booting, but we haven't bothered because a construction like that would be really brittle if it worked at all.
2. If the flash voltage is too low, the chip usually isn't able to load firmware, crashing it before the firmware can take control. In theory, we could make firmware that selects 3.3V after booting, but we haven't bothered because a construction like that would be really brittle if it worked at all.
Re: ESP-WROOM-32 Bootstrapping
You can force vdd_sdio in efuse. There is small delay between reading strapping pin and efuse so impact on flash startup time is unclear.
Re: ESP-WROOM-32 Bootstrapping
Thanks,ESP_Sprite wrote:1. It's only used in SDIO boot mode, which is a mode where the ESP32 does not boot from external flash but from its SDIO interface; a host machine should send it data. Because there's no firmware running at that moment, the configuration has to be done using bootstrap pins.
2. If the flash voltage is too low, the chip usually isn't able to load firmware, crashing it before the firmware can take control. In theory, we could make firmware that selects 3.3V after booting, but we haven't bothered because a construction like that would be really brittle if it worked at all.
Just to make sure that I properly understand, is this correct:
1) The serial flash uses the same 6 physical pins (GPIO's 6-11) as the SDIO interface, but does not use the SDIO interface itself. The serial flash uses the quad SPI interface via the SPI0 module. Thus, the configuration of the bootstrap pins for timing of SDIO slave have no effect on the serial flash interface, or the rest of the processor when operating from serial flash. I can safely not worry about the state of the MTDO or GPIO5 pins at startup.
2) The processor will crash when it can't load firmware, triggering the watch dog timer causing a continuous reset until the firmware can be properly loaded (I.e. the MTDI pin is pulled low and 3.3V is selected for the VDD_SDIO). Does the ESP-WROOM-32 always ship with 3.3V Serial flash?
Is my understanding correct?
-
- Posts: 9764
- Joined: Thu Nov 26, 2015 4:08 am
Re: ESP-WROOM-32 Bootstrapping
Your understanding is correct, and the WROOM32 is shipped with 3.3V flash (In contrast to the WROVER module, which because of psram limitations has 1.8V flash.)
Re: ESP-WROOM-32 Bootstrapping
Great, thanks very much!
-Connor
-Connor
Who is online
Users browsing this forum: No registered users and 85 guests