espressif / arduino-esp32

Arduino core for the ESP32
GNU Lesser General Public License v2.1
13.73k stars 7.43k forks source link

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) #4278

Closed chandanpalai closed 3 years ago

chandanpalai commented 4 years ago

I made a custom board using ESP32 WROOM 32U chip. I also have a bread board based test rig on which I've been flashing my test programs. The test rig runs fine with written code. However the custom board throws out the following output on serial monitor.

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371

I'm using ESP32 download tools v3.8.5 for flashing both the custom board and the test rig. What am I doing wrong here?

N.B. I've already checked all the bin file and their addresses prerequisites and burned them on both on the test rig and custom board. Its only the custom board that's giving me this output

atanisoft commented 4 years ago

Make sure you are NOT using GPIO 6-11 for any purpose and leave these pins floating on your custom board. These pins are connected to the on-board flash and will result in the error you show if you are attempting to use them.

Additionally, make sure your 3v3 power supply is sufficient for the ESP32 since this can also result in failures of this nature.

chandanpalai commented 4 years ago

@atanisoft Thank you for the quick reply. I've rechecked and yes GPIO6-11 have been left floating in my custom board and I've also made sure that the board is receiving the proper voltage values. I've rechecked this through a multimeter. Just to make sure that my CP2102 USB to TTL is working, I've programmed the test rig using this. To give you some context, the first error that I encountered was this

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0018,len:4 load:0x3fff001c,len:1044 load:0x40078000,len:8896 load:0x40080400,len:5828 entry 0x400806ac

then after some tinkering and tremendous help from another thread viz.

https://github.com/espressif/arduino-esp32/issues/2230

I got the following output

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0018,len:4 load:0x3fff001c,len:1044 load:0x40078000,len:8896 load:0x40080400,len:5816 entry 0x400806ac

I was able to resolve this by using the following thread:

https://github.com/espressif/arduino-esp32/issues/1638

Now the current status is

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371

atanisoft commented 4 years ago

I've also made sure that the board is receiving the proper voltage values. I've rechecked this through a multimeter.

Voltage is only one half of the requirement for the ESP32, the other half is current. Make sure you are supplying at least 500mA of current at 3v3 to the esp32 (per datasheet page 35), though I'd highly recommend at least 750mA since the BLE and WiFi radios can each consume up to 240mA (page 37 in the datasheet).

chandanpalai commented 4 years ago

I've checked the current flow too. Its 760mA ~ 775mA.

atanisoft commented 4 years ago

In that case, I'd suggest test your code with a DevKit-C or similar board and confirm it is not code related. If it works on a DevKit-C (or similar) board then I'd suggest a PCB review to ensure there are no pads shorting to GND or 3v3 that should not be (this includes GPIO 6-11 (pads 17-22 on ESP32-WROOM-32U page 3 and 4).

chandanpalai commented 4 years ago

My test rig contains a DevKit-C V4, the code runs fine on it, with the intended output coming up on the serial monitor. I will check with the pads shorting issue though. Maybe there's some issue there.

lbernstone commented 4 years ago

Compile your app with lowest flash requirements (DIO/40MHz) while testing.

chandanpalai commented 4 years ago

Yes, I understood that from one of your earlier threads, however, there has been no change in the output.

lbernstone commented 4 years ago

Only other thing I can think of would be holding gpio12 high at boot, but that really should prevent even the bootloader from starting. Do you have an SD attached there?

chandanpalai commented 4 years ago

No there is no SD card attached. Can you explain why GPIO12 held on high at boot may or may not work? I've connected an LED through it in my custom board. Will that be a problem?

atanisoft commented 4 years ago

@chandanpalai there are a few bootstrap pins (listed in the datasheets linked above). Depending on the state of the pins as part of startup time they alter the behavior of the ESP32. GPIO 12 is one of the bootstrap pins and as @lbernstone is referencing if held HIGH it will switch the flash voltage IIRC.

chandanpalai commented 4 years ago

Okay, in my circuit I've designated GPIO0 as my strapping pin.

lbernstone commented 4 years ago

https://github.com/espressif/esp-idf/tree/master/examples/storage/sd_card#note-about-gpio12-esp32-only https://github.com/espressif/esptool#troubleshooting

atanisoft commented 4 years ago

Okay, in my circuit I've designated GPIO0 as my strapping pin.

That is only one of the five strapping pins on the ESP32. Refer to page 5 of the ESP32-WROOM-32U datasheet for the full set. MTDI = 12, MTDO = 15.

chandanpalai commented 4 years ago

I did read up on the strapping pins before designing the custom board. However, I will take a thorough look again if I missed something with regards to the bootloader and strapping pins. Will update once I have something.

lbernstone commented 4 years ago

Another link: https://github.com/espressif/esptool/wiki/ESP32-Boot-Mode-Selection#early-flash-read-error

chandanpalai commented 4 years ago

Okay, I will take a look at the particular link. Thank you

libasoles commented 4 years ago

Have you ever solved this issue? (and do you remember how?). It's happening to me when I execute this line: BLEDevice::init("");

The nodemcu keeps restarting itself:

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
libasoles commented 4 years ago

Hey folks, i found the problem with my code. I don't know if it will be useful to someone in the future. I had this:

class App {
public:
    void setup() {
        delay(3000); // power-up safety delay
    }

    void loop() { ... }

private:
    BluetoothCommunicationHandler bluetooth{}; <-- initializing the service as a member variable
};

For some reason I don't know (I'm new to c++) that causes the reboot when I wanted to start BLE client.

