Se avete necessitá di caricare firmware custom nel bootloader del vostro Espressif ESP82XX o ancheESP32, avete bisogno d’apprima di installare l’utility per comunicare con la ROM.
esptool.py
Appunto si tratta di una utility scritta in Python, open source e platform independent, che si occupa di comunicare con la ROM per il caricamento dei firmware nei chip Espressif ESP8266 & ESP32.
Possiamo installarlo in maniera semplificata, usando il gestore di pacchetti Python pypi, oppure manualmente. La differenza sostanziale nelle due modalitá sta nel fatto che, mentre tramite quella facilitata, installerete sempre l’ultima versione stabile, con quella manuale potrete installare anche versioni ancora in fase di sviluppo.
Installazione semplificata, mediante pypi
Installate l’ultima versione di Python, compatibile con il vostro sistema operativo; va bene sia la versione Python 2.7 oppure per la Python 3.4 (o successive).
Per installare l’ultima versione stabile di esptool.py, lanciate questo comando dalla vostra shell:
$ pip install esptool
A seconda di come avrete installato Python, potreste ricevere degli errori, nel caso provate anche questi comandi:
$ python -m pip install esptool
oppure
$ pip2 install esptool
Se l’installazione si conclude con successo, avrete esptool.py nel path degli eseguibili di Python, per cui riuscirete a lanciarlo mediante il comando:
$ esptool.py
Installazione manuale
Per un uso piú consapevole, laddove avrete bisogno di funzionalità ancora non presenti nella release stabile, potete installare esptool.py manualmente.
Quello che pypi fa in automatico per conto vostro, é la risoluzione delle dipendenze, ovvero scaricare ed installare altri pacchetti necessari a esptool.py per funzionare.
Esptool.py ha una dipendenza con il pacchetto pySerial v 3.0 (o piú recente).
Se decidete di installare l’eseguibile in modo che sia disponibile a tutto il sistema operativo (system-wide), il comando setup.py installerá per voi la libreria pySerial. Lanciate il comando di setup in questo modo:
$ python setup.py install
Se altrimenti volete installare esptool solo per il vostro utente, dovrete installarla manualmente lanciando il comando:
$ pip install pyserial
Per la piú recente ESP32, esptool.py installerá anche i tools espsecure.py
e espefuse.py
.
Come usare esptool.py ?
Per avere una lista dei comandi possibili, vi basta digitare:
$ esptool.py -h
Per avere un dettaglio delle opzioni possibili per un comando specifico, ad esempio write_flash:
$ esptool.py write_flash -h
Utilizzi piú comuni
In questa tabella riporto le opzioni piú utili per eseguire le operazioni piú comuni.
Porta Seriale | -p | Definisce la porta seriale da usare. Per Linux e Mac é opportuno specificarla ad esempio con -p /dev/ttyUSB0, su Windows -p COM1 |
Baud Rate | -b | Il default é 115200, ma é possibile impostare la velocitá della seriale con -b 9600. Nel caso si avessero dei problemi con 115200, é sempre possibile usare 74880 che é la velocitá standard usata da ESP8266 per effettuare output sul boot log. |
Scrivere la ROM con dei dati binari: write_flash
E’ possibile scrivere dati binari nella ROM dell’ESP via seriale mediante il comando write_flash:
$ esptool.py --port COM4 write_flash 0x1000 my_app-0x01000.bin
E’possibile usare piú indirizzi di memoria in un unico comando:
$ esptool.py --port COM4 write_flash 0x00000 my_app.elf-0x00000.bin 0x40000 my_app.elf-0x40000.bin
Potrebbe essere necessario specificare anche il parametro –chip, anche se esptool.py alla connessione fará un auto-detect del chip a cui si é collegati.
Leggere il contenuto della flash: read_flash
In molte occasioni é utile scaricare il contenuto della flash. Se ad esempio volessimo leggere dalla ROM tutto quello che viene contenuto fino a 2MB di spazio, il comando da avviare sará:
$ esptool.py -p PORT -b 115200 read_flash 0 0x200000 backup.bin
Cancellare la flash: erase_flash e erase_region
In alcuni casi puó capitare di aver necessitá di rimuovere il contenuto della flash. Per rimuovere tutto il contenuto della flash potete usare:
$ esptool.py erase_flash
Nel momento in cui, alternativamente, si ha lanecessitá di rimuovere una sola regione di memoria, si puó esare il comando:
$ esptool.py erase_region 0x20000 0x4000
Dove 0x20000 é l’indirizzo di partenza, mentre 0x4000 é la quantità di memoria da cancellare.
Leggere il MAC address dalla porta seriale: read_mac
Per ottenere il MAC-address del dispositivo, utile per identificarlo in rete, si puó usare il comando:
$ esptool.py read_mac
Identificare la ROM tramite SPI: flash_id
Utilizzando il comando:
$ esptool.py flash_id
E’ possibile ottenere alcune informazioni sulla ROM montata a bordo del chip. Fate riferimento a questa tabella per avere le specifiche dei produttori.
Conclusioni
Questo articolo vi insegna come installare e usare il tool esptool.py, utile a scrivere il firmware nella ROM del vostro chip Espressif. Continuate a seguirci sulla nostra pagina Facebook, commentate gli articoli e scriveteci per maggiori informazioni!
A presto con un nuovo articolo su V=IxR.it!
Ciao, mi chiamo Alessandro Lanni. Sono un professionista nel settore IT, ho iniziato la carriera da sviluppatore nel 2002. Mi appassiona l’elettronica amo condividere il know-how: “Cercare risposte e’ meglio che fare domande”
Una risposta.
Molto interessante la spiegazione, da poco mi sto applicando per l’uso di espertino , avendo un problema con esptool.py volevo capire perché,
Il fatto è che non ho capito come eseguire i comandi, come devo aprire una shell ? Con la finestra cmd di windows ?