Tutorials - PIC

 

Da MPLAB a MPLABX


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:

  1. avviare l' ambiente di uso
  2. 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.

 


 

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 10/02/12.