Changed it to:

class App {
public:
    void setup() {
        delay(3000); // power-up safety delay
        BluetoothCommunicationHandler bluetooth{}; <-- guess it should work in constructor too
    }

    void loop() { ... }
};

That's it. If anyone has a hint on why that was a problem, I'd like to understand. I initialize other services as member variables and that usually works fine. Is this something I should avoid in c++?

atanisoft commented 4 years ago

@libasoles If you are declaring that App class globally and you are doing something in the BluetoothCommunicationHandler constructor that requires BLE or other functionality to be usable the system will crash on startup due to the global constructor initialize phase runs prior to IDF/Arduino/etc starting up various peripherals/systems/etc.

You can work around this by declaring it as a pointer and initializing it from inside setup().

chandanpalai commented 4 years ago

@libasoles I never found a workaround for the problem, nor could I rectify it. I've sent the hardware for redesign now. I will be posting progress with regards to my issue and how/if it gets resolved. Thank you for posting code based solution to the problem. I tried working with very simple codes could not resolve the problem.

stale[bot] commented 3 years ago

[STALE_SET] This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs. Thank you for your contributions.

stale[bot] commented 3 years ago

[STALE_DEL] This stale issue has been automatically closed. Thank you for your contributions.

09Kartik04 commented 1 year ago

12:58:14.385 -> rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) 12:58:14.385 -> flash read err, 1000 12:58:14.385 -> ets_main.c 371

09Kartik04 commented 1 year ago

what does it mean

mihsu81 commented 1 year ago

Having the same issue all of a sudden.

NorthernMan54 commented 1 year ago

So I spent the day with the same issue after updating my software package from espressif32@3.5.0 to espressif32@6.1.0, and after a fair bit of digging into the issue, found that this line when included within my package ( but not executed ) would trigger the issue pinMode(16, OUTPUT).

I had included this as part of integrating to an SSD1306 oled display, and needed to reset the display as part of connecting to it ( https://github.com/ThingPulse/esp8266-oled-ssd1306/issues/326 )

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13192
load:0x40080400,len:3028
entry 0x400805e4
ets Jun  8 2016 00:22:57
etienne-85 commented 1 year ago

I have the very same issue looping over and over on serial: rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371

This is a board I haven't been using for almost a year, and seems like I'm no longer able to reflash it... Any other experiencing same issue, could it be related to hardware issue?

OptoStocks commented 1 year ago

Very similar issue here :

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:6608 load:0x40078000,len:14788 ho 0 tail 12 room 4 load:0x40080400,len:3792 csum err:0x7a!=0x34 ets_main.c 384

This board has been running for 6months, and suddenly, stopped booting. I hardly can find any relevant information... or explanation... Can someone give a hint please ? :)

gauix4 commented 1 year ago

i just got 5 esp32s 3 I leave the setup and the void loop empty approximately every 5 seconds it reboots on its own with the same message

ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x10 (RTCWDT_RTC_RST),boot:0x8 (SPI_FAST_FLASH_BOOT) SPIWP:0xee mode:DIO, clock div:1 load:0x3fce3808,len:0x44c load:0x403c9700,len:0xbe4 load:0x403cc700,len:0x2a38 entry 0x403c98d4

gauix4 commented 1 year ago

anyone has an idea of this problem because it makes all ESP32 S3 unusable !

gargamelonly commented 11 months ago

same here.

Shayantika-Dhar commented 10 months ago

yesterday the module was working fine with my code, but when i start using today the same code is giving error and now this is showing

rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0030,len:1344 load:0x40078000,len:13964 load:0x40080400,len:3600 entry 0x400805f0

Wismute commented 10 months ago

Had the same problem, but solved it:

Turns out that in my case it was NodeMCU PyFlasher that i uploaded .bin with

So I had to use esptool (installed with pip3 install esptool) and most importantly specify -z 0x1000 parameter in flashing command to make it look like that:

esptool --chip esp32 --port COM4 write_flash -z 0x1000 C:\path\to\ESP32_GENERIC-20231227-v1.22.0.bin

Don't forget to adjust COM port, path to bin and bin name itself to your values. The -z parameter is an address offset in memory we are flashing, which happens to be crucial.

Perhaps somebody faces that problem because of the same reason as me, hope that helps

f22raptorroland commented 7 months ago

Had the same issue with an Arduino project. I reverted the ESP32 boards from 2.0.X to 1.0.6 and it solved my issue

Custom board, Pin 12 was floating