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.

Sia la scheda di sviluppo ( la scheda Amber ) che il PC Host devono essere connessi alla rete Ehternet e si devono poter “pingare” a vicenda.

Si assume che nel vostro PC abbiate installato un sistema Linux Ubuntu almeno di versione 14.04 o superiore.
In caso contrario installatelo nel vostro PC.

Development System Linked

Configuriamo la scheda Amber.

Realizzeremo una SD nel dalla quale il sistema potrà essere avviato e che conterrà tutto il necessario per i nostri scopi.
Scaricate dal seguente link l’immagine dell’ SD.

https://drive.google.com/open?id=119wUHWETFaZ4yqi2YqYYIduP0lWwolCf

N.B.
L’immagine che scaricate del link precedente è sicuramente funzionante per la scheda Amber provvista dei tre extender.
Non posso garantire ( in quanto non è stata testata) che sia funzionale al 100% anche su altri modelli di schede Amber e/O su schede che abbiamo differenti extender.

Procuratevi una SD da almeno 4GB

Una volta scaricato il file scompattatelo con il seguente comando:

$ tar -jxvf fsl-image-qt5-var-som-mx6-20180404135902.rootfs.sdcard.tar.bz2

verrà generato un file dal nome:

fsl-image-qt5-var-som-mx6-20180404135902.rootfs.sdcard

Inserite l’SD card nel vostro PC e controllate con quale nome gli assegnato il vostro sistema con il seguente comando :

$ dmesg | tail

Vedrete comparire una serie di indicazioni tre le quali il nome ( nel nostro caso sdc ) con il quale il sistema ha chiamato la vostra SD card.

A questo punto scrivete il contenuto del file precedente nella vostra SD.

$ dd if=fsl-image-qt5-var-som-mx6-20180404135902.rootfs.sdcard of=/dev/sdc bs=1M && sync

Attendete che le operazioni siano concluse e una volta rimossa l’SD dal vostro PC inseritela all’interno della scheda Amber.

Mentre la scheda è spenta tenete premuto il tasto di SYS_BOOT presente sul retro della scheda e date alimentazione.

Il sistema verrà avviato da SD card e sulla consolle seriale vedrete comparire il logo ed il prompt di sistema.

Connettete la scheda alla vostra rete Ethernet ed assicuratevi che gli sia stato assegnato un indirizzo IP.

Configurazione del HOST.

Per prima cosa è necessario installate il framework QT.

Dal link seguente: https://www.qt.io/

selezionate il pulsante Download Try Buy


Selezionate il tasto Go Open Source

Nella pagina seguente selezionate il Pulsante Download

Salvate il file nel vostro PC.

Una volta scaricato andate nella cartella di download e rendetelo eseguibile con il seguente comando:

$ sudo chmod +x qt-unified-linux-x64-3.0.4-online.run

All’invio del comando ll nella consolle il file in questione deve comparire in colore verde quando è eseguibile.

Mandatelo in esecuzione con il seguente comando:

$ ./qt-unified-linux-x64-3.0.4-online.run

Si avvierà un programma di installazione nel quale verrà richiesto di registrarvi per creare un account.

Terminata l’installazione nel vostro sistema cercando la parola Qt nel vostro sistema deve comparire una serie di icone relative al framework ed in particolare al Qt Creator.

Cliccando sull’icona del Qt Creator si avvia il programma.

Dalla pagina degli esempi cliccate ad esempio su: Analog Clock Window Example

Cliccate sulla freccia verde in basso a sinistra.

Se tutto è ok deve comparire la finestra dell’orologio

A questo punto Qt è operativo almeno per quanto riguarda il vostro PC.

Integrazione Git

QtCreator  dispone di una competa integrazione con i sistemi di versionamento del codice ed in particolare con il sistema GIT.
Ovviamente QtCreator funge solo da interfaccia, Git deve essere installato e configurato nel vostro sistema in modo autonomo.
Per controllare se Git è installato digitate il seguente comando dalla consolle del vostro sistema:

$ git config –list

Se il comando fallisce, installate Git con il seguente comando:

$ apt-get install git

Git utilizza l’E-Mail ed il nome utente come parametri di autenticazione, e necessario pertanto configurare il sistema con i propri dati.
Digitate sempre dalla consolle:

$ git config –global user.name “John Doe”
$ git config –global user.email johndoe@example.com

Sostituendo ovviamente John Doe e johndoe@example.com con il vostro user name e e-mail.

Per sicurezza controllate le impostazioni digitando:

$ git config –list

dovreste veder comparire i vostri dati a schermo.

Installato e configurato il Git effettuano un test per vedere se QtCreator riesce ad utilizzare questa nuova risorsa.

Aprite QtCreator e dal menu File -> New File or Project

selezionate Import Project e Git Clone

Ora inserite nel Url la seguente linea:

https://giorgiomarinangeli71@bitbucket.org/QtTalkTeam/helloqtworld.git

Ovvero un repo di test preparato per l’occasione, scegliete la directory di destinazione e cliccate su Next

Se tutto è Ok dopo qualche minuto vi compare la schermata di Download.

Cliccate su Finish.

QtCreator aprirà i file sorgenti e vi chiederà di configurare il progetto per la compilazione. Selezionate l’opzione Desktop e confermate cliccando sul pulsante Configure Project.

Qt Configura il progetto e apre l’ambiente di edit e debug.

SDK per sistema Amber Embedded.

Ora andiamo ad installare tutto quello che è necessario per cross compilare e debaggare il nostro applicativo sulla scheda Amber.

Per poter lavorare con il targhet è necessario reperire ed installare nel proprio sistema l’SDK di sviluppo che comprende i cross compilatori, le librerie e tutto gli strumenti necessari per lavorare con la scheda targhet.

L’SDK viene generalmente creata da Yocto in fase di creazione del progetto.

Per questo esempio potete scaricare tutti il necessario dal link seguente:

https://drive.google.com/open?id=1Cgvd3Ms4QQlF2HuGQYFfEENQ5XryGv5P

Si tratta di uno script auto istallante.

Una volta scaricato nel vostro sistema mandatelo in esecuzione da una consolle con il seguente comando:

$ ./fslc-framebuffer-glibc-x86_64-meta-toolchain-qt5-armv7at2hf-neon-toolchain-2.4.1.sh

Durante l’installazione vi viene chiesto di selezionare la directory di destinazione ed altre opzione.
Lasciate sempre tutto come a default.

Terminata l’installazione sempre dalla cosolle impostate la sorgente di configurazione a Qt digitando il seguente comando:

$ source  /opt/fslc-framebuffer/2.4.1/environment-setup-armv7at2hf-neon-fslc-linux-gnueabi

Avviamo il QtCreator.

QtCreator Device configuration

Dal menu Tools seleziona Options.

Dal pannello sinistro, seleziona Devices e clicca sul pulsante Add e nella finestra che compare seleziona Generic Linux Device e clicca su Start Wizard

Inserite come Nome la scheda Amber, l’indirizzo Ip della Board  e le altre info come in figura.


Fate attenzione che l’IP si statico, se utilizzate un servizio  DHCP ci potrebbero essere dei problemi.

Terminato il tutto si apre il nuovo device che è gia pronto per essere utilizzato.
Se infatti cliccate sul pulsante Test QtCreator interrogherà la board e vi darà un responso sull’avvenuta comunicazione.

Configuriamo ora il Debug, i compilatori e tutti gli altri elementi del Kit.

Sempre dal menù Tools => Options, selezionate Build&Run sulla sinistra della schermata e selezionate il tabs Debuggers.

Selezionate Manual e cliccate sul pulsante Add.
Inserite il nome del debugger Amber Debugger ad esempio e tramite il pulsante Browser del campo Path selezionate il debugger installato con l’SDK che se avete lasciato i path di default si trova in :

/opt/fslc-framebuffer/2.4.1/sysroots/x86_64-fslcsdk-linux/usr/bin/arm-fslc-linux-gnueabi/arm-fslc-linux-gnueabi-gdb

Sempre dalla stessa pagina sezioniamo Compilers, selezioniamo la voce C++ e clicchiamo sul bottone Add.

Impostiamo il nome del compilatore nel box sottostante in Amber GCC++ e il path del compilatore che solitamente troviamo in:
/opt/fslc-framebuffer/2.4.1/sysroots/x86_64-fslcsdk-linux/usr/bin/arm-fslc-linux-gnueabi/arm-fslc-linux-gnueabi-g++

Clicchiamo ora su C e poi sul pulsante Add e anche in questo caso impostiamo nome e path del compilatore C per la scheda.

Il compilatore C si trova in:
/opt/fslc-framebuffer/2.4.1/sysroots/x86_64-fslcsdk-linux/usr/bin/arm-fslc-linux-gnueabi/arm-fslc-linux-gnueabi-g++

Clicchiamo ora sul tab  cMake e in modo simile a quanto già fatto sino ad ora impostiamo nome e path per il cMake che è nella posizione:

/opt/fslc-framebuffer/2.4.1/sysroots/x86_64-fslcsdk-linux/usr/bin/cmake

Clicchiamo su Qt Version Tab e dopo aver cliccato sul tasto Add  impostiamo il path ed il nome della versione di Qt che andremo ad utilizzare.

Il path è il seguente: /opt/fslc-framebuffer/2.4.1/sysroots/x86_64-fslcsdk-linux/usr/bin/qt5/qmake

Clicchiamo ora sul tab Kits e dopo aver premuto il tasto Add impostiamo tutti i parametri come in figura seguente:

In particolare fate attenzione a specificare correttamente la sysroot:

/opt/fslc-framebuffer/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi

Cliccate il tasto in basso Apply e chiudete la configurazione del Device.

Chiudete QtCreator e riapritelo. Forse non serve ma non si sa mai.

Effettuiamo un primo test.

Seguendo le istruzioni riportate nel paragrafo dedicato al Git, riscaricate il progetto di esempio e mettetelo in una cartella di destinazione differente da quella on cui lo avevate scaricato precedentemente.

Al termine del download vi comparirà la finestra di configurazione, questa volta oltre a desktop selezionate anche Amber.

Cliccate su Configure Project e andate avanti.

Cliccate sull’icona del computer posta sulla sinistra e selezionate il Kit Amber

Cliccate sul file HelloQtWorld.pro per aprirlo nell’Editor e aggiungete le seguenti righe di codice:

target.path = /home/root
INSTALLS += target


Cliccate sull’icona del Martello  ( build ) posta in basso a sinistra

Se tutto va bene nel pannello Compile Output potete vedere il risultato dell’operazione.

Guardate i lik seguenti per vedere cosa deve succedere alla pressione dle tasto Run e Debug.

https://drive.google.com/open?id=1Az8xv7YjNv161VtU5oOubcvdxeSLCRlD

https://drive.google.com/open?id=1thV1uX-Gf3dztHG0nrpG8QtC90bUisx7

Se non dovesse funzionare

A volte sembra che QtCreator perda il source per la configurazione Qt5
In questo caso lanciate il programma da consolle e non dal link sul desktop e dopo aver dato il comando:

source /opt/fslc-framebuffer/2.4.1/environment-setup-armv7at2hf-neon-fslc-linux-gnueabi

In altre parole dalla consolle, andate dove è installato QtCreator che solitamente è:

/home/user/Qt/Tools/QtCreator/bin/

digitate

$ source /opt/fslc-framebuffer/2.4.1/environment-setup-armv7at2hf-neon-fslc-linux-gnueabi

$ ./qtcreator

Ho inoltre visto che a volte il debugger da dei problemi.

In questo caso è meglio installare il debugger multi-architettura.

Usate il comando

$ sudo apt-get install gdb-multiarch

per installare il debugger e segute le istruzioni precedente per impostarlo all’interno di Qt Creator.

Buon Divertimento.

 

 

 

 

 

 

Un pensiero su “Amber2, sistema di sviluppo e debug embedded con QtCreator

  1. Pingback: Amber board, gestione GPIO. – GiorgioMarinangeli's Blog

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

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