MPLAB®Harmony: il Framework targato Microchip

In questo testo affronteremo l’ambiente di sviluppo MPLAB di Microchip, soffermandoci soprattutto sul nuovo tool di sviluppo MPLAB® Harmony Frameworks.

Questo ambiente di lavoro è il primo nel mercato firmware ad integrare la cessione di licenza per vendita e supporto hardware, driver e librerie per il sistema operativo real time. Ad ora Harmony integra frame di terze parti quali: FreeRTOS, wolfSSL o Express Logic, diminuendo le difficoltà di sviluppo e riducendo drasticamente i bug in fase di scrittura codice.

Nelle attività di sviluppo odierne, dove l’elettronica programmabile ormai ha posto le proprie radici in quasi ogni settore, si ha la necessità di rendere il proprio codice ottimizzato e di facile implementazione, risparmiando quindi tempo e denaro. Microchip, azienda molto conosciuta a livello mondiale per la progettazione e la realizzazione dei PIC, ha da sempre fornito metodologie di sviluppo molto avanzate: MPLAB, MBPLAB IDE e MPLAB X. Oltre ad aver continuato la propria esperienza nel campo dei compilatori, l’azienda americana pone molta importanza all’implementazione dei listati a blocchi, o di tipo framework.

Figura 1: La serie PIC32MZ è una delle due famiglie che disporranno già da subito dei benefici framework, il contenitore è disponibile solo in formato SMD, quindi con spaziature tra reofori molto ridotte

Figura 1: La serie PIC32MZ è una delle due famiglie che disporranno già da subito dei benefici framework, il contenitore è disponibile solo in formato SMD, quindi con spaziature tra reofori molto ridotte

FRAMEWORK: DI COSA SI TRATTA?

Oggigiorno spesso sentiamo parlare di framework ma, a parte gli utenti molto navigati in ambito programmazione, cosa intendiamo quando ci riferiamo a questo sconosciuto? In ambito informatico, o per essere precisi nel campo della realizzazione del software, un framework è un’ architettura di supporto mediante la quale un applicativo può essere progettato e realizzato. Coniuga al proprio interno una serie di strumenti, codici e librerie utilizzabili dal programmatore durante la stesura del sorgente, collegabili tra loro e adatte a rendere più veloce, rapida ed efficiente la stesura del listato. L’utilizzo del framework impone al programmatore una precisa scaletta per lo sviluppo, permettendo quindi anche a persone neofite nel progetto in fase di realizzazione, di poter rapidamente trovare le varie parti del sorgente sempre nel medesimo posto, avendo a disposizione gli stessi strumenti in qualsiasi applicativo si abbia intenzione di utilizzarli.

A COSA SERVE?

Lo scopo di un framework può essere riassunto in poche parole: rendere più leggera la vita del programmatore. Tradotto letteralmente dall’inglese, il termine “framework” significa struttura, che di per sé è appunto la sua funzione, ovvero sottolinea il fatto che il progettista dovrà solamente preoccuparsi del contenuto dell’applicazione, tralasciando la riscrittura di codice già utilizzato per compiti simili. Il fatto di utilizzare un framework deriva dalla costante crescita della complessità dei sistemi odierni: via via che è aumentata la quantità di operazioni effettuabili da un PIC, di conseguenza ne è aumentata anche la complessità del firmware, per cui preoccuparsi di qualsiasi operazione non risulta cosa facile.

Per portare un esempio si potrebbe pensare ai PIC equipaggiati di interfaccia USB: siccome l’implementazione per il collegamento al PC è uno degli impieghi di questo collegamento, risulterebbe scomodo ogni volta dover ricreare una classe apposita che si occupi della questione; utilizzando invece l’apposito “mattoncino” già presente nell’ambiente di sviluppo, basterà solamente occuparsi di dichiarare la classe e definirla, lasciando al compilatore il compito di svolgere la scrittura del listato di “contorno”. Questa tecnologia software definisce un insieme di classi astratte e le varie relazioni tra di esse. Istanziare il sistema significa fornire l’implementazione alle classi lasciando la possibilità di ereditare le relazioni tra classi.

figura 2: La procedura guidata di identificazione del progetto dà la possibilità al programmatore di eseguire e controllare passo dopo passo tutti i parametri fondamentali per la stesura dello stesso, evitando fastidiose dimenticanze necessarie in fase di compilazione.

