SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
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

Tendances

Chroniques de formation : Scaling Code Labs avec Swarm et Compose
Chroniques de formation : Scaling Code Labs avec Swarm et ComposeChroniques de formation : Scaling Code Labs avec Swarm et Compose
Chroniques de formation : Scaling Code Labs avec Swarm et ComposeDamien Duportal
 
Introduction aux conteneurs - Agaetis
Introduction aux conteneurs - AgaetisIntroduction aux conteneurs - Agaetis
Introduction aux conteneurs - AgaetisAgaetis
 
Road map to DevOps engineering - Elie Sirius
Road map to DevOps engineering -  Elie SiriusRoad map to DevOps engineering -  Elie Sirius
Road map to DevOps engineering - Elie SiriusGDG Bujumbura
 
Présentation FusionInventory JM2L 2010
Présentation FusionInventory JM2L 2010Présentation FusionInventory JM2L 2010
Présentation FusionInventory JM2L 2010Nouh Walid
 
Kit de Developpement Synolia
Kit de Developpement SynoliaKit de Developpement Synolia
Kit de Developpement SynoliaRachid Zarouali
 
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitPrésentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitIppon
 
Migration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitMigration d'une base de code subversion vers git
Migration d'une base de code subversion vers gitGeoffrey Bachelet
 
Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherAnthony Sigogne
 
Open Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteOpen Source et contribution : Une association gagnante
Open Source et contribution : Une association gagnanteChristophe Villeneuve
 
Des jeux et des devops
Des jeux et des devopsDes jeux et des devops
Des jeux et des devopsFrederic Leger
 
Journée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousJournée DevOps : Puppet, un outil pour les installer tous
Journée DevOps : Puppet, un outil pour les installer tousPublicis Sapient Engineering
 
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Publicis Sapient Engineering
 
Industrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec DrupalIndustrialisez le développement et la maintenance de vos sites avec Drupal
Industrialisez le développement et la maintenance de vos sites avec DrupalLINAGORA
 
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...Paris Open Source Summit
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 

Tendances (20)

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

En vedette

Accelerating performance on Qt and WebKit for the MIPS architecture
Accelerating performance on Qt and WebKit for the MIPS architectureAccelerating performance on Qt and WebKit for the MIPS architecture
Accelerating performance on Qt and WebKit for the MIPS architectureaccount inactive
 
03 - Qt UI Development
03 - Qt UI Development03 - Qt UI Development
03 - Qt UI DevelopmentAndreas Jakl
 
Designing and Building (Your Own) UI Frameworks For the Enterprise
Designing and Building (Your Own) UI Frameworks For the EnterpriseDesigning and Building (Your Own) UI Frameworks For the Enterprise
Designing and Building (Your Own) UI Frameworks For the EnterpriseExoLeaders.com
 
Formation linux temps réel - Rennes 14 octobre 2014
Formation linux temps réel  - Rennes 14 octobre 2014Formation linux temps réel  - Rennes 14 octobre 2014
Formation linux temps réel - Rennes 14 octobre 2014eurogicielgroup
 
政黨票的故事
政黨票的故事政黨票的故事
政黨票的故事Macpaul Lin
 
Porting linux to a new architecture
Porting linux to a new architecturePorting linux to a new architecture
Porting linux to a new architectureKALRAY
 
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt projectPorting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt projectMacpaul Lin
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeChang W. Doh
 
Linux Porting
Linux PortingLinux Porting
Linux PortingChamp Yen
 
U boot source clean up project how-to
U boot source clean up project how-toU boot source clean up project how-to
U boot source clean up project how-toMacpaul Lin
 
U boot 程式碼打掃計畫
U boot 程式碼打掃計畫U boot 程式碼打掃計畫
U boot 程式碼打掃計畫Macpaul Lin
 
Why sending patches back is so important
Why sending patches back is so importantWhy sending patches back is so important
Why sending patches back is so importantMacpaul Lin
 
How to build a community in a company blue&macpaul coscup2015
How to build a community in a company blue&macpaul coscup2015How to build a community in a company blue&macpaul coscup2015
How to build a community in a company blue&macpaul coscup2015Macpaul Lin
 
Module 4 Embedded Linux
Module 4 Embedded LinuxModule 4 Embedded Linux
Module 4 Embedded LinuxTushar B Kute
 
Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675FITC
 
OpenWRT, A value-add base solution for your product. (2nd, Macpual)
OpenWRT, A value-add base solution for your product. (2nd, Macpual)OpenWRT, A value-add base solution for your product. (2nd, Macpual)
OpenWRT, A value-add base solution for your product. (2nd, Macpual)Macpaul Lin
 
Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)Macpaul Lin
 

En vedette (20)

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

Similaire à Qt5 embedded

Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel librePierre Ficheux
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Hacking your Home @bdx.io
Hacking your Home @bdx.ioHacking your Home @bdx.io
Hacking your Home @bdx.iolaurenthuet
 
Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Mender 2.0 101: Bien démarrer avec les 'update modules'
Mender 2.0 101: Bien démarrer avec les 'update modules'Pierre-jean Texier
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Open Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarquesOpen Wide : Les outils pour le développement des systemes embarques
Open Wide : Les outils pour le développement des systemes embarquesAlexandre LAHAYE
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantALTIC Altic
 
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL   PROGRAMMATION ET _ETAPES pour comprendreCOURS VHDL   PROGRAMMATION ET _ETAPES pour comprendre
COURS VHDL PROGRAMMATION ET _ETAPES pour comprendreMariamHafsa
 
Les solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésLes solutions libres pour les systèmes embarqués
Les solutions libres pour les systèmes embarquésAlexandre LAHAYE
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - GenèveaOS Community
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotiqueMicrosoft
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec GoMickaël Rémond
 

Similaire à Qt5 embedded (20)

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

Dernier

Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfalainfahed961
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptbentaha1011
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 

Dernier (8)

Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdfActions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
Actions du vent sur les bâtiments selon lEurocode 1 – Partie 1-4.pdf
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.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