MPLAB X: Il nuovo IDE della Microchip

Valutazione attuale: 5 / 5

Introduzione

Il nuovo ambiente di sviluppo MPLAB X della Microchip, ormai giunto alla versione 1.51, rappresenta l'erede dell'ambiente di sviluppo MPLAB IDE sviluppato ad hoc per i propri microcontrollori dalla stessa Microchip. MPLAB X rappresenta solo un aspetto della riorganizzazione dell'ambiente di sviluppo adottata dalla Microchip al fine di supportare in maniera più organica e consistente tutte le famiglie di microcontrollori con architettura 8, 16, 32 bit. In particolare oltre all'IDE  la Microchip ha riorganizzato anche i compilatori, fondendo e riorganizzando il tutto nella nuova famiglia XC8 e XC16 e XC32. In questa Brief Note si tratteranno solo le novità legate al nuovo ambiente di sviluppo MPLAB X.   

Nota:
Quanto segue rappresenta una descrizione indipendente dalla Microchip, per cui ogni considerazione è da intendersi personale e potrebbe non essere condivisa.
 

MPLAB X: Un nuovo IDE per i microcontrollori Microchip

MPLAB IDE versione 8 ha accompagnato ogni microcontrollore Microchip dalla stesura del programma, simulazione, Debug e programmazione. Sebbene molti si siano trovati a loro agio con tale ambiente di sviluppo, se confrontato con altri basati per esempio su Eclipse, MPLAB IDE aveva certamente delle lagune. MPLAB IDE aveva in primis il difetto di essere un ambiente interamente sviluppato dalla Microchip, per cui molti aspetti dell'ambiente di sviluppo associati al semplice editing del codice dovevano essere supportati dalla Microchip, il cui focus è prevalentemente nel vendere “silicio”. Per vendere chip, un buon supporto da parte di esempi e un ambiente di sviluppo è certamente importante ma focalizzarsi su esempi e nuovi progetti ha sicuramente più senso che dover sviluppare un editor.
La scelta di dividere l'editing dagli strumenti di programmazione veri e propri  ha fatto nascere MPLAB X, la cui nuova interfaccia per l'IDE (Integrate Development Environment) è basata su NetBeans, un IDE che gira su Windows, Linux e Mac. La licenza di NetBeans è un po complicata, in parte rilasciata sotto GNU e Common Development and Distribution License (ai nostri fini poco importa). L'IDE NetBeans è stato progettato inizialmente da Sun per il linguaggio Java, ma attualmente è supportato da Oracle.  NetBeans IDE, grazie alla popolarità di Java nei sistemi embedded quali i cellulari, ha raggiunto una grande popolarità che ha dato origine a molti plug-in e di cui la Microchip, grazie alla scelta di questo IDE, può usufruire senza doverli riscrivere.
L'ambiente di sviluppo MPLAB X supporta tutti i compilatori Microchip quali C18, C30, C32 e Hitech, nonché i nuovi (almeno per il nome) XC8, XC16, XC32.
Un'importante caratteristica introdotta con MPLAB X è il supporto di tutti i principali sistemi operativi, ovvero Windows, Linux e Mac cosa che non è dispiaciuta agli amanti dell'Open Source. I nuovi compilatori della famiglia XC hanno messo la ciliegina sulla torta visto che la versione Free (prima nota come Studend version, Accademic e Lite) è ora gratuita, indipendentemente dall'essere studente, e può essere usata anche per applicazioni commerciali. Unico difetto delle versioni Free dei compilatori è il livello di ottimizzazione, ma i dettagli li vedremo nell'articolo dedicato ai compilatori.   

Una domanda che si sono posti in molti  è perché NetBeans e non Eclipse?
L'utilizzo di NetBeans IDE è sicuramente un notevole passo in avanti ma molti si sono chiesti per quale ragione la Microchip non abbia usato l'IDE Eclipse, molto più affermato in ambito embedded. La risposta porterebbe sicuramente a discussioni senza fine e diverse osservazioni sono riportate sul Forum della Microchip. Personalmente ho lavorato con Eclipse in diverse occasioni e l'aspetto grafico lo ritengo superiore a NeatBeans, alcune informazioni sono riportate e leggibili in maniera più semplice. Cosa banale ma per un editor che deve riportare informazioni non è poco. Naturalmente sebbene si possa discutere su altri aspetti la scelta dell'uno o l'altro IDE non è banale e la scelta non è solo di natura tecnica. Se Microchip avesse scelto Eclipse sarebbe stata una fra tante società mentre scegliendo NeatBeans (comunque un valido IDE) è una tra poche e si può distinguere. Una domanda simile nacque quando la Microchip rilasciò i PIC32 e molti si chiesero perché architettura MIPS e non ARM!

