Il Cortex M4 per applicazioni IoT

Internet delle Cose sta pilotando la nuova rivoluzione tecnologica. Decine di miliardi di oggetti connessi a Internet forniranno informazioni di ogni genere, con applicazioni che spazieranno dall’industriale all’automotive, dal medicale alla domotica, dall’agricoltura alle smart city, dal fitness alle applicazioni consumer. Affinché le cose possano connettersi alla rete è necessario che siano smart, ovvero dotate di intelligenza. Ma quanto intelligenti? La risposta dipende dall’applicazione. Nella visione classica le cose si limitano a rilevare alcune grandezze del mondo circostante, impacchettarle nel modo più conveniente, e quindi spedirle nel Cloud dove queste grandezze verranno opportunamente analizzate e interpretate. Tutta l’elaborazione è demandata alla nuvola, e il nodo deve semplicemente acquisire quanti più dati possibili e spedirli, in modo che non ci sia perdita di informazione. Questa visione del nodo presenta due problemi importanti, il primo legato al consumo di potenza, il secondo alla banda di trasmissione dei dati. Acquisire dati di continuo e spedirli è un processo che consuma energia, e nelle applicazioni alimentate a batteria, ad esempio, può rappresentare un problema serio. Analogamente l’invio di un’enorme mole di dati richiede un canale di trasmissione con una banda elevata. Oltre a rappresentare un costo più alto, una banda elevata in trasmissione vuol dire alti consumi, imponendo così dei limiti alle applicazioni in cui non vi è abbastanza disponibilità di energia. Non tutte le applicazioni richiedono un monitoraggio continuo delle grandezze, ma ci sono casi in cui è fondamentale effettuare misure accurate nel tempo, come le applicazioni medicali, dove il monitoraggio dei parametri vitali del paziente con dispositivi portatili deve essere continuo, oppure l’Industria 4.0, con la diagnostica continua di macchinari complessi, per il rilevamento tempestivo dei malfunzionamenti. Ecco dunque evolvere il concetto di nodo verso una maggiore intelligenza a bordo, che consenta non solo di acquisire le grandezze, ma di effettuare una prima analisi. Dotato di maggiore intelligenza, il nodo non si limita più a trasferire dei dati grezzi, ma è in grado di trasformare i dati in informazione e trasmettere così solo quelle informazioni che sono rilevanti alla funzione del nodo. Effettuare parte dell’elaborazione che prima veniva svolta nel Cloud comporta una maggiore potenza di calcolo nel nodo. Di nuovo si deve arrivare a un compromesso con il consumo di energia; il microcontrollore deve essere a consumo ultra-basso, ma ciò potrebbe non essere sufficiente e altri meccanismi potrebbero essere utili a ridurre il consumo senza compromettere la qualità dell’informazione.

Mcu a basso consumo

