Forum: Mikrocontroller und Digitale Elektronik ESP8266 Memory Map


von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Mal eine Frage hierzu ...

1
esptool.py write_flash 0x00000 blinky-0x00000.bin 0x10000 blinky-0x10000.bin

Wo befinden sich diese 0x00000 bzw. 0x10000 ???

http://esp8266-re.foogod.com/wiki/Memory_Map

1
Start Address   Size   R/W   Access Width
2
(bits)   Name / Description
3
0x00000000   0x20000000   N/A   N/A   Protected Region
4
0x20000000   0x1FF00000   R   8/16/32   Apparently unmapped (reads as 00 80 00 00)
5
0x3FF00000   0x10000   R/W   8/16/32   Dport0
6
0x3FF10000   0x10000   R   8/16/32   Apparently unmapped (reads as 00 00 00 00)
7
0x3FF20000   0x10000   R/W   8/16/32   WDev Control Registers
8
0x3FF30000   0x90000   R   8/16/32   Apparently unmapped (reads as 00 00 00 00)
9
0x3FFC0000   0x20000   R?   8/16/32   Unknown Region 1
10
0x3FFE0000   0x8000   R   8/16/32   Apparently unmapped (reads as 00 00 00 00)
11
0x3FFE8000   0x18000   R/W   8/16/32   Data RAM
12
0x40000000   0x10000   R   32   Boot ROM
13
0x40010000   0x10000   R   32   Boot ROM (repeated)
14
0x40020000   0xD0000   R   32   Apparently unmapped (reads as 00 00 00 00)
15
0x40100000   0x8000   R/W   32   Instruction RAM
16
0x40108000   0x8000   R/W   32   Mappable Instruction RAM
17
0x40110000   0x30000   R   32   Apparently unmapped (reads as 00 00 00 00)
18
0x40140000   0xC0000   R   32   Apparently unmapped (reads as 59 31 d8 ec)
19
0x40200000   0x100000   R   32   SPI Flash Cache
20
0x40300000   0x1FD00000   R   8/16/32   Apparently unmapped (reads as 00 80 00 00)
21
0x60000000   0x10000000   R/W   8/16/32   Memory-Mapped IO Ports
22
0x70000000   0x90000000   R   8/16/32   Apparently unmapped (reads as 00 00 00 00)

von Max D. (max_d)


Lesenswert?

Das bezieht sich auf den speicher im spi flash

von Einer K. (Gast)


Lesenswert?

W3ll S. schrieb:
> Wo befinden sich diese 0x00000 bzw. 0x10000 ???

Meines Wissens nach nirgendwo dort.

Sondern im SPI Flash. Und der liegt nicht im Adressraum des Prozessors.

von Εrnst B. (ernst)


Lesenswert?

W3ll S. schrieb:
> Wo befinden sich diese 0x00000 bzw. 0x10000 ???

Im externen Flash-Chip.

Wohin der CPU-Core das dann beim Booten hinkopiert oder hinmappt ist 
eine andere Geschichte. vermutlich, deiner Tabelle nach, irgendwo bei 
0x40100000.

von Einer K. (Gast)


Lesenswert?

Εrnst B. schrieb:
> Wohin der CPU-Core das dann beim Booten hinkopiert oder hinmappt

Nicht nur beim Booten.

Er saugt sich, immer durch, wenn es nötig ist, Code aus dem Flash ins 
Ram.
1MB Code kann verwaltet werden.
Der Code-Ram Bereich ist erheblich kleiner.

Die Folge daraus:
ISR benötigen ein "cache" Attribut, damit sie im Ram bleiben.
Beim ersten IRQ Aufruf dauerts meist sehr lange, bis der Code an die 
Reihe kommt.

von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Ahh, verstehe ... danke!

Das heisst der Prozessor muss den Code aus dem SPI_RAM immer erst in
sein Instruction_RAM umkopieren? Und man kann qasi den Prozessor zwingen 
Code dort zu halten, für ISR z.b. weil ja sonst bei jedem Interruppt der 
Code erst immer kopiert werden müsste?

Noch eine Frage, warum habe ich nach dem Compilieren immer zwei .bin 
Files?

von Welle 🧐 S. (w3llschmidt)


Lesenswert?

W3ll S. schrieb:

> Und man kann qasi den Prozessor zwingen
> Code dort zu halten, für ISR z.b. weil ja sonst bei jedem Interruppt der
> Code erst immer kopiert werden müsste?

Ahh, gerade gefunden:

Application code should have the ICACHE_FLASH_ATTR decorator unless
it is executed very often.

All interrupt handlers must not have the ICACHE_FLASH_ATTR decorator and 
any code which executes very often should not have the decorator.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.