Figura 2: La procedura guidata di identificazione del progetto dà la possibilità al programmatore di eseguire e controllare passo dopo passo tutti i parametri fondamentali per la stesura dello stesso, evitando fastidiose dimenticanze necessarie in fase di compilazione

MPLAB HARMONY

Harmony risulta ad ora essere uno dei più completi strumenti di sviluppo framework presenti nel mercato: è uno dei primi ad integrare la cessione della licenza, per vendita, e supporto middle-hardware, inoltre permette la gestione di driver e la possibilità di integrare librerie per il sistema operativo real time. Ad oggi questo ambiente include software di terze parti quali: InterNiche, FreeRTOS e wolfSSL. Il risultato finale? Gli sviluppatori diminuiscono drasticamente il codice da realizzare, i possibili bug e il “time to market”. Studi industriali hanno dimostrato che il firmware obbliga un’azienda nella progettazione elettronica a destinare il 60% del proprio tempo di realizzazione alla stesura del codice. Il progetto, dunque, impegna i progettisti nell’utilizzo di innumerevoli ambienti di sviluppo, la cui compatibilità non è testata, obbligando il “team” ad appoggiarsi spesso e volentieri ai centri d’assistenza.

Il nuovo framework MPLAB® Harmony di Microchip riduce i tempi di sviluppo e i costi, fornendo una singola fonte di codice, integrata, gestita e flessibile, interoperabile, debuggato e testato da Microchip. Inoltre, Harmony offre un'architettura modulare che consente una efficiente integrazione di diversi driver, middleware e librerie, offrendo anche un ambiente RTOS-independent. Queste fasi di pre verifica e integrazione non solo velocizzano lo sviluppo, ma favoriscono ed incrementano il riutilizzo. Dal lato dell’hardware, il framework Harmony rende ancora più facile la portabilità del codice e la migrazione attraverso tutti i microcontroller PIC32 di Microchip. Inoltre, utilizzando questa unica fonte sia per il codice autoprodotto che per quello di terze parti (sia gratuito che premium) supportato da Microchip, i progettisti possono ridurre drasticamente i loro tempi di risposta alle richieste in continua variazione del mercato finale.

Figura 3: Identificazione del navigation menù per i framework di sistema: è facile capire come la navigazione all’interno sia alquanto semplice e rapida

Figura 3: Identificazione del navigation menu per i framework di sistema. E' facile capire come la navigazione all’interno sia alquanto semplice e rapida

I punti di forza di Harmony

MPLAB Harmony è immediatamente disponibile e il framework di base è gratuito. La prima uscita fornisce il supporto per le nuove famiglie PIC32MZ, oltre a quello già destinato alle famiglie PIC32MX. Il pieno supporto di tutte le classi di PIC32 è stato pianificato per l’uscita della prossima release di versione, attesa per la fine del 2014. Una volta scaricata, si accede ad un menu modulare di opzioni software, gratuite e premium, anch’esse disponibili da subito. La lista in espansione dell’offerta iniziale include FreeRTOS di Real Time Engineers Ltd. e OPENRTOS di Wittenstein High Integrity Systems; uno stack TCP/IP di InterNiche Technologies ed una CyaSSL Embedded SSL Library di wolfSSL e molti altri ancora. Gli aspetti innovativi e più importanti dell’ambiente di sviluppo sono:

  • integra un set in espansione di middleware, driver, librerie e RTOS;
  • semplifica lo sviluppo del codice MCU 32-bit, riducendo i bug di integrazione e velocizzando la progettazione;
  • l’architettura modulare consente una efficiente integrazione in una piattaforma RTOS-independent;
  • fornisce il download e il supporto per una vasta gamma di software interoperabili e pre collaudati;
  • MPLAB Harmony fornisce un nuovo approccio di sviluppo del software che è una assoluta novità nel settore embedded: nessun altro fornisce un unico e completo framework di sviluppo del firmware, dove i progettisti possono sia fare download che trovare aiuto per una così ampia gamma di software pre collaudati ed interoperabili.

Collaborazione di Terze Parti

