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

PDF
Programmation de systèmes embarqués : Internet of Things : système connecté e...
PDF
Altera nios ii embedded evaluation kit
PDF
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
PDF
Programmation de systèmes embarqués : Bus et périphériques de communication
PDF
Les solutions libres pour les systèmes embarqués
PDF
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
PPTX
Projet reseaux
PDF
Systeme embarque
Programmation de systèmes embarqués : Internet of Things : système connecté e...
Altera nios ii embedded evaluation kit
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
Programmation de systèmes embarqués : Bus et périphériques de communication
Les solutions libres pour les systèmes embarqués
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Projet reseaux
Systeme embarque

Tendances (10)

PPTX
Embedded Systems
PDF
QCM informatique de base
PDF
QCM Sécurité Informatique
PDF
QCM basique sur les réseaux informatiques
PDF
Solutions temps réel sous linux
PPTX
Net duino et le .net micro framework
PDF
Install party
PDF
Présentation Bluetooth Low Energy - SMILE ECS
PPT
Architecture
PDF
Plateformes Linux Embedded
Embedded Systems
QCM informatique de base
QCM Sécurité Informatique
QCM basique sur les réseaux informatiques
Solutions temps réel sous linux
Net duino et le .net micro framework
Install party
Présentation Bluetooth Low Energy - SMILE ECS
Architecture
Plateformes Linux Embedded
Publicité

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

PDF
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
PDF
Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014
PDF
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
PDF
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
PDF
Lepton : Description succincte
PDF
PDF
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
PPTX
LIazknsfqjksfhuksj:nfbjkbrkjrnsdjkbkO2.pptx
PPTX
LIO2Ukagzdygbs;BQDJgqyj;sdhb;hjyqgysukbdk.pptx
PDF
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
ODP
Prototypage IoT avec logiciel/matériel libre
PDF
Distro Recipes 2013 : Yocto / OpenEmbedded
PDF
Hacking your Home @bdx.io
PPTX
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
PPTX
SdE2 - Systèmes embarquées
PDF
Kit de survie pour l'IoT façon DIY
ODP
OS libres pour l'IoT - Zephyr
PDF
Atelier PyMite sur STM32F4 à PyconFR 2012
ODP
Conference Informatique Embarquée Synergie-NTIC
PDF
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
Présentation Système d’exploitation Open Source Lepton - MEITO Mai 2014
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Lepton : Description succincte
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
LIazknsfqjksfhuksj:nfbjkbrkjrnsdjkbkO2.pptx
LIO2Ukagzdygbs;BQDJgqyj;sdhb;hjyqgysukbdk.pptx
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Prototypage IoT avec logiciel/matériel libre
Distro Recipes 2013 : Yocto / OpenEmbedded
Hacking your Home @bdx.io
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
SdE2 - Systèmes embarquées
Kit de survie pour l'IoT façon DIY
OS libres pour l'IoT - Zephyr
Atelier PyMite sur STM32F4 à PyconFR 2012
Conference Informatique Embarquée Synergie-NTIC
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Publicité

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