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