Mplab...X
Come X-Files, Mister X, X-man et similia, anche Microchip ha
generato un X: MPLABX.
Il noto e potente (e gratuito !) ambiente di sviluppo per i microcontroller PIC
di Microchip è sempre stato MPLAB-IDE, arrivato ora alla versione 8.83 e, quasi
certamente, alla fine della sua onorata carriera ed è stato necessario
introdurre un nuovo tool.
Perchè questo?
I motivi sono diversi: essenzialmente MPLAB, per la sua struttura non più
allo stato dell' arte,
presenta limitazioni che non sono più accettabili. Principalmente:
- rende difficoltoso aggiungere nuove prestazioni e funzioni
- non è facilmente estendibile da terze parti
- manca del supporto per molte funzioni proprie dei moderni linguaggi ad
alto livello
- e, sopratutto, è limitato all' ambiente Windows
Quest'ultimo non è un fatto secondario, tenendo presente lo sviluppo di
alternative economiche (se non gratuite) e meno critiche ai sistemi operativi
di microsoft.
Occorreva quindi una revisione completa dell' ambiente di sviluppo, con la
necessità di utilizzare una base differente. E i tecnici di Microchip, nella
scelta tra Eclipse e Net Beans hanno optato per quest' ultima piattaforma che
permette di ottenere prodotti portabili sia in ambiente Windows che Mac o
Linux.
Le ragioni della scelta sono giustificate qui.
Sostituire un tools utilizzato da lungo tempo e per il quale, quindi, si è
sviluppato un modus operandi e una serie di automatismi che ne rendono l'
impiego "naturale", con un nuovo prodotto, apparentemente
differente, ha gettato nello sconforto molti utenti: occorre di nuovo
imparare, capire, acquistare quella manualità che è indispensabile per usare
i tools in modo produttivo !! Con tutti i problemi che già ci sono, era proprio necessario ?
In effetti le esigenze di chi usa professionalmente l' ambiente di sviluppo
Microchip, principalmente sotto la pressione dei linguaggi ad alto livello,
ormai indispensabili per molte applicazioni, hanno mostrato che MPLAB,
nonostante i continui aggiornamenti e migliorie, più che tanto in là non
può andare.
Occorreva qualcosa di differente, sopratutto qualcosa con una maggiore
apertura agli sviluppi attuali e futuri e con una maggiore possibilità di
interazione con prodotti di terze parti.
La nuova piattaforma assicura:
- una base IDE ben collaudata da anni di impiego
- una architettura ben documentata ed espandibile
- un elevato numero di funzioni che non erano possibili nella struttura
precedente
- un buon supporto per i moderni linguaggi ad
alto livello
- la possibilità di funzionare in ambienti diversi, non solo Windows, ma
anche Linux e Mac.
Le differenze: i driver USB
Esistono notevoli differenze tra l' ambiente in cui è stato sviluppato
MPLAB e quello di MPLABX ed è ovviamente chiaro che, nonostante lo sforzo di
Microchip per rendere il meno traumatico possibile il passaggio tra il vecchio
e il nuovo, alcuni punti di frizione con l' utente sono inevitabili.
Il primo e più sensibile è la questione dei driver USB dei tools di
sviluppo. E' nota la non semplice struttura dei driver USB e le limitazioni di
quelli residenti in Windows e questo ha certamente riservato un qualche
problema agli sviluppatori che volevano estendere il supporto al di là dei
soli s.o. di Microsoft.
I PICKit utilizzano un driver HID (Human Interface Device),
che è uno standard supportato direttamente dai sistemi operativi. Quindi, in
tutti i casi, non necessitano di alcuna aggiunta esterna.
Il problema sorge con REAL ICE e gli ICD, i quali richiedono
un driver differente, dovendo scambiare dati ad una maggiore velocità.
Nel caso di ambiente Windows con MPLAB-8 occorre caricare uno
specifico driver proprietario. |
|
Con MPLABX, invece, sia in ambiente Windows che Mac o Linux,
viene utilizzato un driver open source (WinUSB per Windows e
LibUSB per Mac e Linux) |
|
Il vantaggio è sensibile, ma si pone un problema: i due driver non sono
compatibili in ambiente Windows. Ne risulta che chi sta già utilizzando
MPLAB-IDE e intende passare a MPLABX si troverà ad avere sul PC entrambi gli
ambienti, ma con la difficoltà di utilizzare REAL ICE e ICD.
La struttura propria del s.o. di Microsoft rende tutt' altro che semplice
risolvere la questione, ma in Microchip si sono resi conto immediatamente del
problema e lo hanno risolto scrivendo un apposito programma che permette di
commutare i driver USB a seconda dell' MPLAB in uso.
USB switcher utility
Ne è nato questo USB switcher utility che fa parte del package di MPLABX e
che consente di commutare i driver USB a seconda dell' ambiente in uso. Questo
consente con facilità di poter mantenere in uso la precedente versione di
MPLAB-IDE, ma, sulla stessa macchina, di disporre anche del nuovo MPLABX e
poter quindi operare in parallelo sulle due piattaforme, acquisendo esperienza
sulla nuova senza abbandonare di colpo la vecchia.
|
Il pannello di controllo dello switcher consente con estrema
facilità di caricare i driver per i diversi sistemi di sviluppo a
seconda delle versione di MPLAB usata.
Lo switcher provvede a caricare il driver adeguato e nello stesso
tempo a scaricare quello non desiderato (e, anche, a scaricarli
tutti), senza alcuna manovra complicata sul Registry.
Nella finestra di selezione dei tools non appaiono i PICKit in
quanto, come abbiamo detto, impiegano driver standard supportati
direttamente dai sistemi operativi. |
Vedremo più avanti qualcosa sull' uso di questa utility.
Sono noti i problemi dati dalla struttura
di Windows e dei suoi driver per USB: al di là dei dispositivi
riconosciuti e adatti ad un generico driver embedded nel sistema operativo,
dove occorra un driver particolare è richiesto prima di caricare il driver,
poi di collegare il plug USB. In caso contrario gli automatismi di Windows
cercheranno di applicare un driver esistente al dispositivo USB, linkandolo
normalmente con un driver sbagliato.
Questo non solo impedisce il funzionamento corretto dell' apparato USB, ma
rende impossibile caricare il driver corretto se non avendo prima interrotto
il link errato, cosa che, a meno di utilizzare una qualche utility, è fuori
dalla portata dell' utente medio.
Questo problema è tipico di dispositivi USB che hanno un loro driver
proprietario e non è limitato ai solo REALICE o ICD, ma anche a stampanti,
scanner, ecc. Chi non ha seguito le istruzioni di installazioni (prima il
driver, poi la stampante...) ha esperienza del problema.
Ma Windows presenta anche un altro problema noto, cosa che riguarda a volte
anche dispositivi USB che utilizzano driver HID o storage del s.o e che si
traduce nel consiglio di collegare oggetti USB in questa sequenza:
- avviare l' ambiente di uso
- quindi collegare il tool alla porta USB
O per lo meno, aspettare l' avvio completo e stabile di Windows prima di
accendere o collegare dispostivi USB esterni. Se il dispositivo USB è già collegato al PC PRIMA dell' avvio
dell' s.o o dell' applicazione, è comune, che si ottenga un
messaggio che indica l' impossibilità della connessione, dato che
Windows avrà fallito il riconoscimento automatico del plug USB e non sarà
risuscito ad associarlo al giusto driver.
In questo caso occorre effettuare la scomoda manovra di:
- scollegare momentaneamente il tool dalla connessione USB
- attendere un attimo per dare modo a Windows di rilevare la
disconnessione
- e quindi ricollegare il tool, che ora sarà visto correttamente.
Altro problema è il fatto che i driver residenti in Windows sono legati al
port in cui è inserito il dispositivo USB e non all' ID del dispositivo
stesso: questo genera il fastidioso problema del creare nuovi indicatori del
link con il dispositivo USB a seconda del port usato. Così, nel caso di
adapter USB-seriale, questo si traduce con la creazione di una COM3, ad
esempio, ma se si toglie il dongle e lo si ricollega ad un' altro port USB,
Windows creerà per lo stesso dongle un COM4 e così via.
I nuovi driver di Microchip risolvono questi problemi, rendendo la vita un
poco più facile allo sviluppatore.
Più nel dettaglio, le differenze operative dei driver USB sono queste:
in ambiente MPLAB-8
- i driver USB sono linkati quando il tool viene selezionato o si attiva
il workspace
- il link è interrotto quando MPLAB è chiuso
- il link è in ogni caso attivo finchè il tool è abilitato
in ambiente MPLABX
- i driver USB sono linkati solo quando è avviata la sessione di debug
- e il link viene interrotto al termine della sessione
- il link è disattivato quando non è in corso un debug
AVVERTENZA: In relazione ai
tools di sviluppo va detto che tutti quelli ritenuti obsoleti, ovvero
non in grado di seguire il continuo sviluppo dei microcontroller, non
sono più supportati da MPLABX. Quindi:
- MPLAB ICE 2000
- MPLAB ICE 4000
- PICSTART Plus
- Promate II
- MPLAB ICD 1
- PICkit 1
non sono utilizzabili se non rimanendo nell' ambiente MPLAB-8. |
Per contro, la struttura usata da Microchip consente a MPLABX di collegare
più tools contemporaneamente, ampliando le possibilità di debug.
|