SDK per ESPertino: guida all’installazione

SDK per ESPertino: guida all’installazione

ESPertino è una scheda di prototipazione rapida particolarmente orientata alle applicazioni IoT. Sappiamo che tra i suoi punti di forza risiede la possibilità di essere programmata tramite l’ambiente Arduino IDE, uno strumento di semplice e immediato utilizzo anche per i non specialisti. In questo articolo ci occuperemo dell’ambiente di sviluppo ESP-IDF, l’SDK ufficiale per tutte le schede basate sul modulo ESP32. Anche se meno semplice rispetto ad Arduino IDE, l’SDK permette di sfruttare efficacemente le risorse hardware e software del modulo ESP32, consentendo il pieno controllo delle funzionalità offerte dalla scheda ESPertino.

Introduzione

Quando si utilizza una scheda di prototipazione rapida potente e versatile come ESPertino, l’approccio più comunemente seguito è quello di arrivare nel più breve tempo possibile a un prototipo dell’applicazione funzionante, qualcosa che possa essere utilizzata come “demo” del prodotto finale. In questo processo l’ambiente di sviluppo utilizzato esercita un ruolo fondamentale, ottimizzando e riducendo i tempi di sviluppo dell’applicazione. L’ambiente Arduino IDE, opportunamente esteso per supportare il modulo ESP32, è sicuramente in grado di soddisfare pienamente questi requisiti. In realtà, Arduino IDE e il suo plugin per ESP32 rappresentano un’astrazione (una “virtualizzazione” come potremmo dire oggi) di un sistema che in realtà (dietro le quinte e in modo del ltutto trasparente rispetto all’utente) viene programmato utilizzando strumenti software come l’SDK e il kernel FreeRTOS. Per meglio comprendere questa “stratificazione” dei livelli software disponibili sul modulo ESP32 possiamo fare riferimento alla Figura 1.

Figura 1: i differenti livelli software presenti nel modulo ESP32

Il livello più basso della gerarchia è rappresentato dall’hardware, ovvero il modulo ESP32 equipaggiato con un microcontrollore Tensilica Xtensa LX6 nella versione dual core. Oltre alla MCU e alle sue periferiche, questo livello include alcune funzioni mappate direttamente dal produttore nella memoria ROM: questo codice gestisce funzionalità di basso livello del modulo (ad esempio gli stack Bluetooth e Ethernet) e viene invocato direttamente dagli strati superiori (in particolare l’SDK). Immediatamente sopra l’hardware “poggia” il sistema operativo, più precisamente il kernel FreeRTOS adattato per gestire l’architettura a doppio core dell’LX6. Il kernel fornisce il supporto per tutte le operazioni relative alla creazione, cancellazione, sincronizzazione e comunicazione tra task. Il kernel non fornisce invece alcun supporto per la gestione delle periferiche (SPI, I2C, I2S, DAC/ADC, GPIO e altro ancora): questo compito è a carico dell’SDK. L’SDK mette infatti a disposizione dello sviluppatore tutti i driver (che spesso includono la creazione di uno o più task FreeRTOS) per la gestione di alto livello delle periferiche, incluso il Bluetooth BLE e il WiFi. Le chiamate alle funzioni di basso livello in ROM sono dunque “annegate” nell’SDK e lo sviluppatore non deve preoccuparsene: è sufficiente fare riferimento alla documentazione dell’SDK, in cui sono riportate tutte le API, i tipi e le costanti da utilizzare a livello applicativo. Arduino IDE occupa il livello più alto della gerarchia software, fornendo la massima astrazione rispetto sia all’hardware sia ai livelli software sottostanti. Utilizzando ad esempio le librerie di base dell’ambiente (come ad esempio la libreria Serial) l’utente non trova alcuna differenza, a livello di programmazione dello sketch, tra un sistema hardware basato su un microcontrollore AVR e una board basata sul modulo ESP32.

L’SDK ESP-IDF, anche se meno “user friendly” rispetto ad Arduino IDE, merita comunque una certa attenzione e in alcuni casi si dimostra insostituibile. E’ ad esempio possibile gestire alcune operazioni non altrimenti eseguibili come:

  • gestione delle partizioni sulla memoria flash: si può decidere tra destinare l’intera memoria flash all’applicazione, oppure dividerla in due segmenti in modo tale da gestire l’aggiornamento del programma applicativo con la tecnica OTA (aggiornamento “live”, senza richiesta di passaggio per il bootloader);
  • gestione di funzionalità avanzate del modulo ESP32, come ad esempio la modalità a bassissimo assorbimento (deep sleep);
  • possibilità di modificare e ricompilare la libreria FreeRTOS in modo da personalizzare il comportamento del kernel (Arduino IDE utilizza tale libreria ma dal suo ambiente non è possibile rigenerarla);
  • possibilità di personalizzare i parametri di configurazione e le funzionalità di un’applicazione tramite il comando make menuconfig (di cui parleremo più avanti).

In Figura 2 possiamo osservare lo schema a blocchi delle operazioni necessarie per eseguire l’installazione dell’SDK. Per semplicità faremo riferimento all’installazione in [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2757 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend