Pagine

giovedì 10 maggio 2012

Dalle Qt alla DEMOJM, ovvero come spedire "velocemente" i nostri bit dal PC all'esterno. (parte prima)

Carissimi lettori di hwdebug questo articolo è il primo di una serie (di 2 o forse 3 articoli) che tratteranno di un argomento interessante: come interfacciare le librerie Nokia Qt con la demoboard di Freescale DEMOJM.

Il titolo, abbastanza provocatorio quanto ambiguo, vuole essere di risposta all'esigenza che molto spesso alcuni di noi, sfigati Ingegneri Elettronici ;), si trovano ad affrontare: realizzare una comunicazione fra il PC e un hardware esterno nel minor tempo possibile. Il termine "velocemente" si riferisce proprio a questo. Non parleremo di Firewire, né di Thunderbolt o di USB 3.0 ma penseremo a creare una comunicazione in breve tempo. L'idea di questo articolo nasce proprio da questa esigenza.

Iniziamo col dire che non siamo finanziati da Freescale e il fatto che venga tirato in ballo ancora l'hardware della DEMOJM è puramente giustificato dalla disponibilità di tale scheda nel momento in cui si è presentata l'esigenza di interfacciare il PC con l'esterno per realizzare un piccolo hardware dimostrativo. Molti di voi avranno anche ben presente che sul mercato sono presenti soluzioni molto più eleganti che, magari, a fronte di un hardware fatto ad hoc (e costosetto) forniscono gratuitamente (royalties free) anche i driver per la comunicazione multipiattaforma; vedi FTDI. In ogni caso queste soluzioni non si addattavano alle nostre esigenze perché oltre ad avere bisogno di un interfaccia di comunicazione si aveva anche bisogno di qualche timer per controllare dei motori in PWM.

 La nostra cara DEMOJM, corredata in questo caso del microcontrollore MCF51JM128, oltre ad avere a disposizione sul micro tutti i timer di cui avevamo bisogno, mette a disposizione una bella interfaccia seriale virtuale sul connettore USB di programmazione. Tale interfaccia, realizzata tramite il chip del programmatore presente sulla scheda, si può collegare tramite due appositi jumper alla interfaccia SCI1 (Serial Communication Interface 1) del microcontrollore in questione e realizza un bel canale diretto e "veloce" (nel senso esplicato prima) per la comunicazione col PC. Questa interfaccia può essere usata anche per scopi di debug.

Se da un lato l'hardware a disposizione calzava alla perfezione per le nostre esigenze dal lato software bisognava soddisfare l'esigenza di creare un'interfaccia "carina" che permettesse di inviare dei comandi per controllare questi motori. Vista la presenza della seriale, sicuramente i più nerd di noi non si porranno il problema di connettersi tramite un qualsiasi terminale simile a Putty e magari fornire dei comandi in forma testuale sentendosi come se stessero usando la solida Shell di Unix. In realtà il target di utenza che doveva provare questo dimostratore è ben lontana dallo Stallman di turno e allora urgeva creare anche una interfaccia grafica carina, comprensibile all'umano medio.

Per creare questa interfaccia si è pensato di utilizzare le librerie Nokia Qt. La scelta è ricaduta su quest'ultime perché ormai sono arrivate ad un livello di maturità dello sviluppo molto avanzato che permette, da un lato, di avere a disposizione tutti gli strumenti necessari per realizzare qualsiasi cosa possa venire in mente come GUI, dall'altro, un buon supporto dalla comunità di sviluppatori e di utilizzatori. Se poi aggiungiamo il supporto multipiattaforma offerto dalle librerie, che in questo caso non serviva, ma che in altri può essere importante si capisce che la scelta delle Qt per questo mini-progetto è più che ragionata.

Un altro motivo per cui la scelta è caduta sulle Qt è perché sono state sviluppare delle librerie (non da Nokia) per l'utilizzo della seriale su diversi sistemi operativi. Queste librerie sono le qextserialport e con la stessa filosofia di Qt offrono il supporto per Mac OS X, Windows, Linux, FreeBSD.

Per cominciare sono richieste delle conoscenze base sulla programmazione del microcontrollore MCF51JM128, nulla di speciale, ma almeno il saper impostare la frequenza di clock manualmente, difficile ma non impossibile, o tramite i tool automatici tipo Processor Expert che Freescale fornisce insieme al Codewarrior e che semplificano notevolmente il compito. Dal lato Qt saremo invece più buoni (ma solo perché siamo di vocazione hardwaristi) e cercheremo di seguire passo-passo la compilazione delle librerie per l'uso della seriale, la creazione del progetto in Qt e l'impostazione delle routine di base per realizzare la comunicazione.

Ora basta con le chiacchiere. Nella prossima puntata passeremo subito ai fatti. A presto!

Nessun commento:

Posta un commento