Amber board, gestione GPIO.

Click Here to Read the English version.

Una delle esigenze più comuni degli sviluppatori che realizzano un apparati elettronici è quella di gestire le uscite e gli ingressi digitali per attivare interruttori, acquisire lo stato di uno o più pulsanti o in generale interagire con altre periferiche per mezzo delle linee digitali d I/O (GPIO) messe a disposizione dai dispositivi utilizzati. Controllare da codice lo stato o il livello di un pin del microprocessore è una delle prime cose che si imparano quando si lavora con il codice e credo che la quasi totalità degli sviluppatori abbia almeno una volta nella loro vita realizzato il classico progetto del LED che lampeggia o della classica sequenza di luci che si accende in modalità “super-car”.
Quando si lavora con il firmware è infatti abbastanza semplice scrivere o leggere lo stato di un pin del proprio dispositivo; per compiere questa semplice operazione, il più delle volte è sufficiente scrivere o leggere un bit nel registro di I/O dedicato o aspettare lo scatenarsi del relativo interrupt se opportunamente configurato.
Cosa succede e nel nostro sistema gira un sistema operativo evoluto tipo Linux?
Possiamo ancora accedere alle linee di I/O della nostra CPU direttamente dalla nostra applicazione utente?
La risposta è ovviamente affermativa anche se la modalità può dipende dal sistema che stiamo utilizzando e dalla sua configurazione. In generale possiamo controllare e accedere allo stato dei GPIO ma dobbiamo farlo con metodologie diverse da quelle seguite nella programmazione di basso livello e con le regole e le limitazioni imposte dal sistema operativo.
Continua a leggere

Amber2, sistema di sviluppo e debug embedded con QtCreator

Come in quelle storie d’amore in cui gli amanti di tanto in tanto gli amanti si ri-incontrano e vivono nuove ed inaspettate passioni, nel corso degli ultimi giorni mi sono cimentato in una serie di esperimenti e test relativi ad una piattaforma embedded molto interessante con la quale è possibile realizzare progetti e applicazioni dall’indiscusso valore tecnico.

Si tratta della scheda Amber2, ovvero di una Carrier board che può ospitare i SOM prodotti dall’Isdraeliana Variscite  provvisti dell’ottimo processore NXP/Freescale Cortex-A9  IMX6.

L’Imx6 è un processore dalle alte performance a 1.0 GHz di frequenza, con 1Gb Di RAM, supporto per Video Full HD, accelerazioni grafiche e tutta una serie di periferiche, come il Bluetooth la WiFi, il supporto per le telecamere e molti altri accessori interessanti.

Variscite rilascia per i suoi prodotti una ricca e molto ben documentata dotazione software grazie alla quale è possibile avviare e rendere operativo il sistema in tempi rapidi e senza dover essere per forza dei profondi conoscitori dei sistemi di build dei sistemi embeded.

Basta dare uno sguardo alla pagina del sito per capire subito quali sono le risorse disponibili.

Senza soffermarci troppo sulla scelta di un sistema operativo piuttosto che un altro,  diciamo subito che nelle prossime righe andremo a descrivere come realizzare un sistema di sviluppo Linux e prodotto da  Yocto e come è possibile realizzare un setup con il quale crosso compilare applicazioni basata su Qt, effettuare il deploy automatico sulla scheda targhet e come debbagare l’applicazione tramite l’ IDE del Qt Creator.
Il nostro focus sarà come configurare il sistema partendo da un roof filesystem e dall’ SDK prodotto da Yocto. In pratica quello che si vuole fare è scrivere un programma sul PC utilizzando il Qt Creator, compilarlo e mandarlo n esecuzione della scheda targhet e poterne controllare/ispezionare il funzionamento per poter migliorare e correggere il software.

Realizzeremo un setup di sviluppo denominato “linked” ovvero un Setup composta da:

  • Un PC Host, in cui è installato il sistema di sviluppo (IDE) , il cross-compilatore, il sistema di deploy e quello di debug.
  • Un sistema targhet ( la scheda Amber2 ) in grado di avviare un Linux vanilla ( senza interfaccia grafica) e tutti i servizi per poter ricevere l’applicativo sviluppato sul targhet, eseguirlo e farlo girare in modalità debug.

Per poter lavorare insieme i due sistemi devono essere provvisti delle necessarie risorse, devono in un certo senso essere “syncronizzati” ( stesse librerie,etc..) e devono entrambi essere connessi alla rete Ethernet. Continua a leggere

Yocto Progetto: il sistema di sviluppo per Linux embedded.

yoctoNel corso degli ultimi 10 anni abbiamo visto crescere continuamente  le funzionalità e le prestazioni  delle apparecchiature elettroniche immesse sul mercato.
Quello che una volta poteva sembrare un sogno come ad esempio un telefono che risponde ai propri comandi vocali o una TV che si collega autonomamente ad internet e cerca il filmato da visualizzare, oggi è realtà e probabilmente è solo una minima parte di quello che i “guru” della tecnologia e della tecnica stanno progettando per il nostro futuro.

