ESP32 (14) – esp-idf v2 e come gestire le diverse versioni

luca 15/04/2017 1

Il giorno 6 Aprile Espressif ha rilasciato la versione 2.0 del framework esp-idf.

idf2-01

L’elenco completo delle nuove features e dei bug risolti è disponibile su Github, vediamo quelli più significativi (a mio parere ;)):

  • sono stati introdotti o resi stabili nuovi drivers per periferiche quali I2C, I2S, SPI Master, SDMMC
  • è stata introdotta la possibilità di lanciare un monitor seriale direttamente via comandi di build (make monitor)
  • l’uso di entrambi i cores (CPU e APP) è ora abilitata di default
  • sono stati rivisti e ampliati gli esempi a disposizione

Molto importante notare – per chi utilizza una toolchain dedicata – è che il nuovo framework richiede la versione 5 del compilatore GCC; è quindi necessario scaricare la toolchain aggiornata messa a disposizione da Espressif (ho anche aggiornato il mio tutorial relativo alla sua installazione).

Git repositories

Il codice sorgente del framework viene pubblicato su Github, repository di progetti basato sul software di version control Git. Per capire come poter gestire le differenti versioni del framework dobbiamo quindi fare una breve introduzione ai concetti principali di tale strumento.

Quanto segue non vuole essere un tutorial esaustivo sull’utilizzo di Git ma solo fornire le informazioni necessarie a capire i comandi che utilizzeremo in seguito. Per approfondire il funzionamento di Git, vi consiglio i tutorial di Atlassian.

In Git, il contenitore di un progetto o di un set di file si chiama repository. Tutte le informazioni necessarie a Git per gestire un repository sono memorizzate all’interno della sottocartella .git della cartella principale del progetto

idf2-02

Per creare un repository locale, è sufficiente entrare nella cartella del nostro progetto e digitare il comando:

git init

Se invece vogliamo copiare sul nostro PC un repository remoto (ad esempio il repository – ospitato su Github – che contiene il framework esp-idf) dobbiamo utilizzare il comando clone:

git clone <url>
E’ molto importante sapere che il comando clone copia localmente l’intero repository, incluse tutte le versioni dei files in esso contenuti.

E’ possibile che nello sviluppo di un progetto sia necessario utilizzare altri progetti, ad esempio librerie sviluppate da terze parti. In Git, grazie ai submodules, è possibile “includere” un repository Git come sottocartella di un altro repository. Il framework esp-idf utilizza i submodules per includere le librerie Wifi e Bluetooth, delle quali attualmente non è disponibile il codice sorgente.

Visivamente, i submodules hanno una diversa icona:

idf2-03

Con un click sull’icona, si viene reindirizzati al repository Github che contiene tale modulo:

idf2-04

Se il repository Git contiene uno o più submodules e si vuole clonare l’intero repository inclusi tali submodules va aggiunta l’opzione –recursive. Ecco che il comando per avere una copia locale del framework esp-idf diventa:

git clone --recursive https://github.com/espressif/esp-idf.git

Possiamo tenere allineata la copia locale con il repository remoto con il comando git pull. Se il repository contiene anche dei submodules, dobbiamo inoltre eseguire git submodule update:

idf2-05

 Branch e tags

Ogni sistema di version control consente di ramificare il proprio progetto, ad esempio per effettuare sviluppi paralleli o per introdurre nuove features e contemporaneamente risolvere i problemi (bugfixing) della versione attuale. In Git ogni ramificazione prende il nome di branch.

Git consente inoltre di “fotografare” lo stato del repository in un determinato istante di tempo e di assegnare a tale fotografia una etichetta (tag).

Sul sito Github, è possibile selezionare una specifica branch o tag dal menu a tendina in alto a sinistra:

idf2-06

Ad ogni versione del framework – sia stabile che RC – viene assegnata una specifica tag:

idf2-07

Possiamo quindi allineare la nostra copia locale del repository alla versione 2.0 con i comandi:

git checkout v2.0
git submodule update --init

Lavorare con diverse versioni

E’ possibile avere la necessità di lavorare contemporaneamente con più versioni del firmware, ad esempio perché un nostro progetto non è compatibile con la versione 2 che invece stiamo utilizzando per un nuovo sviluppo.

Tutti gli script di compilazione del framework fanno riferimento alla cartella definita nella variabile di ambiente IDF_PATH:

idf2-08

Possiamo quindi creare due cartelle locali sul nostro PC e utilizzare i comandi git sopra spiegati per clonare in tali cartelle due diverse versioni del repository. Sarà sufficiente modificare il valore della variabile di ambiente puntando ad una o all’altra cartella per avere a disposizione le versioni del framework esp-idf che ci servono.

One Comment »

  1. Mauro 21/04/2017 at 10:21 - Reply

    Ciao – Grandiosi tutorial su un chip nuovo (chiaro e preciso, come non se ne trovano in giro).
    Potrei chiederti una cosa? Puoi far vedere un esempio in access point (lo so che la differenza sta nella macro – mettere Ap invece che STA) ma un piccolo server che risponde a richieste GET (parametro passato con & nell’URL)
    Grazie e continua così: sei MITICO!!!

Leave A Response »

Questo sito usa i cookie per poterti offrire una migliore esperienza di navigazione maggiori informazioni

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi