Octobre 2016
« Qt5 pour l'embarqué »
Pierre-Jean TEXIER
2
Présentation
●
Ingénieur Linux Embarqué (Amplitude Systèmes)
●
Co-auteur « Yocto for Raspberry-Pi  »
●
Co-Auteur Open Silicium
●
« FOSS » enthusiast
3
Qt5 : Quesako ?!
– Prononcé : /kju t/ Cute et non pas QTː →
– Première version en 1996 (trolltech) Achat par Nokia en 2008 Qt5 en 2012 (Digia)→ →
– Pour créer des GUI mais pas que …
●
Différentiation au fil des releases (port série, bus CAN, Network, …)
– Un ensemble de librairies et d'outils
●
On parlera de framework !
– Cross Platform
4
Qt5 : Architecture
Architecture Qt5
Essentials
Qt GUI
Add-ons
...
Qt Core
Qt Concurrent
Qt D-Bus
Qt 3D
Qt NFC
Qt Serial Port
Qt Bluetooth
Qt SVG
Qt Location
Qt Serial Bus
Qt Multimedia Widgets
Qt Multimedia Qt QML Qt Quick
Qt Network
Qt Quick Controls
Qt SQL
...
Tools
Qt Designer
Qt Creator
...
5
Qt5 : Architecture
Architecture Qt5
Essentials
Qt GUI
Add-ons
...
Qt Core
Qt Concurrent
Qt D-Bus
Qt 3D
Qt NFC
Qt Serial Port
Qt Bluetooth
Qt SVG
Qt Location
Qt Serial Bus
Qt Multimedia Widgets
Qt Multimedia Qt QML Qt Quick
Qt Network
Qt Quick Controls
Qt SQL
...
Tools
Qt Designer
Qt Creator
...
Brique de base : le core !
6
Qt5 : Architecture
Architecture Qt5
Essentials
Qt GUI
Add-ons
...
Qt Core
Qt Concurrent
Qt D-Bus
Qt 3D
Qt NFC
Qt Serial Port
Qt Bluetooth
Qt SVG
Qt Location
Qt Serial Bus
Qt Multimedia Widgets
Qt Multimedia Qt QML Qt Quick
Qt Network
Qt Quick Controls
Qt SQL
...
Tools
Qt Designer
Qt Creator
...
Brique IHM !
7
Qt5 : Architecture
Architecture Qt5
Essentials
Qt GUI
Add-ons
...
Qt Core
Qt Concurrent
Qt D-Bus
Qt 3D
Qt NFC
Qt Serial Port
Qt Bluetooth
Qt SVG
Qt Location
Qt Serial Bus
Qt Multimedia Widgets
Qt Multimedia Qt QML Qt Quick
Qt Network
Qt Quick Controls
Qt SQL
...
Tools
Qt Designer
Qt Creator
...
Brique pour l'intégration
des bases de données
8
Qt5 : Architecture
Architecture Qt5
Essentials
Qt GUI
Add-ons
...
Qt Core
Qt Concurrent
Qt D-Bus
Qt 3D
Qt NFC
Qt Serial Port
Qt Bluetooth
Qt SVG
Qt Location
Qt Serial Bus
Qt Multimedia Widgets
Qt Multimedia Qt QML Qt Quick
Qt Network
Qt Quick Controls
Qt SQL
...
Tools
Qt Designer
Qt Creator
...
Brique d'abstraction pour
la programmation réseau (UDP, TCP, ...)
9
Qt5 : Architecture
Architecture Qt5
Essentials
Qt GUI
Add-ons
...
Qt Core
Qt Concurrent
Qt D-Bus
Qt 3D
Qt NFC
Qt Serial Port
Qt Bluetooth
Qt SVG
Qt Location
Qt Serial Bus
Qt Multimedia Widgets
Qt Multimedia Qt QML Qt Quick
Qt Network
Qt Quick Controls
Qt SQL
...
Tools
Qt Designer
Qt Creator
...
Brique pour la gestion
dynamique et la customisation
d'interface
10
Qt5 : Architecture
Architecture Qt5
Essentials
Qt GUI
Add-ons
...
Qt Core
Qt Concurrent
Qt D-Bus
Qt 3D
Qt NFC
Qt Serial Port
Qt Bluetooth
Qt SVG
Qt Location
Qt Serial Bus
Qt Multimedia Widgets
Qt Multimedia Qt QML Qt Quick
Qt Network
Qt Quick Controls
Qt SQL
...
Tools
Qt Designer
Qt Creator
...
11
Qt5 : Architecture
– Qt n'utilise pas d'autotools mais un outils « maison » qmake
●
Il faut donc l'adapter pour du développement croisée
● Tout se passe dans le répertoire mkspecs :
– Raspberry-pi (1/2/3)
– i.MX6 – i.MX7
– Jetson TK1
– ...
●
Fichiers :
– qmake.conf
– qplatformdefs.h 
Options du compilateur,
backend graphique, ...
Définition de la
plateforme (#include,
#define)
Automatise la génération
de Makefile (*.pro)
12
Qt5 : les +
●
L'aspect affichage (QWS → QPA) : Plus de notion de Client/Serveur Couche d'abstraction plus au niveau (+ de plate-→
formes) 
– Depuis Qt5 → QPA = devices/OS abstraction (meilleure gestion des plateformes et systèmes de fenêtrage)
– L'affichage en lui-même linuxFB (quand pas de GPU), EGLFS, Wayland, ...→
●
Exemple :
$ ./my­qt5­app ­platform linuxfb (par défaut : /dev/fb0)
$ ./my­qt5­app ­platform linuxfb:fb=/dev/fb2
ou encore
$ ./my­qt5­app ­platform eglfs
13
Qt5 : les +
L'aspect event (souris, clavier, tactile)
– Plugin Input
● evdev Au travers du pilote noyau :→ /dev/input/event*
Helpers :
– libinput, (alternative au plugin evdev de Qt)
– tslib, pour du résistif par exemple
● Calibration via l'utilitaire ts_calibrate
●
Fichier de calibration dans /etc pointercal→
– evedevtouch (pour le multi-touch)
14
Qt5 : les +
●
Exemple :
$ ./my­qt5­app ­platform linuxfb ­plugin evedevtouch
●
Pour EGLFS (sans libinput)
– Exemple : QT_QPA_PLATFORM=eglfs
– On passera par les variables d'env :
●
QT_QPA_EVDEV_MOUSE_PARAMETERS,
●
QT_QPA_EVDEV_KEYBOARD_PARAMETERS,
●
QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS
– Exemple  :
QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0
●
Pour logger les « event » :
export QT_LOGGING_RULES=qt.qpa.*=true
15
Qt5 : Compilation de Qt 1/2
●
Les besoins :
– Une « cross-toolchain » => ct-ng, Linaro, Build-system, ...
– un sysroot => Le root filesystem
●
Choix de la cible :
$ ls ­l <qt­sources>/qtbase/mkspecs/devices/
● Prenons l'exemple pour linux­imx6­g++
●
L'étape du « configure » => mais aucun rapport avec les Autotools !
$ ./configure ­v ­release 
­device linux­imx6­g++ 
­device­option CROSS_COMPILE=<toolchain­path> 
­sysroot <rootfs­path> 
­prefix <install­path>
16
Qt5 : Compilation de Qt 2/2
Configure summary
Building on:   linux­g++ (x86_64, CPU features: mmx sse sse2)
Building for:  devices/linux­imx6­g++ (arm, CPU features: neon)
QPA backends: 
  ...
    EGLFS ................ yes
      EGLFS i.MX6 ........ yes
      EGLFS i.MX6 Wayland. no
      EGLFS EGLDevice .... no
      ...
      EGLFS Raspberry Pi . no
    LinuxFB .............. yes
   ...
●
Et pour compiler !!!! Il suffit de lancer la commande de compilation→
– $ make ­j(nb processors)
– $ make install
17
Qt5 : QtCreator
●
Création du Kit (Outils > Options > Compiler et Exécuter)
18
Qt5 : QtCreator
●
Périphérique de déploiement : « permet de déployer le binaire sur la cible » (sftp)
●
Dans le .pro :
target.path= /usr/bin
INSTALLS += target
●
Test de communication
Where ?
19
Qt5 : Build System
●
Buildroot
– $ make freescale_imx6qsabresd_defconfig
– $ make xconfig
– Notion de firmware
20
Qt5 : Build System
●
Yocto/Open Embedded
– Intégration de la meta­qt5 (fichier bblayers.conf)
→ https://github.com/meta-qt5/meta-qt5
– Pour générer une toochain générique :
$ bitbake meta­toolchain­qt5
●
Aura pour effet de générer un sdk relogeable (32 bits ou 64 bits)
– On pourra intégrer les éléments à l'image de cette manière :
IMAGE_INSTALL += "
qtbase qtconnectivity 
"
21
Démo 1 : présentation
●
WaRP7 en mode AP (Access point) :
– Dnsmasq pour l'attribution des IP
– Hostapd pour la configuration du point d'accès (ssid=warp7 / passphrase=iotonwarp7)
QHostAddress::Broadcast
22
Démo 1 : fichier .pro
QT += core network
QT -= gui
TEMPLATE = app
TARGET = WaRP7_Broadcast
CONFIG += console
SOURCES += main.cpp
CWaRP7Broadcast.cpp
HEADERS += 
CWaRP7Broadcast.h
target.path= /usr/bin
INSTALLS += target
Nos module
GUI ?!
Makefile pour application
La cible, notre binaire !
Chemin d'installation sur la cible
Fichiers du projet
23
Démo 2
●
Pour intégrer le module buletooth
QT += core bluetooth
24
Conclusion
●
https://github.com/texierp/meetup_linux-embedded_bdx/tree/master/
18-Octobre/Qt5
25
Questions ?
Contact : texier.pj2@gmail.com

Contenu connexe

PDF
Qt4 et 5 pour Linux embarqué
PDF
Plateformes Linux Embedded
PDF
Open Wide : Les interfaces graphiques dans l'embarque
PDF
Solutions temps réel sous linux
PDF
Introduction à Qt QML
PPTX
Meetup XVRRAA #2 : Les news de l'open source
PPTX
Réalité virtuelle + Open source = &lt;3
Qt4 et 5 pour Linux embarqué
Plateformes Linux Embedded
Open Wide : Les interfaces graphiques dans l'embarque
Solutions temps réel sous linux
Introduction à Qt QML
Meetup XVRRAA #2 : Les news de l'open source
Réalité virtuelle + Open source = &lt;3

Tendances (20)

ODP
Prototypage IoT avec logiciel/matériel libre
PDF
Chroniques de formation : Scaling Code Labs avec Swarm et Compose
PDF
SDN OpenDaylight
PDF
Introduction aux conteneurs - Agaetis
PPTX
Road map to DevOps engineering - Elie Sirius
PDF
Présentation FusionInventory JM2L 2010
PPTX
Kit de Developpement Synolia
PDF
Présentation du retour d'expérience sur Git
PDF
Migration d'une base de code subversion vers git
PDF
Déploiement et gestion d'un site web avec Rancher
PDF
Open Source et contribution : Une association gagnante
PPTX
REX Devops Docker
PDF
Git développez autrement
PPTX
Des jeux et des devops
PDF
Journée DevOps : Puppet, un outil pour les installer tous
PDF
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
PDF
Industrialisez le développement et la maintenance de vos sites avec Drupal
PPTX
Versioning avec Git
PDF
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
ODP
Rex docker en production meeutp-docker-nantes
Prototypage IoT avec logiciel/matériel libre
Chroniques de formation : Scaling Code Labs avec Swarm et Compose
SDN OpenDaylight
Introduction aux conteneurs - Agaetis
Road map to DevOps engineering - Elie Sirius
Présentation FusionInventory JM2L 2010
Kit de Developpement Synolia
Présentation du retour d'expérience sur Git
Migration d'une base de code subversion vers git
Déploiement et gestion d'un site web avec Rancher
Open Source et contribution : Une association gagnante
REX Devops Docker
Git développez autrement
Des jeux et des devops
Journée DevOps : Puppet, un outil pour les installer tous
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Industrialisez le développement et la maintenance de vos sites avec Drupal
Versioning avec Git
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
Rex docker en production meeutp-docker-nantes
Publicité

En vedette (20)

PDF
Accelerating performance on Qt and WebKit for the MIPS architecture
PDF
03 - Qt UI Development
PDF
Designing and Building (Your Own) UI Frameworks For the Enterprise
PPT
了解 Qt
PDF
Formation linux temps réel - Rennes 14 octobre 2014
PDF
Maemo 6 UI Framework
PPTX
政黨票的故事
PDF
Porting linux to a new architecture
PDF
Porting a new architecture (NDS32) to open wrt project
PDF
OVERVIEW: Chromium Source Tree
PDF
Linux Porting
PPT
ODP
U boot source clean up project how-to
PDF
U boot 程式碼打掃計畫
PPT
Why sending patches back is so important
PDF
How to build a community in a company blue&macpaul coscup2015
PDF
Module 4 Embedded Linux
PDF
Charity apprentice logo-blue-6675
PPT
OpenWRT, A value-add base solution for your product. (2nd, Macpual)
PPT
Bootstrap process of u boot (NDS32 RISC CPU)
Accelerating performance on Qt and WebKit for the MIPS architecture
03 - Qt UI Development
Designing and Building (Your Own) UI Frameworks For the Enterprise
了解 Qt
Formation linux temps réel - Rennes 14 octobre 2014
Maemo 6 UI Framework
政黨票的故事
Porting linux to a new architecture
Porting a new architecture (NDS32) to open wrt project
OVERVIEW: Chromium Source Tree
Linux Porting
U boot source clean up project how-to
U boot 程式碼打掃計畫
Why sending patches back is so important
How to build a community in a company blue&macpaul coscup2015
Module 4 Embedded Linux
Charity apprentice logo-blue-6675
OpenWRT, A value-add base solution for your product. (2nd, Macpual)
Bootstrap process of u boot (NDS32 RISC CPU)
Publicité

Similaire à Qt5 embedded (20)

PDF
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
ODP
Tizen sdk-solutionslinux-20130529
PDF
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
PDF
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
DOC
_JCVFr
PDF
Hacking your Home @bdx.io
PDF
Démo puppet et état du projet
PDF
Mender 2.0 101: Bien démarrer avec les 'update modules'
PDF
sshGate
PDF
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
PDF
Open Wide : Les outils pour le développement des systemes embarques
PPTX
Raspberry Pi: Les utilisations
PDF
Apache Kafka, Un système distribué de messagerie hautement performant
PDF
Apache kafka big data track
PDF
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
PDF
Les solutions libres pour les systèmes embarqués
PPTX
3 Microsoft Advanced Threat Analytics - Genève
PDF
Pentest bus pirate
PPTX
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
PPTX
présentation IOT........................
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Tizen sdk-solutionslinux-20130529
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
_JCVFr
Hacking your Home @bdx.io
Démo puppet et état du projet
Mender 2.0 101: Bien démarrer avec les 'update modules'
sshGate
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Open Wide : Les outils pour le développement des systemes embarques
Raspberry Pi: Les utilisations
Apache Kafka, Un système distribué de messagerie hautement performant
Apache kafka big data track
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
Les solutions libres pour les systèmes embarqués
3 Microsoft Advanced Threat Analytics - Genève
Pentest bus pirate
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
présentation IOT........................

Dernier (12)

PDF
Rapport_PFE_Seifeddine_ABIDI_ESPRIT_24/25
PDF
Processus-Elaboration-Projet-de-Construction.pdf
PPTX
COURS INFORMATIQUE rtyuiofghjkvbn,yuighj
PPTX
Mechanical system design used to design dental implants
PDF
formation en fibre optique le support le plus .pdf
PPTX
DASY : Détection Automatisée des Symptômes de jaunisse de la vigne
PPTX
Amélioration des propriétés mécanique_pdf.pptx
PDF
DASY : Détection Automatisée des Symptômes de jaunisse de la vigne
PDF
Algorithmique et programmation Algorithmique et programmation
PPTX
Amélioration des propriétés mécanique_pdf.pptx
PPTX
PRÉSENTATION MEMOIRE DE FIN DE FORMATION
PPTX
Slide Steve2 optimatisation sur les engrainage .pptx
Rapport_PFE_Seifeddine_ABIDI_ESPRIT_24/25
Processus-Elaboration-Projet-de-Construction.pdf
COURS INFORMATIQUE rtyuiofghjkvbn,yuighj
Mechanical system design used to design dental implants
formation en fibre optique le support le plus .pdf
DASY : Détection Automatisée des Symptômes de jaunisse de la vigne
Amélioration des propriétés mécanique_pdf.pptx
DASY : Détection Automatisée des Symptômes de jaunisse de la vigne
Algorithmique et programmation Algorithmique et programmation
Amélioration des propriétés mécanique_pdf.pptx
PRÉSENTATION MEMOIRE DE FIN DE FORMATION
Slide Steve2 optimatisation sur les engrainage .pptx

Qt5 embedded

  • 1. Octobre 2016 « Qt5 pour l'embarqué » Pierre-Jean TEXIER
  • 2. 2 Présentation ● Ingénieur Linux Embarqué (Amplitude Systèmes) ● Co-auteur « Yocto for Raspberry-Pi  » ● Co-Auteur Open Silicium ● « FOSS » enthusiast
  • 3. 3 Qt5 : Quesako ?! – Prononcé : /kju t/ Cute et non pas QTː → – Première version en 1996 (trolltech) Achat par Nokia en 2008 Qt5 en 2012 (Digia)→ → – Pour créer des GUI mais pas que … ● Différentiation au fil des releases (port série, bus CAN, Network, …) – Un ensemble de librairies et d'outils ● On parlera de framework ! – Cross Platform
  • 4. 4 Qt5 : Architecture Architecture Qt5 Essentials Qt GUI Add-ons ... Qt Core Qt Concurrent Qt D-Bus Qt 3D Qt NFC Qt Serial Port Qt Bluetooth Qt SVG Qt Location Qt Serial Bus Qt Multimedia Widgets Qt Multimedia Qt QML Qt Quick Qt Network Qt Quick Controls Qt SQL ... Tools Qt Designer Qt Creator ...
  • 5. 5 Qt5 : Architecture Architecture Qt5 Essentials Qt GUI Add-ons ... Qt Core Qt Concurrent Qt D-Bus Qt 3D Qt NFC Qt Serial Port Qt Bluetooth Qt SVG Qt Location Qt Serial Bus Qt Multimedia Widgets Qt Multimedia Qt QML Qt Quick Qt Network Qt Quick Controls Qt SQL ... Tools Qt Designer Qt Creator ... Brique de base : le core !
  • 6. 6 Qt5 : Architecture Architecture Qt5 Essentials Qt GUI Add-ons ... Qt Core Qt Concurrent Qt D-Bus Qt 3D Qt NFC Qt Serial Port Qt Bluetooth Qt SVG Qt Location Qt Serial Bus Qt Multimedia Widgets Qt Multimedia Qt QML Qt Quick Qt Network Qt Quick Controls Qt SQL ... Tools Qt Designer Qt Creator ... Brique IHM !
  • 7. 7 Qt5 : Architecture Architecture Qt5 Essentials Qt GUI Add-ons ... Qt Core Qt Concurrent Qt D-Bus Qt 3D Qt NFC Qt Serial Port Qt Bluetooth Qt SVG Qt Location Qt Serial Bus Qt Multimedia Widgets Qt Multimedia Qt QML Qt Quick Qt Network Qt Quick Controls Qt SQL ... Tools Qt Designer Qt Creator ... Brique pour l'intégration des bases de données
  • 8. 8 Qt5 : Architecture Architecture Qt5 Essentials Qt GUI Add-ons ... Qt Core Qt Concurrent Qt D-Bus Qt 3D Qt NFC Qt Serial Port Qt Bluetooth Qt SVG Qt Location Qt Serial Bus Qt Multimedia Widgets Qt Multimedia Qt QML Qt Quick Qt Network Qt Quick Controls Qt SQL ... Tools Qt Designer Qt Creator ... Brique d'abstraction pour la programmation réseau (UDP, TCP, ...)
  • 9. 9 Qt5 : Architecture Architecture Qt5 Essentials Qt GUI Add-ons ... Qt Core Qt Concurrent Qt D-Bus Qt 3D Qt NFC Qt Serial Port Qt Bluetooth Qt SVG Qt Location Qt Serial Bus Qt Multimedia Widgets Qt Multimedia Qt QML Qt Quick Qt Network Qt Quick Controls Qt SQL ... Tools Qt Designer Qt Creator ... Brique pour la gestion dynamique et la customisation d'interface
  • 10. 10 Qt5 : Architecture Architecture Qt5 Essentials Qt GUI Add-ons ... Qt Core Qt Concurrent Qt D-Bus Qt 3D Qt NFC Qt Serial Port Qt Bluetooth Qt SVG Qt Location Qt Serial Bus Qt Multimedia Widgets Qt Multimedia Qt QML Qt Quick Qt Network Qt Quick Controls Qt SQL ... Tools Qt Designer Qt Creator ...
  • 11. 11 Qt5 : Architecture – Qt n'utilise pas d'autotools mais un outils « maison » qmake ● Il faut donc l'adapter pour du développement croisée ● Tout se passe dans le répertoire mkspecs : – Raspberry-pi (1/2/3) – i.MX6 – i.MX7 – Jetson TK1 – ... ● Fichiers : – qmake.conf – qplatformdefs.h  Options du compilateur, backend graphique, ... Définition de la plateforme (#include, #define) Automatise la génération de Makefile (*.pro)
  • 12. 12 Qt5 : les + ● L'aspect affichage (QWS → QPA) : Plus de notion de Client/Serveur Couche d'abstraction plus au niveau (+ de plate-→ formes)  – Depuis Qt5 → QPA = devices/OS abstraction (meilleure gestion des plateformes et systèmes de fenêtrage) – L'affichage en lui-même linuxFB (quand pas de GPU), EGLFS, Wayland, ...→ ● Exemple : $ ./my­qt5­app ­platform linuxfb (par défaut : /dev/fb0) $ ./my­qt5­app ­platform linuxfb:fb=/dev/fb2 ou encore $ ./my­qt5­app ­platform eglfs
  • 13. 13 Qt5 : les + L'aspect event (souris, clavier, tactile) – Plugin Input ● evdev Au travers du pilote noyau :→ /dev/input/event* Helpers : – libinput, (alternative au plugin evdev de Qt) – tslib, pour du résistif par exemple ● Calibration via l'utilitaire ts_calibrate ● Fichier de calibration dans /etc pointercal→ – evedevtouch (pour le multi-touch)
  • 14. 14 Qt5 : les + ● Exemple : $ ./my­qt5­app ­platform linuxfb ­plugin evedevtouch ● Pour EGLFS (sans libinput) – Exemple : QT_QPA_PLATFORM=eglfs – On passera par les variables d'env : ● QT_QPA_EVDEV_MOUSE_PARAMETERS, ● QT_QPA_EVDEV_KEYBOARD_PARAMETERS, ● QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS – Exemple  : QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0 ● Pour logger les « event » : export QT_LOGGING_RULES=qt.qpa.*=true
  • 15. 15 Qt5 : Compilation de Qt 1/2 ● Les besoins : – Une « cross-toolchain » => ct-ng, Linaro, Build-system, ... – un sysroot => Le root filesystem ● Choix de la cible : $ ls ­l <qt­sources>/qtbase/mkspecs/devices/ ● Prenons l'exemple pour linux­imx6­g++ ● L'étape du « configure » => mais aucun rapport avec les Autotools ! $ ./configure ­v ­release  ­device linux­imx6­g++  ­device­option CROSS_COMPILE=<toolchain­path>  ­sysroot <rootfs­path>  ­prefix <install­path>
  • 16. 16 Qt5 : Compilation de Qt 2/2 Configure summary Building on:   linux­g++ (x86_64, CPU features: mmx sse sse2) Building for:  devices/linux­imx6­g++ (arm, CPU features: neon) QPA backends:    ...     EGLFS ................ yes       EGLFS i.MX6 ........ yes       EGLFS i.MX6 Wayland. no       EGLFS EGLDevice .... no       ...       EGLFS Raspberry Pi . no     LinuxFB .............. yes    ... ● Et pour compiler !!!! Il suffit de lancer la commande de compilation→ – $ make ­j(nb processors) – $ make install
  • 17. 17 Qt5 : QtCreator ● Création du Kit (Outils > Options > Compiler et Exécuter)
  • 18. 18 Qt5 : QtCreator ● Périphérique de déploiement : « permet de déployer le binaire sur la cible » (sftp) ● Dans le .pro : target.path= /usr/bin INSTALLS += target ● Test de communication Where ?
  • 19. 19 Qt5 : Build System ● Buildroot – $ make freescale_imx6qsabresd_defconfig – $ make xconfig – Notion de firmware
  • 20. 20 Qt5 : Build System ● Yocto/Open Embedded – Intégration de la meta­qt5 (fichier bblayers.conf) → https://github.com/meta-qt5/meta-qt5 – Pour générer une toochain générique : $ bitbake meta­toolchain­qt5 ● Aura pour effet de générer un sdk relogeable (32 bits ou 64 bits) – On pourra intégrer les éléments à l'image de cette manière : IMAGE_INSTALL += " qtbase qtconnectivity  "
  • 21. 21 Démo 1 : présentation ● WaRP7 en mode AP (Access point) : – Dnsmasq pour l'attribution des IP – Hostapd pour la configuration du point d'accès (ssid=warp7 / passphrase=iotonwarp7) QHostAddress::Broadcast
  • 22. 22 Démo 1 : fichier .pro QT += core network QT -= gui TEMPLATE = app TARGET = WaRP7_Broadcast CONFIG += console SOURCES += main.cpp CWaRP7Broadcast.cpp HEADERS += CWaRP7Broadcast.h target.path= /usr/bin INSTALLS += target Nos module GUI ?! Makefile pour application La cible, notre binaire ! Chemin d'installation sur la cible Fichiers du projet
  • 23. 23 Démo 2 ● Pour intégrer le module buletooth QT += core bluetooth