May 16, 2018

The ESP32 bootrom

I got a lot of enjoyment and insight from reading out and disassembling (and studying) the ESP8266 bootrom, so it seemed like a good project for the ESP32 as well.
I put this project on github:
  • Github: my esp32 disassembly

    On the ESP32, the bootrom is much bigger (7*64k) than on the ESP8266:

    The above map is correct and differs from what is published in the manuals. The entire ROM is seen as a continuous 448k starting at 0x40000000. There is also a 64k window that accesses the last 64k of this same image at address 0x3ff90000. This smaller window is presented to the data bus, while the big "full" window is presented to the instruction bus. This is a Harvard architecture chip and this is therefore relevant.

    See my notes below on disassembling the bootrom.

    Here are some links to related topics:

    Case studies

    Here are some instructive vignettes from the disassembled code.
    Feedback? Questions? Drop me a line!

    Tom's Computer Info / [email protected]