Harmony nasce come framework versatile e di facile impiego. L’idea di base di un sistema di questo tipo è che sia modulare, ovvero che sia implementabile con porzioni di codice precedentemente realizzate. È facile intuire che una partnership tra aziende risulta la cosa più sensata ed efficiente per rendere l’ambiente di sviluppo più versatile e di comoda implementazione. Al momento della redazione di questo articolo i “Third-Party Partners” sono sostanzialmente sei e si differenziano l’uno dall’altro in base alle funzionalità che implementano:

  • Express Logic: Express Logic cerca di inglobare le funzionalità di un RTOS nell’IDE. Il vantaggio del Real-Time Operating System è che è progettato per essere implementato facilmente senza trascurare le elevate prestazioni a disposizione, integrato direttamente in MPLAB Harmony;
  • FreeRTOS: è un mini kernel semplice, conciso e soprattutto portabile, che offre la possibilità di lavorare in real time sul sistema host, in ambienti embedded o meno; distribuito secondo licenza GPL, è quasi tutto scritto in linguaggio C. La caratteristica più importante di FreeRTOS è, come si è detto, la portabilità, che in pratica si traduce nel porting aperto verso diverse architetture di microcontrollori, tra le quali proprio i PIC di Microchip;
  • InterNiche Technologies: InterNiche ha lavorato a stretto contatto con gli ingegneri Microchip per realizzare un codice efficiente per la comunicazione di rete. Implementa all’interno del microcontrollore tutte le specifiche che permettono l’utilizzo del protocollo TCP/IP all’interno di una rete, fornendo una elevata compatibilità con la maggior parte delle piattaforme;
  • SEGGER Microcontroller System: SEGGER aggiunge ad Harmony embOS e emWin, due RTOS già da tempo disponibili sul mercato, garantendo anche una piena compatibilità per tutte le librerie grafiche disponibili;
  • WITTENSTEIN High Integrity Systems: OPENRTOS permette alte prestazioni utilizzando le risorse a disposizione al minimo. Utilizzando l’integrazione con Harmony si avrà la realizzazione del progetto nel più breve tempo possibile;
  • wolfSSL: wolfSSL mette a disposizione forse una delle librerie più interessanti, ovvero la gestione della connessione sicura mediante SSL. Con questa profonda integrazione il framework riduce i rischi di errore e i tempi di realizzazione, fornendo all’utente finale un tunnel di comunicazione sicuro ed affidabile immune da eventuali orecchie indiscrete.

Disponibilità

MPLAB Harmony è già disponibile online per il download, e le funzionalità di base sono fruibili gratuitamente. La prima release del sistema fornisce supporto solamente per le famiglie PIC32MZ e PIC32MX. Il pieno supporto per tutta la famiglia PIC32 è pianificato nel rilascio della prossima versione, che comunque dovrebbe essere entro fine anno. Una volta scaricato e installato MPLAB, sarà disponibile un menu a tendina modulare, con elencate le porzioni di software gratuite e quelle di natura premium. Il numero di pacchetti disponibili inizialmente prevede una serie di RTOS, il supporto per l’SSL e il TCP/IP. Per identificare la versione del framework più efficiente in base alle proprie necessità è disponibile in rete l’MPLAB® Harmony Online Design Center. In aggiunta il sito mette a disposizione una collezione completa di FAQ facilmente consultabili e molto interessanti per il primo progetto.

I PRIMI PASSI CON HARMONY

Harmony framework è un'estensione di MPLAB X IDE, quindi una delle prerogative per cominciare la realizzazione del primo progetto è quella di aver precedentemente installato nel sistema tutti i componenti software necessari. Quindi, prima di proseguire con la stesura del primo listato e l’eventuale configurazione del microcontrollore, è buona norma verificare la completa disponibilità del seguente software: MPLAB X IDE, MPLAB XC32 C/C++ Compiler e PIC32 development platform.

Per avviare la funzione guidata per il nuovo progetto in Harmony è necessario prima creare un progetto di base in MPLAB X IDE, avendo comunque cura che le dichiarazioni di base per un qualsiasi progetto PIC siano presenti. Senza dilungarsi in righe e righe che potranno sembrare una ripetizione inutile, si procede con la creazione della cartella del progetto, si passa dunque alla creazione del nuovo progetto in X IDE assegnando come percorso di lavoro la directory appena creata, si passa poi alla stesura del main file, il main.c, con la dichiarazione della funzione standard, per poi arrivare alla stesura del system configuration file dipendente dal microcontrollore in uso.

