Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)

87 views

Published on

Nous présenterons le système d'exploitation RTEMS, ses applications passées et actuelles ainsi que les travaux en cours pour son utilisation dans l'IoT professionnel.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)

  1. 1. 1RTEMS/IoT RTEMS / IoT Pierre FICHEUX (pierre.ficheux@smile.fr) Mai 2018
  2. 2. 2RTEMS/IoT Présentation PF ● Ingénieur Arts et Métiers + Sup'Aéro ● Utilisateur de logiciels libres depuis 1989 ● Utilisateur de Linux depuis 1992 ● Auteur des 5 éditions de l'ouvrage « Linux embarqué » (Eyrolles), dernière version le 23/11/2017 ● Auteur GLMF, rédacteur en chef de (feu) Open Silicium ● CTO Smile ECS, enseignant EPITA, etc.
  3. 3. 3RTEMS/IoT Les livres blancs
  4. 4. 4RTEMS/IoT RTEMS « in a nutshell » ● RTEMS = Real Time Executive for Multiprocessor Systems ● Initialement « Missile Systems » puis « Military Systems » ● Exécutif temps réel embarqué diffusé sous GPL (avec linking exception) ● Application « liée » au noyau → un processus mais plusieurs threads ● Nombreuses architectures matérielles supportées (du Leon 3 à la Raspberry Pi, BBB ou QEMU/x86) ● API TR dédiée ou bien POSIX ● Utilise la chaîne de compilation GNU sur Linux, Windows, Solaris ● Approche statique → </malloc> ● Actuellement version 5 (Git) ● Référence industrielle (ESA, NASA, Astrium)
  5. 5. 5RTEMS/IoT Fonctionnalités optionnelles
  6. 6. 6RTEMS/IoT Histoire ● 1988 : premiers développements par OAR sur demande de l'US Army Missile Command ● 1992 : première utilisation non militaire, préféré à pSOS+ par SSC (Superconducting Super Collider) ● 1992 : utilisation des outils GNU ● 1994 : code source publié par l'US Army en FTP ● 1997 : validation de GNAT/RTEMS ● 1998 : portage de la pile TCP/IP FreeBSD sur RTEMS ● 1998 : La société OAR reprend la maîtrise du développement (Joel Sherill) ● 2004 : démarrage de http://wiki.rtems.org ● 2006 - 2009 : utilisation dans diverses missions spatiales (Dawn, MRO, ESA/Herschel & Plank, etc.) ● 2012 : sonde NASA Curiosity (mars) → telecom ● 2018 : Parker Solar Probe
  7. 7. 7RTEMS/IoT Show me the code ! #include <stdio.h> #include <stdlib.h> void *POSIX_Init() { printf ("Hello RTEMS (POSIX)n"); } #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_MAXIMUM_POSIX_THREADS 1 #define CONFIGURE_POSIX_INIT_THREAD_TABLE #define CONFIGURE_INIT #include <rtems/confdefs.h>
  8. 8. 8RTEMS/IoT Curiosity (NASA)
  9. 9. 9RTEMS/IoT EADS/Astrium (2012)
  10. 10. 10RTEMS/IoT Adaptation EADS/Astrium ● VxWorks préféré par les experts internes ! ● Qualification standard espace ECSS (European Cooperation for Space Standardization) ● Basé sur la versions 4.6.1 (380000 lignes) ● Sélection de certaines fonctions → bibliothèque produit (4 % du code!) ● Règles de test RuleChecker (43) dérivées de MISRA C
  11. 11. 11RTEMS/IoT IoT, so far away from RTEMS...
  12. 12. 12RTEMS/IoT IoT « grand public » ● Drones, consumer, TV, Infotainment, etc. ● Production à bas coût ● Focus sur le matériel plus que sur le logiciel (Asie) ● Logiciel de qualité variable disponible sur GitHub ● Exemple du CrazyFlie → stage AdaCore/EPITA pour écriture d’un nouveau firmware en SPARK → blog « How to prevent drone crashes using SPARK » ● Durcissement des règles pour les pilotes de drones (ULM) ● Approche totalement différente en IoT industriel ● Exemple Delair (drone professionnels) – Conception stricte du HW (Eukrea) – Firmware aéro + Linux (pour la communication)
  13. 13. 13RTEMS/IoT IoT(s) ● Objet simple de type capteur – Micro-contrôleur (sans MMU) – Logiciel « bare metal » ou OS léger type Contiki, RIOT ● Objet complexe → « edge computing » – CPU avec MMU (32 bits ou +) – OS Linux, Android, Tizen Parrot flower power (µC) “Tesla car is a connected computer on wheels !”
  14. 14. 14RTEMS/IoT Protocoles pour l'IoT ● L'IoT utilise un certain nombre de protocoles ● Inter-opérabilités de systèmes très différents ● Protocoles classiques – Wi-Fi / Ethernet – Bluetooth (LE) ● Protocoles dédiées – ZigBee – 6LoWPAN – Thread – Z-Wave – CoAP – MQTT – LoRa – Sigfox
  15. 15. 15RTEMS/IoT IPv6 nécessaire à l’IoT ● Adresses sur 128 bits au lieu de 32 bits – 2128 adresses au lieu de 4,294,967,296 – Étoiles observables dans le ciel → 252 – Approximativement 506 102 adresses par m2 sur terre – Environ 5 × 1028 adresses pour chaque habitant de la planète ● L'entête passe de 20 octets à 40 octets :-( ● Auto-configuration = génération d'une adresse IPv6 ● Récupération adresse d’un nœud via NDP (Neighbor Discovery Protocol, RFC 4861 2007) ● Découverte des voisins – résolution IPv6 → MAC (comme ARP avec IPv4) – 00:17:F2:EA:59:46 → FE80::217:F2FF:FEEA:5946
  16. 16. 16RTEMS/IoT Norme 802.15.4 ● Protocole de communication standard IEEE pour les réseaux sans fil ● Dédié au LR-WPAN → Low-Rate Wireless Personal Area Network) ● Faible consommation ● Faible débit ● Faible portée ● Intégré aux principales cibles IoT (SensorTag) ● Utilisé dans différentes implémentations : – 6LoWPAN (ouvert, RFC 4919/4944) – ZigBee (propriétaire)
  17. 17. 17RTEMS/IoT 6LoWPAN ● LoWPAN = IPv6 LoW Power Wireless Area Networks ● Nom d'un groupe de travail de l'IETF ● Compression d'en-tête de paquets IPv6 + fragmentation des trames ● Permet a ces paquets de transiter sur des réseaux de type 802.15.4 – 802.15.4 → payload de 128 octets – IPv6 impose une MTU (Maximum Transmission Unit) minimal de 1280 octets (68 pour IPv4)
  18. 18. 18RTEMS/IoT « Motes » & « border router »
  19. 19. 19RTEMS/IoT RTEMS/IoT ● PFE(E) EPITA/GISTRE 2019 ● Choix d’une ou plusieurs plate-forme(s) de référence ● Étude des couches réseau, démonstrateur ● Ajout 6LoWPAN – Contiki (µIPv6) BSD *** – emb::6 BSD – FreeRTOS MIT – TinyOS (blip) BSD ● Démonstration avec border router 6LBR (basé sur Contiki) ● Sujets annexes – Validation et « certification » (cf ECSS) – Intégration AWS (GreenGrass, utilise FreeRTOS)
  20. 20. 20RTEMS/IoT Trampoline / Trampogen ? ● OS compatible Autosar / OSEK (IRCCyN / LS2N) ● Configuration statique par #ifdef ● Création d’un générateur de code ● Solution libre et accessible à tous ● Projet David Garriou (Smile)
  21. 21. 21RTEMS/IoT Conclusions, les OS IoT ● Contiki pour les capteurs très légers (8 bits) → protothread ● RIOT, le « Linux de l’IoT » (POSIX) ● Linux/Yocto pour l’edge computing ● RTEMS pour l’IoT sûr (safety) ? « Very cool! I wonder how we can let the community know about this. For sure, please include an RSB recipe and examples in your plans so this is easy to reproduce. Would it make sense to make the idea an RTEMS ticket? We have a pattern for what used to be Open Projects in the wiki. » Joel Sherill (OAR)
  22. 22. 22RTEMS/IoT Références ● Site RTEMS https://www.rtems.org ● Parker Solar Probe http://parkersolarprobe.jhuapl.edu/index.php#the-mission ● Crash drone https://blog.adacore.com/how-to-prevent-drone-crashes-using-spark ● Société Delair https://delair.aero ● Certificat aptitude http://dronebylukas.fr/produit/formation-preparation-certificat-aptitude-theorique-pilote-ulm ● Projet 6LBR https://github.com/cetic/6lbr/wiki ● Trampoline OS https://github.com/TrampolineRTOS/trampoline

×