Concludo questa breve discussione dicendo “Il mondo è bello perché è vario”!   
 

Installare MPLAB X

MPLAB X, come detto, è disponibile per ambiente Windows, Linux e Mac. Personalmente lo utilizzo in ambiente Windows per cui tratterò la sua installazione in questo ambiente di sviluppo (probabilmente anche la più semplice).

Una volta scaricato il programma (Download MPLAB X), bisogna procedere semplicemente alla sua installazione. In particolare l'installazione a cui si fa riferimento è la versione 1.51. Devo dire che la frequenza con cui stanno rilasciando gli aggiornamenti denota il notevole investimento in risorse in questo ambiente di sviluppo (avere aggiornamenti e testare il tutto richiede tempo e risorse), ma dall'altro lato denota che ci sono ancora molti aspetti da migliorare al fine di rendere tutto più stabile. Una volta installato il programma sul Desktop si hanno tre icone, una relativa a MPLAB X, una relativa a MPLAB switcher e l'ultima è MPLAB IPE.

MPLAB X rappresenta l'applicazione vera e propria, l'IDE con il quale scriveremo il nostri programmi.

MPLAB Device Driver Switcher permette di cambiare i driver relativi agli strumenti di programmazione e Debug. Come riportato in Figura 1 non tutti gli strumenti richiedono lo switch del Driver. In particolare questo non è richiesto affatto se MPLAB IDE non è stato precedentemente installato e utilizzato.

Figura 1: Device Driver Switching

Figura 1: Device Driver Switching.

Se si continua ad utilizzare un determinato strumento in entrambi gli ambienti di sviluppo MPLAB IDE e MPLAB X è necessario effettuare lo switch ogni volta che si cambia IDE. In generale una volta cambiato ad MPLA X non dovrebbe essere richiesto il passaggio inverso, ovvero non userete più MPLAB IDE.  Come visibile i programmatori PICKIT 2 e PICKIT 3 non sono nella lista per cui non richiedono lo switching del driver.

La terza applicazione è MPLAB IPE ovvero l'Integrated Programming Environment, come riportato in Figura 2.
 

Figura 2: Intetgrated Programming Environment

Figura 2: Intetgrated Programming Environment.

Attualmente MPLAB X IPE supporta:

•    MPLAB ICD 3 In-Circuit Debugger
•    MPLAB PICKIT 3 Debugger
•    MPLAB PM3 Programmer
•    MPLAB REAL ICE Emulator

MPLAB X supporta invece i seguenti strumenti:

Figura 3: Strumenti supportati da MPLAB X

Figura 3: Strumenti supportati da MPLAB X.

Si può notare che ICD 2 non è supportato né da MPLAB X che MPLAB IPE mentre il PICKIT 2 è supportato da MPLAB X anche se attualmente è in versione beta (non c'e' niente di più definitivo del provvisorio...disse una volta un mio professore).

Una volta effettuata l'installazione dell'IDE, MPLAB X esorta l'istallazione dei compilatori della famiglia XC. Qualora MPLAB IDE sia già presente sul computer assieme ad altri compilatori come il C18 e C30, questi vengono automaticamente riconosciuti e visualizzati nella lista dei compilatori disponibili per la relativa famiglia di microcontrollori. In generale al fine di permettere ad MPLAB X di riconoscere un nuovo compilatore questo deve essere installato successivamente ad MPLAB X stesso. Qualora MPLAB X non dovesse trovare un compilatore installato è sempre possibile impostare i percorsi manualmente (si veda di seguito per maggiori dettagli).  
 

MPLAB X: Creare un progetto

Dopo aver installato MPLAB X, vediamo come creare il nostro primo progetto (in questi esempi si fa riferimento al compilatore C18 ma potrebbe essere selezionato, previa installazione anche un compilatore diverso).
La prima volta che si avvia MPLAB X si ha la videata riportata in Figura 4, per mezzo della quale è possibile accedere alle risorse principali relative ai compilatori e documentazione su MPLAB X stesso (tra cui anche video corsi).

Figura 4: Schermata principale al primo avvio di MPLAB X

Figura 4: Schermata principale al primo avvio di MPLAB X.

Per creare un nuovo progetto bisogna accedere al menu File -> New Peoject o semplicemente cliccando sull'icona “Create new Project” nella schermata principale. Fatto questo si aprirà la finestra di Figura 5.