IDENTIFICARE LE LIBRERIE INTERESSATE

Il punto di forza del framework sono le librerie che vengono messe a disposizione del programmatore, risulta quindi importante individuare per la stesura del listato quali sono necessarie al corretto funzionamento dello stesso. Una volta in operatività con MPLAB X IDE, si è pronti per cominciare a realizzare l’applicativo per il sistema che si ha intenzione di realizzare. Il framework sostanzialmente si divide in tre sezioni:

  • libreria di sistema: alcune periferiche, come le porte di Input/Output e gli Interrupt del controllore, supportano tutte le risorse messe a disposizione dagli altri moduli applicativi. Queste risorse sono realizzate per eliminare i conflitti tra i driver e il middleware, garantendo alla propria applicazione una stesura più facile;
  • libreria delle periferiche: se nessuna tra le librerie di sistema o i driver del dispositivo permette di accedere a tutte le funzionalità di cui si ha bisogno, ecco che la libreria delle periferiche (o PLIB) viene in soccorso al programmatore. Mediante questa funzionalità, l’interfacciamento con il dispositivo è al più basso livello conosciuto, il ché richiede al programmatore una maggiore attenzione per le modifiche che verranno apportate in fase di compilazione. D’altro canto, però, ogni modulo che si interfaccia con PLIB sarà proprietario dell’esecuzione in corso, dando un controllo pieno al sistema;
  • libreria driver: essendo Harmony un sistema modulare o “a stack” è chiaro che alcuni moduli dipendono da altri, che a loro volta sono consentiti solamente se in esecuzione se ne presentano degli altri. Generalmente, però, il driver di un dispositivo dipende solamente dalla libreria della periferica e dall’esecuzione di alcuni pacchetti di sistema. Nella libreria saranno messi a disposizione tutti gli utensili necessari per l’interfacciamento codice-macchina.

Aggiungere un modulo al progetto

Una volta individuata la libreria interessata, è giunto il momento di inserirla nel progetto. Nella maggior parte dei casi sono forniti i sorgenti delle librerie, quindi la cosa più semplice da fare non è altro che copiare il codice e inserirlo all’interno del listato. Se ciò non è agevole, Harmony copia la libreria direttamente all’interno della cartella del progetto. La cosa più efficiente da fare in questi casi è creare un sotto-progetto in modo da poter compilare singolarmente ogni parte dello stesso.

Configurare il modulo

Quasi tutte le librerie a disposizione richiedono la specifica di un ingente numero di parametri di configurazione in fase di programmazione. La maggior parte delle volte i valori di default sono ottimali per il progetto in corso, ma spesso l’autore preferisce adattare il comportamento del codice alle proprie esigenze. Ci sono invece altri parametri, definiti critici, che vengono forniti senza valore standard, appunto perché il programmatore ponga attenzione nella scelta dello stesso. Per identificare che la configurazione supporti ogni singola libreria è bene leggere attentamente le specifiche in dotazione ma, una volta individuato il valore opportuno, basterà inserire il parametro all’interno del file system_ config.h. Un esempio dello stesso è visibile nel Listato 1.

Code: system_config.h #ifndef _SYSTEM_CONFIG_H #define _SYSTEM_CONFIG_H /* Prevent superfluous PLIB warnings. */ #define _PLIB_UNSUPPORTED /* TMR Driver Build Options */ #define DRV_TMR_INSTANCES_NUMBER 1 #define DRV_TMR_CLIENTS_NUMBER 1 #define DRV_TMR_INTERRUPT_MODE false #define DRV_TMR_COUNT_WIDTH false . .. …
Listato 1

CONCLUSIONI

I framework non rappresentano una tecnica innovativa, ma da molti anni aiutano gli sviluppatori nella realizzazione degli applicativi. Nell’ambito dei microcontrollori, e più specificatamente nei PIC, permettono di implementare anche gli interfacciamenti più complessi, del tipo di quelli che probabilmente, in assenza di uno strumento del genere, avrebbero fatto passare serate insonni anche al programmatore più esperto.

 

MAGGIORI APPROFONDIMENTI SULL'ARGOMENTO