SlideShare une entreprise Scribd logo
ARCHITECTURE HéTéROGèNE AU SERVICE DE L’IOT
INDUSTRIEL ?
Pierre-Jean Texier
$ whoami => Pierre-Jean Texier
Ingénieur Linux Embarqué Lafon Technologies
Free software enthusiast
Co-auteur de "Yocto for Raspberry Pi" et auteur dans
GNU/Linux magazine et Open silicium
Pierre-Jean Texier, L’Open Source dans l’IoT 1/32
Au service du paiement ...
4 personnes, diverses activités au sein du BE :
Linux Device Driver (i2c, mtd, ...)
Board Support Package (OpenEmbedded) =>ARM & MIPS
Interface Graphique (Framework Qt)
Firmware MCU => EFM32 & STM32
...
APL3
Pierre-Jean Texier, L’Open Source dans l’IoT 2/32
I.MX7
En quelques mots
Architecture hétérogène :
Cortex A7 (1 pour l’i.MX7s, 2 pour l’i.MX7d)
Cortex M4
Conçu pour :
être efficace en energie
avoir une "expérience" temps-réel
faire tourner des applications complexes
faire du multimédia
...
Pierre-Jean Texier, L’Open Source dans l’IoT 4/32
AMP, SMP, Hétérogène, ...
Pierre-Jean Texier, L’Open Source dans l’IoT 5/32
Architecture
Pierre-Jean Texier, L’Open Source dans l’IoT 6/32
GPU Less
Il est quand même possible de faire tourner des applications !
Utilisation de Qt Quick 2D Renderer => Depuis la version 5.7 de
Qt
Niveau framebuffer => linuxfb
Il faudra configurer l’environnement :
$ export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
$ export QMLSCENE_DEVICE=softwarecontext
Pierre-Jean Texier, L’Open Source dans l’IoT 7/32
L’approche traditionelle
MCU et MPU séparés
Communication au travers un bus de communication (i2c ou
SPI)
LxMCU ?
Séparation de l’architecture logicielle
Le MCU pour les acquisitions (temps-réel)
Le MPU pour l’affichage/connectivités
Pierre-Jean Texier, L’Open Source dans l’IoT 8/32
L’approche HMP
Partagent les mêmes ressources
matérielles (i2c, GPIO, ...)
Communication en mémoire
partagée: DDR3
Avantages de l’architecture :
Plusieurs OS sur une même
puce
Mise à jour plus simple
(mender.io, SWUpdate, rauc)
Communication + rapide
Réduction du coût de la BOM
...
Pierre-Jean Texier, L’Open Source dans l’IoT 9/32
CORTEX M4: BOOT, MéMOIRE, ...
Cortex M4
Pierre-Jean Texier, L’Open Source dans l’IoT 11/32
Cortex M4
Mémoire:
Plusieurs types de mémoires: OCRAM, DDR3, TCM
TCM locale au cortex M4, donc plus performante
Aussi accessible depuis le cortex A7
Utile pour le chargement de l’image depuis u-boot :
=> fatload mmc 0:1 0x7F8000 main.bin
Commande bootaux, pour démarrer à une adresse donnée:
=> bootaux 0x7F8000
Le cortex A7 est maître :
Démarre les horloges
Charge le code du cortex M4 à l’adresse TCM (TCML)
Démarre le coeur M4 (out of reset)
Pierre-Jean Texier, L’Open Source dans l’IoT 12/32
RESOURCE DOMAIN CONTROLLER
Resource Domain Controller
L’élément central du System on Chip
Pierre-Jean Texier, L’Open Source dans l’IoT 14/32
Resource Domain Controller: le garant (1/3)
Sous-système pour le partionnement (domaine, périphérique,
mémoire)
Nécessaire pour éviter les accès concurrents !
DomainID :
4 domaines pour les bus maîtres (A7, M4, SDMA, ...)
Notion de MDA (Master Domain Assignment)
= 0 au boot
Dans notre cas, seul le cortex M4 est sur un domaine
différent
Exemple :
RDC_SetDomainID(RDC,rdcMdaM4,1,false);
Pierre-Jean Texier, L’Open Source dans l’IoT 15/32
Resource Domain Controller: le garant (2/3)
PDAP: Peripheral Domain Access Permission
Gestion des permissions des périphériques en fonction du
DomainID
via la fonction RDC_SetPdapAccess()
Un exemple :
Pierre-Jean Texier, L’Open Source dans l’IoT 16/32
Resource Domain Controller: le garant (3/3)
Pour réaliser cette implémentation :
Où:
Le 3ème paramètre de la fonction permet de remplir le
registe PDAP
Dans notre cas, registre = 00001100 (R/W sur domaine 1)
Le 4ème paramètre, permet de sélectionner le bit SREQ
pour l’utilisation des sémaphores matériels
Pierre-Jean Texier, L’Open Source dans l’IoT 17/32
RPMSG
Explications
RPMsg est un bus de communication basé sur la couche de
transport VirtIO
Permet la gestion des IPC (Inter Processor Communication)
Architecture Client/Serveur
VirtIO : une couche d’abstraction transport basée sur la
mémoire partagée
Fournit une API Virtqueue pour la communication avec le
processeur distant
Architecture à buffer circulaire -> VRING
Simplement :
2 buffers VirtIO -> TX et RX
512 Octects chacun
Emplacement VRING hard-coded (GNU/Linux &
FreeRTOS)
Pierre-Jean Texier, L’Open Source dans l’IoT 19/32
Implémentation
FreeRTOS
Basé sur OpenAMP
Portage réalisé par NXP (et la communauté !)
GNU/Linux
Au travers une ligne série virtuelle (/dev/ttyRPMSG)
Driver fournit par NXP: imx-rpmsg-tty
Pierre-Jean Texier, L’Open Source dans l’IoT 20/32
Pour résumer ...
Pierre-Jean Texier, L’Open Source dans l’IoT 21/32
ETUDE DE CAS
Object connecté (libre!) pour la mesure de la qualité de l’air
Pierre-Jean Texier, L’Open Source dans l’IoT 23/32
Les besoins
La carte : WaRP7 (Wearable Reference Platform)
Pierre-Jean Texier, L’Open Source dans l’IoT 24/32
Les besoins
La carte : WaRP7 (Wearable Reference Platform)
FreeRTOS côté cortex M4
Acquisitions capteur + communication avec cortex A7
Utilisation de la socket MikroBUS
Pierre-Jean Texier, L’Open Source dans l’IoT 24/32
Les besoins
La carte : WaRP7 (Wearable Reference Platform)
FreeRTOS côté cortex M4
Acquisitions capteur + communication avec cortex A7
Utilisation de la socket MikroBUS
Yocto/OpenEmbedded côté cortex A7
Une application Qt pour la récupération des données
RPMsg
Une application Qt pour les échanges en BLE
QSharedMemory entre les 2 applications.
Pierre-Jean Texier, L’Open Source dans l’IoT 24/32
Implémentation FreeRTOS
air-quality-click : Acquisition + Dialogue A7
Tâche iaqDataTask
Acquisitions i2c
Mise à jour des champs de la structure de données (co2,
TVOC, ...)
Utilisation de vTaskDelay()
Pierre-Jean Texier, L’Open Source dans l’IoT 25/32
Implémentation FreeRTOS
air-quality-click : Acquisition + Dialogue A7
Tâche iaqDataTask
Acquisitions i2c
Mise à jour des champs de la structure de données (co2,
TVOC, ...)
Utilisation de vTaskDelay()
Tâche commandTask
Création du canal RPMsg
Gestion des échanges avec le coeur distant
Pierre-Jean Texier, L’Open Source dans l’IoT 25/32
Implémentation Linux
ServiceRPMSG : Dialogue A7 <-> M4
Utilisation de la ligne série virtuelle /dev/ttyRPMSG
Configuration du descripteur de fichier associé (via
termios)
Utilisation des primitives read() et write()
Protocole simple, ex:
$ echo "?getAirQuality" > /dev/ttyRPMSG
Mise à disposition des données dans un segment mémoire
Pierre-Jean Texier, L’Open Source dans l’IoT 26/32
Implémentation Linux
ServiceGateway : Connectivité sans-fil
Récupération des données du segment mémoire
Utilisation de l’API Qt Bluetooth et bluez5
nom du périphérique : Captronic IoT
Utilisation du Service GATT Automation I/O doc
Avec la caractéristique GATT Analog doc
Gestion:
des read -> "Notify"
des write -> !printTVOC
Pierre-Jean Texier, L’Open Source dans l’IoT 27/32
DéMO SUR CIBLE
Démarrage de la cible
1. Démarrage du cortex M4
2. Démarrage du cortex A7
3. Insertion du driver pour la gestion RPMsg
4. Configuration de l’interface BLE => hciconfig
5. Démarrage des applications
Pierre-Jean Texier, L’Open Source dans l’IoT 29/32
BLE
BLE Scanner: découverte du
périphérique
Pierre-Jean Texier, L’Open Source dans l’IoT 30/32
BLE
BLE Scanner: découverte du
périphérique
BLE Scanner: découverte du
service
Pierre-Jean Texier, L’Open Source dans l’IoT 30/32
BLE
BLE Scanner: découverte du
périphérique
BLE Scanner: découverte du
service
BLE Scanner: Gestion du
write
Pierre-Jean Texier, L’Open Source dans l’IoT 30/32
BLE
BLE Scanner: découverte du
périphérique
BLE Scanner: découverte du
service
BLE Scanner: Gestion du
write
BLE Scanner: Gestion du
read
Pierre-Jean Texier, L’Open Source dans l’IoT 30/32
may the (open) IoT be with you !
Pierre-Jean Texier, L’Open Source dans l’IoT 31/32
Questions?
texier.pj2@gmail.com
twitter: pjtexier
Pierre-Jean Texier, L’Open Source dans l’IoT 32/32

