Forum: Mikrocontroller und Digitale Elektronik ESP: An welche Adresse flashen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Lars N. (larsn)


Bewertung
0 lesenswert
nicht 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?

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht 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.

: Bearbeitet durch User
von John P. (brushlesspower)


Bewertung
0 lesenswert
nicht lesenswert
Zumindestens beim ESP32 steht in der Arduino Umgebung ganz genau welches 
Binary an welche Adresse gehört und wo das Binary zu finden ist.

habe mit diesen Informationen schon des öfteren den Serial flasher 
genutzt.

von Lars N. (larsn)


Bewertung
0 lesenswert
nicht 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.

von John P. (brushlesspower)


Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User
von John P. (brushlesspower)


Bewertung
0 lesenswert
nicht 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"

von Lars N. (larsn)


Bewertung
0 lesenswert
nicht 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.

von John P. (brushlesspower)


Bewertung
0 lesenswert
nicht lesenswert
Beim ESP32 werden immer diese 4 Binarys mit Arduino geflasht.

Beim ESP8266 scheint es nur ein Binary zu sein an Adresse 0x0 wie 
bereits von stefanus gesagt.

steht alles in der platform.txt

von Lars N. (larsn)


Bewertung
0 lesenswert
nicht lesenswert
John P. schrieb:
> Beim ESP8266 scheint es nur ein Binary zu sein an Adresse 0x0 wie
> bereits von stefanus gesagt.
>
> steht alles in der platform.txt

Na, dann ist ja alles geritzt! In die Datei schau ich mal rein.

Vielen Dank euch beiden!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.