ESP: An welche Adresse flashen?

OP #6370728
Lesenswert?

Ich versuche gerade, einen esp8266 von einem anderen Controller aus mit 
dem esp-serial-flasher von Espressif zu flashen (also kein OTA!). Dabei 
verlangt das Programm (vielleicht auch das Protokoll) die Startadresse, 
von der ab erased und geflashed werden soll.

In den Datenblättern von Espressif habe ich leider keine 
Speicherarchitektur gefunden. Ich nehme an, ich kann nicht einfach das 
Datenblatt von einem beliebigen Cortex M3-Controller nehmen?

Kurzum: Wo starten beim esp8266(ex) Programme normalerweise?
Gast #6370753
Lesenswert?

Die Adressen müssen mit dem Programmcode überein stimmen. Build von der 
Arduino IDE werden zum Beispiel an Adresse 0x0000 gespeichert. Aber das 
SDK von Espressif (zumindest v1.5) zerlegt die Firmware in mehrere 
Dateien die an ganz bestimmte Adressen geladen werden müssen. Das war in 
irgendeinem Readme File beschrieben.
OP #6370834
Lesenswert?

John P. schrieb:
> Zumindestens beim ESP32 steht in der Arduino Umgebung ganz genau welches
> Binary an welche Adresse gehört und wo das Binary zu finden ist.

Wie zeigst Du denn das an? Bei mir zeigt die Arduino-IDE am Ende des 
Übersetzens die Größe der div. Programmteile, aber nicht deren Adressen:
1
Executable segment sizes:
2
IROM   : 243612          - code in flash         (default or ICACHE_FLASH_ATTR) 
3
IRAM   : 26652   / 32768 - code in IRAM          (ICACHE_RAM_ATTR, ISRs...) 
4
DATA   : 1264  )         - initialized variables (global, static) in RAM/HEAP 
5
RODATA : 888   ) / 81920 - constants             (global, static) in RAM/HEAP 
6
BSS    : 25576 )         - zeroed variables      (global, static) in RAM/HEAP 
7
Sketch uses 272416 bytes (26%) of program storage space. Maximum is 1044464 bytes.
8
Global variables use 27728 bytes (33%) of dynamic memory, leaving 54192 bytes for local variables. Maximum is 81920 bytes.
#6370850
Lesenswert?

Der Sketch verwendet 952067 Bytes (72%) des Programmspeicherplatzes. Das 
Maximum sind 1310720 Bytes.
Globale Variablen verwenden 36744 Bytes (11%) des dynamischen Speichers, 
290936 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 
Bytes.
C:\Users\john\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\2. 
6.1/esptool.exe  --chip esp32 --port COM13 --baud 921600 --before 
default_reset --after hard_reset write_flash -z --flash_mode dio 
--flash_freq 80m --flash_size detect 0xe000 
C:\Users\john\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0. 
4/tools/partitions/boot_app0.bin  0x1000 
C:\Users\john\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0. 
4/tools/sdk/bin/bootloader_qio_80m.bin  0x10000 
C:\Users\john\AppData\Local\Temp\arduino_build_937227/ESP32_App_Inventor 
.ino.bin  0x8000 
C:\Users\john\AppData\Local\Temp\arduino_build_937227/ESP32_App_Inventor 
.ino.partitions.bin


0xe000 -> boot_app0.bin
0x1000 -> bootloader_qio_80m.bin
0x10000 -> ESP32_App_Inventor.ino.bin
0x8000 -> ESP32_App_Inventor.ino.partitions.bin


Aber wie gesagt, das gilt für den ESP32
#6370856
Lesenswert?

Ansonsten ist das auch in der platform.txt in den Arduino Tiefen zu 
finden.

tools.esptool_py.upload.protocol=esp32
tools.esptool_py.upload.params.verbose=
tools.esptool_py.upload.params.quiet=
tools.esptool_py.upload.pattern="{path}/{cmd}" --chip esp32 --port 
"{serial.port}" --baud {upload.speed}  --before default_reset --after 
hard_reset write_flash -z --flash_mode {build.flash_mode} --flash_freq 
{build.flash_freq} --flash_size detect 0xe000 
"{runtime.platform.path}/tools/partitions/boot_app0.bin" 0x1000 
"{runtime.platform.path}/tools/sdk/bin/bootloader_{build.boot}_{build.fl 
ash_freq}.bin"  0x10000 "{build.path}/{build.project_name}.bin" 0x8000 
"{build.path}/{build.project_name}.partitions.bin"
tools.esptool_py.upload.pattern.linux=python "{path}/{cmd}" --chip esp32 
--port "{serial.port}" --baud {upload.speed}  --before default_reset 
--after hard_reset write_flash -z --flash_mode {build.flash_mode} 
--flash_freq {build.flash_freq} --flash_size detect 0xe000 
"{runtime.platform.path}/tools/partitions/boot_app0.bin" 0x1000 
"{runtime.platform.path}/tools/sdk/bin/bootloader_{build.boot}_{build.fl 
ash_freq}.bin"  0x10000 "{build.path}/{build.project_name}.bin" 0x8000 
"{build.path}/{build.project_name}.partitions.bin"
tools.esptool_py.upload.network_pattern={network_cmd} -i "{serial.port}" 
-p "{network.port}" "--auth={network.password}" -f 
"{build.path}/{build.project_name}.bin"
OP #6370860
Lesenswert?

Du meinst, die korrekten Adressen werden beim Flashen mit der 
Arduino-IDE angezeigt? Das wäre OK.

Was mich etwas verwirrt ist, daß Du da vier Unterprogramme hast. Ist das 
eine ESP32-Spezialität bzw. hängt das mit Deinem Programm zusammen?

Eigentlich will ich nur das eine Binary flaschen, was die IDE beim 
Export ausspuckt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren