Page 1 of 1

ESP8266 memory map

PostPosted: Fri Sep 20, 2019 4:34 am
by eriksl
This is the memory map I composed from various source the last few years. It contains RAM, ROM and FLASH, no I/O or DPORT registers (at least not one by one).

It is based on:
- initial published memory map posted on this site (which was very incomplete and had many things guessed)
- own findings added

I have tried to make a contigeuous list, i.e. without gaps, that explains why there is '-' here and there, it simply means that I don't know what's there. Most of the time it's "nothing" or another area duplicated, but hey, you never know.

Please check and if possible, add to this!

Please note: at 0x3fffe000 there is an area of 2860 bytes that is never used. It may be used in some SDK function I am not using, who knows. I am using it for a log buffer and it never fails. After this area, this an area of a few bytes that do get overwritten once, somewhere at the beginning of the user application. But it's after user_init2() so I am not sure where exactly this does happen. After that area, seem to be more, smaller, areas that are never used, but I didn't have the guts (nor need...) to use them ;)

Code: Select allesp8266 memory map                              flash memory map (start from 40100000)

segment         size    sub size    start                   size    start
    -                               700.00000
    -                               600.02000   I/O
    -                               600.01800   I/O
    -                               600.01000   I/O
    -                               600.00000   I/O
    -                               403.00000
    irom0                           402.10000               
SPI-MAPPED                          402.00000   <---                10000   irom0
    -                               401.40000
    -                               401.10000
    icache1     4000                401.0c000               4000    0c000   cache / "dummy when writing composite image"
    icache0     4000                401.08000               4000    08000   cache / "dummy when writing composite image"
    iram1       8000                401.00000   <---        8000    00000   iram0
    -                               400.10000
    brom        10000               400.00000   stack bottom
    -                   14cc        3ff.feb34   stack top (grows downwards)
    -                   8           3ff.feb2c   "system data ram #2"
    -                   b2c         3ff.fe000   ram free to use (apparently)
    -                   2000        3ff.fc000   "system data ram #1"
    dram0       18000   14000       3ff.e8000   bss, rodata, data, system heap
    -                               3ff.e0000
    -           20000               3ff.c0000
    -                               3ff.30000
    -                               3ff.20000
    -                               3ff.00010
    dport0      10                  3ff.00000
    -                               200.00000
    -                               000.00000