La crescita di funzionalità e prestazioni di questi dispositivi è sicuramente dovuta sia alla presenza sul mercato di CPU sempre più potenti e performanti ( oggi la maggior parte dei dispositivi sono equipaggiati con cpu ARM multi-core ad oltre un GHz di clock ) sia alla possibilità di includere nei propri device, sistemi operativi liberi e facilmente integrabili ed utilizzabili. Ne sono un esempio lampante tutte le apparecchiature basate sui sistemi Android.

Ma quali sono le complicazioni e le difficoltà che si incontrano quando si decide di realizzare un nuovo apparato che utilizza una simile tecnologia e quali sono gli strumenti necessari per gestire e realizzare un sistema di sviluppo fruibile e funzionale?

Continua a leggere

GStreamer il Framework multimediale Audio/Video

gstremareIco

GStreamer è un insieme di di librerie, tools e plug-ins grazie ai quali è possibile manipolare e trattare una moltitudine di formati audio e video con una discreta semplicità.
Molti dei player multimediali o editor video inclusi nelle principali distribuzioni linux ( Totem Player  o  PiTiVi ad esempio) utilizzano questo framework per la riproduzione e la manipolazione dei  filmati e dei file audio.
In questo post propongo una serie di esperienze e di test per i più curiosi e gli smanettoni del codice, e cercherò di dare una spiegazione di massima della filosofia e dei componenti principali di questo framework.

Continua a leggere

JUCE il framework per Mac OSx, IOs, Linux, Windows ed Android. Parte II.

Continuiamo il nostro lavoro con JUCE ed in questo nuovo post vediamo come possiamo modificare il progetto, creare nuovi progetti e modificare l’interfaccia grafica delle nostre applicazioni sempre in ambiente Linux.
Nella post della scorsa settimana avevamo infatti visto come aprire e “debbagare” il progetto Hello Word fornito con il framework.
Eravamo in grado di modificare il contenuto del file .cpp, compilare ed eseguire il programma, potevamo inserire dei break point, valutare le variabili e gli oggetti ma come dobbiamo operare nel caso  volessimo aggiungere dei nuovi file o nuovi moduli?
In questo post cercherò di spiegare passo passo la modalità operativa per gastire, creare e modificare i progetti con JUCE.

Linux e MakeFile in parole semplici.
Come abbiamo già detto , un programma consiste, il più delle volte ( almeno quando i programmi sono abbastanza grandi) in un insieme di file sorgenti, di librerie e risorse grafiche che debbono essere in qualche modo compilati  ( trasformati, tradotti ) in un file “eseguibile” dalla macchina che lo dovrà far girare. Continua a leggere

JUCE il framework per Mac OSx, IOs, Linux, Windows ed Android.

Dopo un’interessante chiacchierata con il bravo Luca Calcaterra di qualche giorno fa, ho riscoperto un’interssate framework che avevo già visto e valutato qualche tempo fa ma che ( a questo punto devo dire purtroppo ) dimenticato e probabilmente in un primo momento sottovalutato. Vediamo di cosa si tratta e cerchiamo di capire come poter muovere i primi passi con esso in ambiente Linux.

JUCE (Jules’ Utility Class Extensions), questo è il suo nome del framework in questione, è una libreria onnicomprensiva di classi scritta in C++, pensata per lo sviluppo software ( programmi applicazioni pugins etc..) multi-piattaforma.
In pratica in questa libreria troviamo tutto il necessario per creare la maggior parte delle applicazioni moderne ( giochi, programmi etc..) , ma è soprattutto, troviamo tutto il necessario per lo sviluppo e la realizzazione di interfacce grafiche personalizzate e per la gestione del suono e del MIDI.
Appare evidente che ad un patito software con il pallino della musica come il sottoscritto, già questa breve descrizione, fa “drizzare” le orecchie ma la cosa diventa ancor più eccitante quando si legge la lista delle piattaforme sulle quali è possibile far girare le applicazioni sviluppate con JUCE.

Nella lista troviamo:
Mac OSX
iOS, e quindi iPhone, iPadt etc..
Windows con compatibilità piena per XP e Windows 7
Linux
Android anche se in questo caso gli siluppatori dichiarano che ci stanno ancora lavorando e che non tutte le funzioni sono ancora complete.

Praticamente tutte le piattaforme più in voga del momento! Continua a leggere

Programmatore fai da te!

Ricevo di tanto in tanto da parte di alcuni lettori del blog, richieste di consigli e di aiuto su come sia possibile muovere i primi passi nella realizzazione piccole applicazioni o programmi in grado di gestire midifile, brani audio o più in genere da utilizzare in ambito musicale e multimediale.
Mi è venuto così in mente di realizzare una piccola guida ( ovviamente in più puntate e corredata di esempi ) su come iniziare e su come muovere i primi passi all’interno di quel mondo che va sotto il nome di informatica “musicale”.
Non vi spaventate subito, non è poi cosi difficile!
Non è necessario possedere una laurea in ingegneria aereo spaziale “multi-dimensionale”!
Certo se sperate di realizzare nel giro di pochi giorni un nuovo Cubase o un nuovo Sonar siete completamente fuori strada, ma vi assicuro che con un po di pazienza e d’impegno riuscirete a realizzare qualche piccolo applicativo di sicuro interesse senza grossa fatica.
Avanti tutta allora, con fiducia e speranza!

Continua a leggere