Contenu connexe

Tendances

Embedded Systems
Embedded SystemsEmbedded Systems
Embedded Systems
Sara Morgan
 
QCM informatique de base
QCM informatique de baseQCM informatique de base
QCM informatique de base
Frust Rados
 
QCM Sécurité Informatique
QCM Sécurité InformatiqueQCM Sécurité Informatique
QCM Sécurité Informatique
Zakariyaa AIT ELMOUDEN
 
QCM basique sur les réseaux informatiques
QCM basique sur les réseaux informatiquesQCM basique sur les réseaux informatiques
QCM basique sur les réseaux informatiques
Frust Rados
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linux
embedded-linux-bdx
 
Net duino et le .net micro framework
Net duino et le .net micro frameworkNet duino et le .net micro framework
Net duino et le .net micro framework
Vincent Hubert
 
Install party
Install partyInstall party
Install party
Ghariani Tewfik
 
Présentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECSPrésentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECS
Alexandre LAHAYE
 
Architecture
ArchitectureArchitecture
Architecture
LotfiHamrouni1
 
Plateformes Linux Embedded
Plateformes Linux EmbeddedPlateformes Linux Embedded
Plateformes Linux Embedded
embedded-linux-bdx
 

Tendances (10)

Embedded Systems
Embedded SystemsEmbedded Systems
Embedded Systems
 