Un’elevata percentuale di dispositivi connessi alla rete saranno alimentati a batteria, primaria o ricaricabile. In questi casi un basso consumo consente, a parità di batteria, un tempo di vita più lungo, o, a parità di vita, una batteria di dimensioni più ridotte. Nel caso di battere ricaricabili, diminuisce il numero di ricariche nel tempo, andando a migliorare la gestione del sistema. L’oggetto potrebbe essere dotato anche di un dispositivo per la raccolta dell’energia da fonti alternative e di un sistema di accumulo; data l’elevata discontinuità che possono presentare le fonti alternative è evidente come un basso consumo possa favorire periodi operativi più lunghi. La vita di un oggetto può essere in realtà molto noiosa, caratterizzata da lunghi periodi di attesa inframmezzati da momenti di attività in cui l’oggetto acquisisce le grandezze fisiche e le invia nella nuvola. Ad esempio, in agricoltura, alcuni sensori potrebbero essere specializzati nel rilievo della crescita delle piante, oppure nella verifica del punto di maturazione della frutta o degli ortaggi. Chiaramente, in questo caso, il sensore sarà silente per la maggior parte del tempo. Alla luce dei diversi scenari che si possono presentare, quali sono dunque i parametri da considerare quando si vuole scegliere un microcontrollore a basso consumo? Il consumo in Active Mode è sicuramente il parametro fondamentale, ma non basta. L’oggetto potrebbe essere inattivo per lunghi periodi, in questo caso è conveniente mettere il sistema in uno stato dormiente, e allora diventa fondamentale il consumo in stand-by. I due estremi del consumo di corrente sono Active Mode, durante il quale il microcontrollore opera a piena potenza, e Shutdown, durante il quale non viene effettuata alcuna operazione. Nel mezzo possono esserci altre modalità che comportano un funzionamento con prestazioni ridotte al fine di abbassare il consumo di potenza. Esistono poi altri meccanismi di cui il dispositivo può essere dotato che portano a una riduzione di consumo complessiva del sistema in cui il microcontrollore viene utilizzato. Ad esempio un’unità di clock flessibile oppure l’integrazione di un’unità di power management che utilizzi convertitori switching ad alta efficienza. Per le varie modalità di funzionamento i costruttori definiscono diverse condizioni operative per cui diventa difficoltoso orientarsi. Esistono tuttavia degli istituti, come l’Embedded Microprocessor Benchmark Consortium, che utilizzano dei metodi standard; i punteggi assegnati da questi istituti danno un’indicazione affidabile sul consumo di potenza del microcontrollore. Analog Devices ha recentemente annunciato un nuovo membro della famiglia di microcontrollori per IoT, l’ADuCM4050, un Cortex M4 progettato e ottimizzato per un consumo ultra basso. Infatti in Active Mode il consumo è inferiore a 40 µA/MHz mentre in Hibernate, con ritenzione della memoria, consuma meno di 680 nA. La tensione di alimentazione va da 1,74 a 3,6 V, consentendo l’utilizzo di una batteria a singola cella. Il dispositivo è anche dotato di una unità di power management interna, che comprende un Ldo e un regolatore buck ad alta efficienza, per generare la tensione a 1,2 V interna. Sono previste quattro modalità di funzionamento, Active, Flexi, Hibernate e Shutdown, che consentono di ottimizzare il consumo di energia a seconda dello stato del sistema. Il micro raggiunge il ragguardevole punteggio di 203 nel test ULPBench dell’Eembc.

SensorStrobe

SensorStrobe è un meccanismo che consente di risparmiare energia, presente sui microcontrollori ultra low power di ultima generazione di Analog Devices, in particolare sulla famiglia Cortex M3, ADuCM302x, e sul Cortex M4, ADuCM4050. Il meccanismo consente l’acquisizione di campioni da sensori sincronizzata con una base tempi accurata. Tradizionalmente il campionamento è controllato dal software del microcontrollore tramite un impulso di trigger che serve a collezionare i dati a specifici intervalli di tempo. L’approccio tradizionale presenta due problemi: il primo è l’impiego di software dedicato, che comporta un aumento del consumo di corrente; il secondo è legato al fatto che la generazione del trigger dipende dal software e pertanto potrebbe essere soggetta a deriva col passare del tempo. SensorStrobe risolve questi problemi in quanto: lavora in modalità Hibernate, con un risparmio sul consumo pari a un fattore 10; dopo il setup non è richiesto l’intervento del software; la generazione del trigger è indipendente dal software, e pertanto non possono esserci derive dovute all’esecuzione dei programmi. Oltre all’accelerazione lungo i tre assi, l’ADXL363 fornisce la temperatura ed è dotato di un canale Adc ausiliario. Il dispositivo è provvisto di una memoria Fifo che può contenere fino a 512 campioni. All’accensione l’Mcu configura il sistema in modo tale da generare un trigger a intervalli di tempo definiti per il campionamento dei dati del sensore e poi si pone in modalità Hibernate. Utilizzando il trigger, l’ADXL363 colleziona i campioni in modo autonomo e li immagazzina nella Fifo. Quando la Fifo raggiunge un livello di riempimento prestabilito genera un interrupt verso il micro, che esce dallo stato Hibernate, acquisisce velocemente i campioni dal sensore, li salva nella memoria di sistema e quindi, se non sono richieste altre operazioni, torna nello stato Hibernate. In questa modalità di funzionamento il consumo di energia è 10 volte più piccolo rispetto alla modalità in cui il micro è sempre attivo.

