ESP32 – Firmware flashen
Je kan relatief eenvoudig nieuwe firmware op de ESP8622 WiFi module plaatsen door middel van software (flasher) om het firmware bestand op de chip te plaatsen, hieronder een voorbeeld bij de ESP-01 module.
Wat heb je nodig?
Een firmware flasher:
1) ESP Flash Download Tool (flasher)
2) esptool (bootloader communicatie)
ESP32 geheugen overzicht
Je kan offset 0x00 gebruiken voor de hele module, je kan ook specifieke partities downloaden, bij het uploaden vanaf de Arduino IDE (met het blink voorbeeld) zien we:
1 2 3 |
0x1000 bootloader.bin 0x8000 partitions_singleapp.bin 0x10000 Blink.ino.bin |
Firmware flashen met ESP Flash Download Tool
Zet de ESP32 module in flash modus en reset het door de spanning even te onderbreken, open het programma en stel de volgende instellingen in:
Ps. bovenstaande is niet nodig met de DEV module!
1) Selecteer het firmware bestand BIN of IMG
2) SPI Speed 40Mhz
3) SPI Mode: DIO
4) Flash Size: 32Mbit (8MB)
5) de juiste COM poort
6) Baudrate: 921600
Ps. Heb je een “heel” firmware bestand (met bootloader, instellingen, e.d.) begin dan bij adres (offset) 0x00000.
Eenmaal alles ingesteld, klik je op “START” om de firmware weg te schrijven:
Shell screen:
Flashen van specifieke geheugen adressen
Open de software en vul de gegevens in op de volgende adressen, voorbeeld:
1 2 3 |
0x1000 bootloader.bin 0x8000 partitions_singleapp.bin 0x10000 arduino_blink.bin |
eenmaal alles ingesteld, klik je op “START” om de firmware weg te schrijven:
Ps. als je op de “CombineBin” knop drukt, worden alle bestanden samengevoegd in een “compleet” firmware bestand!
Firmware flashen met esptool.py
Het commando om “een volledige” firmware op de flash chip te zetten is als volgt:
python.exe esptool.py --chip esp32 --port COM4 --baud 921600 write_flash --flash_freq 80m --flash_mode dio --flash_size=4MB 0x000 esp32.bin
Output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
d:\Python27>python.exe esptool.py --chip esp32 --port COM4 --baud 921600 write_flash --flash_freq 80m --flash_mode dio --flash_size=4MB 0x000 esp32.bin esptool.py v2.0-dev Connecting... Uploading stub... Running stub... Stub running... Changing baud rate to 921600 Changed. Attaching SPI flash... Configuring flash size... Erasing flash... Took 0.00s to erase flash block Wrote 4194304 bytes at 0x00000000 in 61.9 seconds (541.8 kbit/s)... A fatal error occurred: Timed out waiting for packet content |
Je ziet een foutmelding, maar alles lijkt ok te werken!?
Ps. je kan het ook sneller uploaden met de optie -z of –compress, dan wordt de data gecomprimeerd overgeschreven:
python.exe esptool.py --chip esp32 --port COM4 --baud 921600 write_flash --compress --flash_freq 80m --flash_mode dio --flash_size=4MB 0x000 esp32.bin
Output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
d:\Python27>python.exe esptool.py --chip esp32 --port COM4 --baud 921600 write_flash --compress --flash_freq 80m --flash_mode dio --flash_size=4MB 0x000 esp32.bin esptool.py v2.0-dev Connecting... Uploading stub... Running stub... Stub running... Changing baud rate to 921600 Changed. Attaching SPI flash... Configuring flash size... Erasing flash... Compressed 4194304 bytes to 229853... Writing at 0x00038000... (100 %) A fatal error occurred: Timed out waiting for packet header |
Je ziet een foutmelding, maar alles lijkt ok te werken!?