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?
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.
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.
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. |
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
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"
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.
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
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.