La Cyber Security

Un altro aspetto fondamentale è la sicurezza informatica. Da un lato si vogliono trasmettere dati che non siano intercettabili da malintenzionati, e in questi casi si ricorre a tecniche di crittografia. Un acceleratore hardware per la crittografia aiuta a ridurre i tempi di esecuzione, salvaguardando la capacità di calcolo del processore, ma anche il consumo. La sicurezza implica anche la salvaguardia delle proprietà intellettuali, e l’impossibilità a riprogrammare il sistema da parte di hacker. Il microcontrollore deve pertanto essere equipaggiato con sistemi di protezione di lettura e scrittura della memoria. Per quanto concerne la sicurezza informatica l’ADuCM4050 è provvisto di un acceleratore hardware per la crittografia. Questa funzione consente di ridurre drasticamente i cicli macchina per crittografare i dati. Ad esempio, volendo realizzare un Aes-128, in software sono richiesti 1728 cicli, mentre l’acceleratore richiede soltanto 40 cicli, senza intervento del processore. Il processore supporta lo standard Aes, con crittografia a chiave simmetrica a 128 e 256 bit, nelle diverse modalità Ecb, Cbc, Ccm, Ctr. Per quanto riguarda l’autenticazione il dispositivo supporta il codice Ceb-Mac, che è un tecnica per costruire un codice di autenticazione di messaggio usando un cifrario a blocchi. Per la verifica dei dati ricevuti, per stabilire che non siano stati alterati, viene fornita la funzione Sha-256. Infine viene fornito un generatore di numeri casuali, utile nel generare valori imprevedibili per le comunicazioni sicure. Per quanto riguarda la protezione dagli accessi il dispositivo è protetto sia in lettura, per la protezione del codice e dei dati, che in scrittura, al fine di evitare riprogrammazioni non autorizzate. Utenti non autorizzati non possono avere accesso alla Flash, alla Ram, o ai registri del processore e delle periferiche.

Il Cortex M4 di Analog

 Il core è un Cortex M4 a 52MHz, con unità Floating Point e unità di protezione della memoria. La memoria Flash è di 512 kB ed è provvista di un sistema di correzione degli errori. 128 kB di Sram configurabili, con controllo di parità, di cui 4 kB utilizzabili come cache. La Sram può essere ripartita in 32kB per le istruzioni e 96 kB per i dati. Due oscillatori interni consentono di generare le due frequenze di clock a 26 MHz e 32 kHz. Se maggiore precisione e stabilità sono richieste dall’applicazione, è possibile connettere dei cristalli esterni. Il sistema è anche provvisto di Pll con divisori programmabili per generare frequenze che non siano sottomultiplo di 26 MHz. Per quanto riguarda l’affidabilità il sistema è provvisto di monitoraggio delle tensioni, sia quella di batteria che della tensione regolata. Il Watchdog, connesso all’oscillatore a bassa frequenza, consente di recuperare da situazioni di stallo del software. Come già accennato precedentemente, la memoria Flash è provvista di Ecc mentre sulla Sram c’è il controllo di parità che consente di rilevare eventuali errori casuali. Inoltre sul contenuto della Flash viene effettuato un controllo a ridondanza ciclica prima dell’esecuzione del programma. Il Crc può essere inoltre calcolato per verificare l’integrità della Sram e della Flash in qualsiasi momento. Il dispositivo è inoltre provvisto di tutta una serie di periferiche digitali per potersi connettere con dispositivi esterni. In particolare il dispositivo ha due Real Time Clock, uno dei due denominato Flex_Rtc che supporta la modalità SensorStrobe per la sincronizzazione con un sensore esterno. A completare l’architettura c’è la sezione analogica, che comprende un convertitore analogico digitale di tipo Sar a 12 bit, 1,8 Msps. I canali analogici sono otto, configurati come single ended, e la conversione può avvenire nelle due modalità “single cycle” o “auto cycle”. Auto Cycle consente di ridurre l’impegno del micro durante le conversioni. Sono disponibili anche dei comparatori digitali, un sensore di temperatura e un voltage reference di precisione.

Pubblica i tuoi commenti