I have question that I have been googling for about past two weeks but could not find a satisfactory answer.
The question is on some development lets say ESP 32 DEV kit there is an on board button named Boot. According to the description that I have read it says that when the Boot button is pressed during a power up the ESP32 boots up differently and behave differently as compared to normal power. SO basically the question is why two bootings are needed and what happens that the boot button pressed and the ESP 32 behaves diffrerently....
The ESP's use what Espressif calls "strapping pins" to determine what boot mode it uses (ie, whether it boots into the mode for uploading a program via serial to be stored in it's flash, vs running the program you previously uploaded to it) - on these pins, at a very early stage of startup, it looks at those pins to determine whether to listen on serial for an upload, or start running code. Typically the pins have pullups or pulldowns on them to make the "default" boot mode the one that runs the program in flash.
The "boot" button and other buttons with similar functions on other ESP boards simply grounds the appropriate strapping pin so that when it is reset with the button pressed, it will start up and wait you to upload new code, instead of running the code already there.
Once it passes that point in the boot process, the strapping pins cease to have special meaning to it (until the next time it is reset, of course)
In contrast, on the typical (classic AVR-based) Arduino boards, the "built-in" upload method is via ISP, where reset is held low, but the SPI pins are manipulated treating the ATmega as slave. This doesn't require those "strapping pins" that have to be held in a certain state at startup, but on the downside, you have to have more than a serial adapter to upload code to them. To allow you to upload via a normal serial adapter, all the arduino boards have a "bootloader" installed; on the classic AVR parts, the bootloader is run every time the device resets - but many bootloaders will immediately jump to the sketch on a power-on reset, as opposed to a reset from the reset pin.
I believe that some of the more arduino-like esp boards have special logic that manipulates the “boot” pin automatically during upload, making the button/jumper unnecessary except is special cases.
westfw:
I believe that some of the more arduino-like esp boards have special logic that manipulates the “boot” pin automatically during upload, making the button/jumper unnecessary except is special cases.
D1 mini seems to, no need to press anything to upload new code to it.