Figura 5: Primo passo nel creare un progetto

Figura 5: Primo passo nel creare un progetto.

Dal gruppo Categories selezionare “Microchip Embedded” e selezionare tra il gruppo “Projects”, “Standalone Project”. Premendo Next compare la nuova finestra di Figura 6 per selezionare la famiglia e dispositivo del Progetto.

Figura 6: Passo per selezionare famiglia e microcontrollore del progetto

Figura 6: Passo per selezionare famiglia e microcontrollore del progetto.


Premendo Next compare la prima novità, come riportato in Figura 7.

Figura 7: Selezione dello strumento di sviluppo

Figura 7: Selezione dello strumento di sviluppo.


La novità consiste nel fatto che viene richiesta la selezione del programmatore/ Debugger, che andrà a far parte delle impostazioni salvate nel progetto stesso. Si noti inoltre che ogni strumento ha dei pallini colorati. Rosso vuol dire non è supportato, giallo vuol dire beta, giallo e verde parzialmente supportato (per esempio il simulatore) e verde vuol dire supportato. Il programmatore viene identificato anche con il proprio Serial Number (nel mio caso non è letto) che identifica in maniera univoca il programmatore, visto che PID e VID del dispositivo non sono univoci nella stessa famiglia di programmatori. La ragione di questo discende dal fatto che in un progetto si possono usare anche più strumenti ed in particolare MPLAB X supporta anche Debug di due progetti in contemporanea ognuno con un programmatore differente (differente SN se PID e VID sono uguali).  
Premendo ancora Next compare un'altra novità. Apparentemente la Figura 8 non ha alcuna caratteristica importante ma in realtà permette di selezionare il compilatore da usare tra quelli installati e compatibili con la famiglia di microcontrollori selezionata (gli altri non sono visualizzati). Si noti inoltre che mpasm è presente in varie versioni ed è possibile selezionare quale usare, cosa non possibile in MPLAB IDE.

Figura 8: Selezione del Compilatore

Figura 8: Selezione del Compilatore.

Sebbene a livello sperimentale si è soliti usare sempre l'ultima versione disponibile (...latest and greatest), a livello professionale una volta realizzato e testato un programma compilato  con una determinata versione si tende a mantenerla, a meno che non sia noto un bug problematico nella propria applicazione che sia risolto in una nuova versione del compilatore. Questo permette di evitare sorprese dell'ultimo momento. Premendo ancora Next viene presentata la nuova schermata per la selezione del nome del progetto e il percorso in cui salvarlo, come riportato in Figura 9.

Figura 9: Selezione del percorso dove salvare il progetto

Figura 9: Selezione del percorso dove salvare il progetto.

Si noti che il nome del progetto rappresenta anche il nome della Directory in cui vengono salvati tutti i File. Si noti che la finestra di Figura 9 possiede il Check “Set as main Project”, questo discende dal fatto che in NeatBeans permette di avere più progetti nel proprio IDE ma solo uno alla volta risulta attivo. Premendo il pulsante Next si ha nuovamente la schermata principale ma con il proprio progetto creato nel pannello Projects, lato sinistro (come riportato in Figura 10).

Figura 10: Schermata principale con il progetto creato

Figura 10: Schermata principale con il progetto creato.

Il progetto creato è ancora vuoto. Per aggiungere i file sorgenti basta selezionare la cartella “Source File”, premere il tasto destro e “New -> C Main File” per ottenere la nuova videata di Figura 11, in cui viene introdotto un file Template.

Figura 11: Primo progetto con file main

Figura 11: Primo progetto con file main.

Per compilare il nostro progetto basta premere il simbolo del martello. Qualora il progetto sia composto di più file (grossi progetti) e si siano apportate delle modifiche ad altri file oltre il main è bene premere il tasto Martello con la scopa (vengono cancellati file intermedi). Ogni volta che si apportano delle modifiche a dei file è inoltre necessario salvare quest'ultimi prima di compilare il progetto. Se non si fa quanto detto si rischia di compilare vecchie versioni di file o utilizzare file intermedi non aggiornati, per cui si possono avere strani comportamenti o vedere eseguire il programma come la vecchia versione, ovvero senza le modifiche.
Per caricare il progetto nel microcontrollore basta premere il simbolo del chip con la freccia in basso. Qualora si voglia eseguire una fase di Debug basta selezionare il tasto Play verde (si noti che la modalità Release e Debug sono separate semplicemente da un pulsante).