QCM informatique de base
QCM informatique de baseQCM informatique de base
QCM informatique de base
 
QCM Sécurité Informatique
QCM Sécurité InformatiqueQCM Sécurité Informatique
QCM Sécurité Informatique
 
QCM basique sur les réseaux informatiques
QCM basique sur les réseaux informatiquesQCM basique sur les réseaux informatiques
QCM basique sur les réseaux informatiques
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linux
 
Net duino et le .net micro framework
Net duino et le .net micro frameworkNet duino et le .net micro framework
Net duino et le .net micro framework
 
Install party
Install partyInstall party
Install party
 
Présentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECSPrésentation Bluetooth Low Energy - SMILE ECS
Présentation Bluetooth Low Energy - SMILE ECS
 
Architecture
ArchitectureArchitecture
Architecture
 
Plateformes Linux Embedded
Plateformes Linux EmbeddedPlateformes Linux Embedded
Plateformes Linux Embedded
 

Similaire à Architecture hétérogène au service de l'IoT industriel ?

Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
Pôle Systematic Paris-Region
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
Hamza RAJHI
 
TelCar : Solution de lecture des informations de bord de véhicule
TelCar : Solution de lecture des informations de bord de véhiculeTelCar : Solution de lecture des informations de bord de véhicule
TelCar : Solution de lecture des informations de bord de véhicule
Ghassen Chaieb
 
Toip slide
Toip slideToip slide
Toip slide
Dimitri LEMBOKOLO
 
11776626.ppt
11776626.ppt11776626.ppt
11776626.ppt
khalilMansouri4
 
1 introduction informatique
1 introduction informatique1 introduction informatique
1 introduction informatique
CEFRI-UAC
 
1 introduction informatique
1 introduction informatique1 introduction informatique
1 introduction informatiqueCEFRI-UAC
 
Cours de microcontrôleurs
Cours de microcontrôleursCours de microcontrôleurs
Cours de microcontrôleurs
sarah Benmerzouk
 
Technologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logiciellesTechnologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logicielles
Frédéric Simonet
 
Asterisk to ip_rapport
Asterisk to ip_rapportAsterisk to ip_rapport
Asterisk to ip_rapportGilles Samba
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
Mohammed TAMALI
 
Projet haute disponibilité asterisk pdf
Projet haute disponibilité asterisk pdfProjet haute disponibilité asterisk pdf
Projet haute disponibilité asterisk pdf
Abderahim Amine Ali
 
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
Xavier MARIN
 
Etude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxEtude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxThierry Gayet
 
cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)
Hạ Cháy
 
Article open-silicium-juin-juillet-aout-2013
Article open-silicium-juin-juillet-aout-2013Article open-silicium-juin-juillet-aout-2013
Article open-silicium-juin-juillet-aout-2013O10ée
 
partie osi ( open system inerconnexion);
partie osi ( open system inerconnexion);partie osi ( open system inerconnexion);
partie osi ( open system inerconnexion);
kawtarelbiraki
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Smile I.T is open
 
éTude des techno de stockage
éTude des techno de stockageéTude des techno de stockage
éTude des techno de stockagekhech123
 

Similaire à Architecture hétérogène au service de l'IoT industriel ? (20)

Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
 
TelCar : Solution de lecture des informations de bord de véhicule
TelCar : Solution de lecture des informations de bord de véhiculeTelCar : Solution de lecture des informations de bord de véhicule
TelCar : Solution de lecture des informations de bord de véhicule
 
Toip slide
Toip slideToip slide
Toip slide
 
11776626.ppt
11776626.ppt11776626.ppt
11776626.ppt
 
1 introduction informatique
1 introduction informatique1 introduction informatique
1 introduction informatique
 
1 introduction informatique
1 introduction informatique1 introduction informatique
1 introduction informatique
 
Cours de microcontrôleurs
Cours de microcontrôleursCours de microcontrôleurs
Cours de microcontrôleurs
 
Technologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logiciellesTechnologies du Web - Architectures matérielles et logicielles
Technologies du Web - Architectures matérielles et logicielles
 
Asterisk to ip_rapport
Asterisk to ip_rapportAsterisk to ip_rapport
Asterisk to ip_rapport
 
Chap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec pythonChap XIII : calcul scientifique avec python
Chap XIII : calcul scientifique avec python
 
Projet haute disponibilité asterisk pdf
Projet haute disponibilité asterisk pdfProjet haute disponibilité asterisk pdf
Projet haute disponibilité asterisk pdf
 
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
 
Etude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxEtude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU Linux
 
cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)cấu trúc máy tính ( architecture des ordinatuers)
cấu trúc máy tính ( architecture des ordinatuers)
 
Article open-silicium-juin-juillet-aout-2013
Article open-silicium-juin-juillet-aout-2013Article open-silicium-juin-juillet-aout-2013
Article open-silicium-juin-juillet-aout-2013
 
partie osi ( open system inerconnexion);
partie osi ( open system inerconnexion);partie osi ( open system inerconnexion);
partie osi ( open system inerconnexion);
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
 
éTude des techno de stockage
éTude des techno de stockageéTude des techno de stockage
éTude des techno de stockage
 

