Qt for MCU – La programmazione per microcontroller

Qt for MCU per micrcocontroller

Una immagine vale più di mille parole

Basandosi su questo presupposto, i laboratori di Palo Alto crearono negli Anni Ottanta del secolo scorso il cosiddetto “paradigma della scrivania”. In altri termini, mostrarono come il modo migliore per poter utilizzare un computer consisteva nel rappresentarne i comandi attraverso una interfaccia grafica.

I sistemi VAX e Unix avevano già mostrato la possibilità di liberare il mainframe dai vincoli della programmazione batch, attraverso l’utilizzo di comandi interattivi. Ma ricordare la sintassi dei comandi era un compito tedioso, ed un errore nei parametri poteva portare a situazioni di pericolo per l’esistenza stessa dei dati. Per tale ragione venne perseguito un protocollo di codifica delle azioni attraverso immagini, presentato inizialmente da Apple e poi di seguito dai principali produttori di sistemi operativi.

Ovviamente, ciascuna azienda aveva un proprio sistema proprietario, una interpretazione assolutamente soggettiva del paradigma della scrivania. Occorreva una sorta di accordo semantico, che consentisse all’utente finale di poter passare da un sistema all’altro utilizzando azioni il più possibile simili per operazioni simili. Ovviamente i produttori di sistemi operativi si guardarono bene dal consentire agli avversari di capire cosa girasse sotto il cofano del proprio prodotto, ma in qualche modo acconsentirono ad utilizzare un sistema simile per le interfaccce grafiche.

Tale lenta e costante confluenza non fu dovuta tanto ad un processo di “assimilazione” in stile Borg, quanto grazie ad una democratica scelta dell’utente finale, che tendeva a scegliere le interfacce più intuitive e semplici da utilizzare. Una volta definita la semantica, occorreva un po’ di “colla” (gli anglosassoni parlerebbero di “syntactic sugar“) per cementare i pezzi in un sistema universale.

La colla è stata fornita dal progetto Qt.

Cos’è Qt?

In slang anglosassone, Qt è abbreviazione per quiet. Inoltre Q.T. o q.t. viene utilizzato nell’accesione di “segretamente”, o “in confidenza”. Ma significa anche cutie carino/a, come omofono derivato dalla pronuncia di “QT“. Infine, Qt sta per Quality time.

Qt for MCU

Nel nostro caso specifico, Qt rappresenta un framework per applicazioni cross-platform con una interfaccia grafica utente (GUI) comune. Un toolkit utilizzato per lo sviluppo di software che possa essere eseguito su differenti sistemi operativi e su piattaforme hardware diverse.

Mi è capitato personalmente di gestire progetti Qt multipiattaforma, in grado di girare senza problemi su sistemi Linux, MAC e Windows. Il beneficio maggiore è consistito nel riuscire a concentrarsi sul progetto, senza dover tenere ogni volta presenti le idiosincrasie dei vari sistemi operativi.

Grande è stato quindi il mio stupore quando sono venuto a conoscenza del progetto Qt for MCUs. Si tratta di un toolkit specificamente concepito per fornire una user experience smartphone-like su display gestiti da microcontrollers.

Qt for MCUs utilizza Qt Quick per creare interfacce utente con API QML e C++ ed estendere l’interoperabilità con codice C++. Dal momento che le applicazioni Qt Quick seguono l’architettura  model-view, è semplice integrare il proprio backend scritto in C/C++. In tal modo qualsiasi porting di applicazioni preesistenti verso Qt for MCU viene accelerato, lasciando maggiore spazio (e tempo) all’ottimizzazione dell’interfaccia grafica.

Qt for MCU per micrcocontroller

Un’applicazione scritta con Qt for MCU viene realizzata attraverso l’utilizzo di un nuovo runtime ad elevate prestazioni e basso consumo di memoria. Il tutto è reso possibile grazie ad una nuova traduzione del QML in C++, e ad un nuovo motore di compilazione per le proprietà dichiarative.

In pratica, il nuovo Qt for MCU consente di ignorare il sistema operativo stesso e lanciare un’interfaccia grafica utente sul microcontroller nudo e crudo.

L’aspetto notevole è che le applicazioni basate su Qt potranno ora essere rilasciate sia su sistemi operativi classici che su microcontrollori basati su Arm Cortex-M7. Il framework chiamato Qt Quick rappresenta l’anello mancante della catena di produzione.

Qt Quick è un framework che consente il rilascio di applicazioni di tipo mobile. Il suo nucleo è rappresentato da QML, un linguaggio dichiarativo utilizzato per descrivere l’interfaccia utente. La sintassi lo mostra simile, nella struttura, a JSON, mentre un runtime che richiede pochissime risorse consente alle GUI QML di interagire con il backend scritto in codice C/C++. Questo rende quindi la GUI essenzialmente interoperabile su piattaforme differenti.

Ad oggi sono disponibili esempi di codice compilato sia per il controller STM32F7 Discovery kit che per il NXP’s I.MX RT1050-EVKB. Entrambi i kit di valutazione offrono un touch screen da 4.3 pollici ed un processore con un core Arm Cortex-M7. Ovviamente, anche se il processore M7 si trova all’estremo superiore della gamma Cortex-M, QT for MCUs non poggia su di un vero e proprio sistema operativo tradizionale o real-time.

Maggiori informazioni su Qt for MCU, il codice eseguibile dimostrativo ed un webinar sono tutti già disponibili sul sito Qt.

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.