Una nuova caratteristica di MPLAB X è quella di sottolineare il codice ancor prima di eseguire la compilazione, qualora siano trovati errori (Live Parsing). In questo caso gli errori segnalati sono dovuti al fatto che pur avendo selezionato C18 il template di progetto main caricato è per compilatori XC per cui si hanno degli errori, infatti in C18 vuole la funzione main definita come void main (void) (errore segnalato e commentato in fase di compilazione).
Una volta apportata questa modifica è possibile compilare con successo e si noterà un aggiornamento alla Dash Board (in basso a sinistra), che riporta le dimensioni del programma (Flash e RAM usata) come riportato in Figura 11.
...anche un programma che non fa nulla richiede risorse! (c'é della magia anche nella funzione main, o meglio prima che la funzione main venga richiamata). La Dash Board ha anche l'icona PDF sul lato sinistro. Questa icona permette con un solo click di aprire, via Internet, il datasheet del Microcontrollore utilizzato.   

Una volta compilato il progetto viene creato il file esadecimale da caricare nel microcontrollore, questo viene salvato nei seguenti percorsi:

•    dist/default/production (compilazione normale)
•    dist/default/debug (file di Debug)

Come detto il file hex viene caricato nel microcontrollore semplicemente premendo il simbolo del chip con la freccia in basso verde, presente nella Tool bar.
Questo stesso file potrebbe essere caricato nel microcontrollore facendo uso dell'Integrated Programming Environment presentato in Figura 2.

Al posto del nostro esempio vuoto potrebbe essere copiato un qualunque progetto presentato nel testo “C18 Step by Step” e compilare senza problemi. Questi sono i semplici passi da compiere per passare a MPLAB X, mantenendo il C18 come compilatore. Quando cambieremo compilatore da C18 a XC8 si richiederà qualche altro accorgimento per usare gli esempi del testo.
 

MPLAB X: Configurazioni di progetto

MPLAB X permette, come appena visto, di salvare diverse configurazioni e informazioni all'interno del progetto. Queste possono essere cambiate o aggiornate in un secondo momento per mezzo della finestra “Project Properties”, come riportato in Figura 12.

Figura 12: Finestra di dialogo Project Properties

Figura 12: Finestra di dialogo Project Properties.

Tale finestra è richiamabile selezionando il progetto, premendo il tasto destro, e selezionando la voce “Properties” (in fondo al menu) o premendo il simbolo di chiave con bulloni dal pannello “Dash Board”.

Dalla Figura 12 si possono notare i vari strumenti, compilatori e dispositivi selezionati durante la creazione del progetto. In particolare anche in questo caso gli strumenti e compilatori visualizzati sono solo quelli compatibili con la famiglia del microcontrollore selezionato.  Per poter simulare il proprio programma è necessario selezionare come Hardware Tool il “Simulator”. Si fa notare che il simulatore non è ancora completamente supportato, in particolare molte periferiche non sono simulabili.

Dalla finestra di Figura 13, nel lato sinistro delle Categorie, selezionando la voce Compilatore mcc18 (o il compilatore attivo) è possibile, tra le varie opzioni, includere i percorsi delle librerie (nel caso della libreria LaurTec e degli esempi è importante includere propriamente i file .h e .c). In questo percorso è anche necessario aggiungere il percorso degli include file della libreria Microchip. Il percorso può cambiare a seconda del compilatore installato.

Figura 13: Finestra delle impostazioni associate al compilatore

Figura 13: Finestra delle impostazioni associate al compilatore.

Oltre alle impostazioni del progetto non bisogna dimenticare le configurazioni dell'ambiente di lavoro quali per esempio i colori o i percorsi associati ai vari strumenti. In particolare tali impostazioni possono essere cambiate per mezzo della Finestra riportata in Figura 14, richiamabile dal menu Tools -> Options.
Dal Tab “Font e Colors” è possibile cambiare i colori dell'editor mentre dal Tab “Embedded” è possibile cambiare i percorsi associati ai vari compilatori installati. Questo Tab risulta importante qualora, una volta installato un compilatore, MPLAB X non riesca a trovarlo. In tale situazione è possibile inserirlo manualmente.

Figura 14: Percorsi associati al Compilatore e Assembler

Figura 14: Percorsi associati al Compilatore e Assembler.

MPLAB X: La fase di progettazione e programmazione

Quando si progetta un sistema embedded, escludendo gli aspetti relativi alla progettazione Hardware, si deve scrivere il programma (fase di editing), compilare e programmare il dispositivo ed infine fare il debug. Queste fasi si ripetono in maniera ciclica fino a quando non si raggiungono le specifiche volute e tutto funziona a dovere.
MPLAB X introduce molte nuove funzioni a supporto della fase di programmazione, grazie all'utilizzo di NetBeans IDE. Oltre agli aspetti cromatici precedente introdotti MPLAB X supporta il “Live Parsing” ovvero il controllo diretto di sintassi, nomi di variabili, loro utilizzo ed altro, prima ancora di compilare il codice. Altra funzione interessante è il completamento del codice automatico suggerendo le varie alternative possibili. A supporto di progetti professionali o basati su un team numeroso supporta il Code Repository ovvero  la possibilità di poter salvare e gestire varie versioni di un firmware e permettere il mantenimento delle stesse. Sebbene questa funzione la si utilizzi specialmente in ambito professionale, altri aspetti come la “Local History” tornano molto utili quando si apportano modifiche al codice e si vogliano verificare e mantenere sotto controllo i progressi o tornare indietro qualora le modifiche apportate non abbiano portato miglioramenti o ancor peggio problemi.
La “Local History” si può visualizzare semplicemente selezionando il file d'interesse nel pannello dei Progetti, premere il tasto destro e selezionare la voce “Local History”. In Figura 15 è riportato un esempio di “Local History” per un progetto corrente. In particolare sul Pannello superiore sono riportate varie date associate alla compilazione di un progetto (quindi si può tornare indietro anche di diversi giorni). Una volta selezionata una data si aprono due finestre in cui viene riportato il codice corrente e il codice associato alla data selezionata.
Ogni differenza tra i due file viene evidenziata, per cui è possibile risalire a eventuali problemi legati ad eventuali modifiche apportate al codice.

Figura 15: Esempio di differenze tra i file salvati nella Local History

Figura 15: Esempio di differenze tra i file salvati nella Local History.


Oltre a questa utile funzione un'altra che ci si trova ad usare durante la programmazione è il nuovo strumento “Graph”, il quale mostra in maniera grafica la relazione che esiste tra una funzione ed eventuali funzioni richiamate da quest'ultima. Per richiamare un grafico bisogna selezionare  una funzione nel codice, premere il tasto destro e selezionare la voce “Show Call Graph”. Un esempio di grafico è riportato in Figura 16.

Figura 16: Device Esempio di Graph associato alla funzione LCD_Hello_Test

Figura 16: Device Esempio di Graph associato alla funzione LCD_Hello_Test.

Con un doppio click sul grafico è possibile aprire direttamente una funzione. Tale strumento permette di avere sotto controllo le varie relazioni che esistono tra le varie funzioni, una specie si grafico UML (Unified Modeling Language) semplificato.

MPLAB X: Aprire un progetto

Diversamente da MPLAB IDE, MPLAB X, pur creando diversi file di progetto, non ha un file sul quale cliccando sia possibile aprire il progetto stesso. Ciononostante aprendo MPLAB X, usando l'icona sul Desktop, tutti i progetti sui quali si sta lavorando sono in realtà salvati e presenti nella lista dei progetti (pannello sinistro).
Un solo progetto alla vota può essere attivo, per attivarlo lo si deve selezionare, premere il tasto destro e selezionare  la voce “Set as main Project”.
Nel pannello dei progetti è possibile chiudere progetti sui quali non si sta più lavorando e si possono riaprire semplicemente dal menu File-> Open project...
Diversamente da MPLAB IDE, MPLAB X organizza ogni file del progetto in Tab e non in finestre, per cui sul pannello del codice si possono avere diversi Tab aperti associati a file diversi. Questo permette di passare in maniera più comoda da un file ad un altro, invece di dover cercare la finestra d'interesse come capitava in MPLAB IDE.

A questo punto per chi viene da MPLAB IDE è lecito chiedersi come si possa aprire un file creato con MPLAB IDE in MPLAB X. Questo è possibile farlo per mezzo di File -> Import -> MPLAB IDE v8 Project. Per mezzo di questa operazione un progetto creato con MPLAB IDE viene convertito in MPLAB X per mezzo di semplici passi che permettono di aggiungere delle informazioni al progetto. La conversione non sovrascrive il vecchio progetto in MPLAB IDE bensì  crea una nuova directory con il progetto compatibile in MPLAB X.

Per piccoli progetti non è necessario pensare ad alcuna conversione, per esempio gli esempi del proposti sul sito www.LaurTec.it sono sempre piuttosto semplici e la conversione consiste semplicemente nel creare un nuovo progetto, includere i file .c e .h richiesti ed impostare i percorsi di libreria.

 

 

 

Registrati