Architecture hétérogène au service de l'IoT industriel ?

  • 1. ARCHITECTURE HéTéROGèNE AU SERVICE DE L’IOT INDUSTRIEL ? Pierre-Jean Texier
  • 2. $ whoami => Pierre-Jean Texier Ingénieur Linux Embarqué Lafon Technologies Free software enthusiast Co-auteur de "Yocto for Raspberry Pi" et auteur dans GNU/Linux magazine et Open silicium Pierre-Jean Texier, L’Open Source dans l’IoT 1/32
  • 3. Au service du paiement ... 4 personnes, diverses activités au sein du BE : Linux Device Driver (i2c, mtd, ...) Board Support Package (OpenEmbedded) =>ARM & MIPS Interface Graphique (Framework Qt) Firmware MCU => EFM32 & STM32 ... APL3 Pierre-Jean Texier, L’Open Source dans l’IoT 2/32
  • 5. En quelques mots Architecture hétérogène : Cortex A7 (1 pour l’i.MX7s, 2 pour l’i.MX7d) Cortex M4 Conçu pour : être efficace en energie avoir une "expérience" temps-réel faire tourner des applications complexes faire du multimédia ... Pierre-Jean Texier, L’Open Source dans l’IoT 4/32
  • 6. AMP, SMP, Hétérogène, ... Pierre-Jean Texier, L’Open Source dans l’IoT 5/32
  • 7. Architecture Pierre-Jean Texier, L’Open Source dans l’IoT 6/32
  • 8. GPU Less Il est quand même possible de faire tourner des applications ! Utilisation de Qt Quick 2D Renderer => Depuis la version 5.7 de Qt Niveau framebuffer => linuxfb Il faudra configurer l’environnement : $ export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0 $ export QMLSCENE_DEVICE=softwarecontext Pierre-Jean Texier, L’Open Source dans l’IoT 7/32
  • 9. L’approche traditionelle MCU et MPU séparés Communication au travers un bus de communication (i2c ou SPI) LxMCU ? Séparation de l’architecture logicielle Le MCU pour les acquisitions (temps-réel) Le MPU pour l’affichage/connectivités Pierre-Jean Texier, L’Open Source dans l’IoT 8/32
  • 10. L’approche HMP Partagent les mêmes ressources matérielles (i2c, GPIO, ...) Communication en mémoire partagée: DDR3 Avantages de l’architecture : Plusieurs OS sur une même puce Mise à jour plus simple (mender.io, SWUpdate, rauc) Communication + rapide Réduction du coût de la BOM ... Pierre-Jean Texier, L’Open Source dans l’IoT 9/32
  • 11. CORTEX M4: BOOT, MéMOIRE, ...
  • 12. Cortex M4 Pierre-Jean Texier, L’Open Source dans l’IoT 11/32
  • 13. Cortex M4 Mémoire: Plusieurs types de mémoires: OCRAM, DDR3, TCM TCM locale au cortex M4, donc plus performante Aussi accessible depuis le cortex A7 Utile pour le chargement de l’image depuis u-boot : => fatload mmc 0:1 0x7F8000 main.bin Commande bootaux, pour démarrer à une adresse donnée: => bootaux 0x7F8000 Le cortex A7 est maître : Démarre les horloges Charge le code du cortex M4 à l’adresse TCM (TCML) Démarre le coeur M4 (out of reset) Pierre-Jean Texier, L’Open Source dans l’IoT 12/32
  • 15. Resource Domain Controller L’élément central du System on Chip Pierre-Jean Texier, L’Open Source dans l’IoT 14/32
  • 16. Resource Domain Controller: le garant (1/3) Sous-système pour le partionnement (domaine, périphérique, mémoire) Nécessaire pour éviter les accès concurrents ! DomainID : 4 domaines pour les bus maîtres (A7, M4, SDMA, ...) Notion de MDA (Master Domain Assignment) = 0 au boot Dans notre cas, seul le cortex M4 est sur un domaine différent Exemple : RDC_SetDomainID(RDC,rdcMdaM4,1,false); Pierre-Jean Texier, L’Open Source dans l’IoT 15/32
  • 17. Resource Domain Controller: le garant (2/3) PDAP: Peripheral Domain Access Permission Gestion des permissions des périphériques en fonction du DomainID via la fonction RDC_SetPdapAccess() Un exemple : Pierre-Jean Texier, L’Open Source dans l’IoT 16/32
  • 18. Resource Domain Controller: le garant (3/3) Pour réaliser cette implémentation : Où: Le 3ème paramètre de la fonction permet de remplir le registe PDAP Dans notre cas, registre = 00001100 (R/W sur domaine 1) Le 4ème paramètre, permet de sélectionner le bit SREQ pour l’utilisation des sémaphores matériels Pierre-Jean Texier, L’Open Source dans l’IoT 17/32
  • 19. RPMSG
  • 20. Explications RPMsg est un bus de communication basé sur la couche de transport VirtIO Permet la gestion des IPC (Inter Processor Communication) Architecture Client/Serveur VirtIO : une couche d’abstraction transport basée sur la mémoire partagée Fournit une API Virtqueue pour la communication avec le processeur distant Architecture à buffer circulaire -> VRING Simplement : 2 buffers VirtIO -> TX et RX 512 Octects chacun Emplacement VRING hard-coded (GNU/Linux & FreeRTOS) Pierre-Jean Texier, L’Open Source dans l’IoT 19/32
  • 21. Implémentation FreeRTOS Basé sur OpenAMP Portage réalisé par NXP (et la communauté !) GNU/Linux Au travers une ligne série virtuelle (/dev/ttyRPMSG) Driver fournit par NXP: imx-rpmsg-tty Pierre-Jean Texier, L’Open Source dans l’IoT 20/32
  • 22. Pour résumer ... Pierre-Jean Texier, L’Open Source dans l’IoT 21/32
  • 24. Object connecté (libre!) pour la mesure de la qualité de l’air Pierre-Jean Texier, L’Open Source dans l’IoT 23/32
  • 25. Les besoins La carte : WaRP7 (Wearable Reference Platform) Pierre-Jean Texier, L’Open Source dans l’IoT 24/32
  • 26. Les besoins La carte : WaRP7 (Wearable Reference Platform) FreeRTOS côté cortex M4 Acquisitions capteur + communication avec cortex A7 Utilisation de la socket MikroBUS Pierre-Jean Texier, L’Open Source dans l’IoT 24/32
  • 27. Les besoins La carte : WaRP7 (Wearable Reference Platform) FreeRTOS côté cortex M4 Acquisitions capteur + communication avec cortex A7 Utilisation de la socket MikroBUS Yocto/OpenEmbedded côté cortex A7 Une application Qt pour la récupération des données RPMsg Une application Qt pour les échanges en BLE QSharedMemory entre les 2 applications. Pierre-Jean Texier, L’Open Source dans l’IoT 24/32
  • 28. Implémentation FreeRTOS air-quality-click : Acquisition + Dialogue A7 Tâche iaqDataTask Acquisitions i2c Mise à jour des champs de la structure de données (co2, TVOC, ...) Utilisation de vTaskDelay() Pierre-Jean Texier, L’Open Source dans l’IoT 25/32
  • 29. Implémentation FreeRTOS air-quality-click : Acquisition + Dialogue A7 Tâche iaqDataTask Acquisitions i2c Mise à jour des champs de la structure de données (co2, TVOC, ...) Utilisation de vTaskDelay() Tâche commandTask Création du canal RPMsg Gestion des échanges avec le coeur distant Pierre-Jean Texier, L’Open Source dans l’IoT 25/32
  • 30. Implémentation Linux ServiceRPMSG : Dialogue A7 <-> M4 Utilisation de la ligne série virtuelle /dev/ttyRPMSG Configuration du descripteur de fichier associé (via termios) Utilisation des primitives read() et write() Protocole simple, ex: $ echo "?getAirQuality" > /dev/ttyRPMSG Mise à disposition des données dans un segment mémoire Pierre-Jean Texier, L’Open Source dans l’IoT 26/32
  • 31. Implémentation Linux ServiceGateway : Connectivité sans-fil Récupération des données du segment mémoire Utilisation de l’API Qt Bluetooth et bluez5 nom du périphérique : Captronic IoT Utilisation du Service GATT Automation I/O doc Avec la caractéristique GATT Analog doc Gestion: des read -> "Notify" des write -> !printTVOC Pierre-Jean Texier, L’Open Source dans l’IoT 27/32
  • 33. Démarrage de la cible 1. Démarrage du cortex M4 2. Démarrage du cortex A7 3. Insertion du driver pour la gestion RPMsg 4. Configuration de l’interface BLE => hciconfig 5. Démarrage des applications Pierre-Jean Texier, L’Open Source dans l’IoT 29/32
  • 34. BLE BLE Scanner: découverte du périphérique Pierre-Jean Texier, L’Open Source dans l’IoT 30/32
  • 35. BLE BLE Scanner: découverte du périphérique BLE Scanner: découverte du service Pierre-Jean Texier, L’Open Source dans l’IoT 30/32
  • 36. BLE BLE Scanner: découverte du périphérique BLE Scanner: découverte du service BLE Scanner: Gestion du write Pierre-Jean Texier, L’Open Source dans l’IoT 30/32
  • 37. BLE BLE Scanner: découverte du périphérique BLE Scanner: découverte du service BLE Scanner: Gestion du write BLE Scanner: Gestion du read Pierre-Jean Texier, L’Open Source dans l’IoT 30/32
  • 38. may the (open) IoT be with you ! Pierre-Jean Texier, L’Open Source dans l’IoT 31/32