Upload
vankien
View
231
Download
0
Embed Size (px)
Citation preview
Capitole du Libre 2014
Du microcontrôleur au systèmeLinux embarqué
Choix d'architectures matérielles et logicielles
Christophe Blaesshttp://christophe.blaess.fr
http://www.logilin.fr
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 2/30
Ingénierie et formations Linux industriel
Blog : christophe.blaess.fr
- 2Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 3/30
Microprocesseur vs microcontrôleur
Introduction - terminologieDifférences matériellesSpécificités logicielles
Choix d'architecture
Prototypage – Projet personnelPetite série – StartupGrande série – production industrielle
Étude de cas
ProblématiqueSystème à microcontrôleurMicroprocesseur sous LinuxArchitecture hybrideProjet LxMCU
Conclusion
Questions ?
- 3Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 4/30
Microprocesseur vs microcontrôleur
Introduction - terminologie
Microcontrôleur (µC)
• Mise en œuvre électronique simple.
• Déterminisme et fiabilité de fonctionnement.
• Généralement pas de système d'exploitation (ou minimal).
- 4Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Horloge
Alimentation Microcontrôleur
Cœur CPU< 200 MHz
Rom (Flash) < 2 MoRAM < 1 Mo
Watchdog
I / O
RS-232GPIO,SPI,I²C,USB,CAN,Ethernet...
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 5/30
Microprocesseur (µP)
Entrées-sorties réalisées par des contrôleurs externes au processeur
Mise en œuvre électronique beaucoup plus complexe
Optimisé pour l'utilisation d'un système d'exploitation
- 5Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Horloge
ContrôleursE/S
Microprocesseur
> 200 MHz
Cœur(s) CPUFPUMMU
bus
Alimentations
Flash> 1 Go
RAM> 256 Mo
SATA, USB, Ethernet, RS-232, SPI, I²C, GPIO,
CAN...
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 6/30
System on Chip (S.O.C.)
Contrôleurs d'entrées-sorties déjà incorporés
Intégration électronique encore assez complexe
Souvent peu d'entrées-sorties industrielles (CAN) ou analogiques (ADC/DAC, PWM)
- 6Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
µPContrôleur
Contrôleur UART
ROMBootloader
SPI
EthernetUSB
RS 232
Contrôleur
MMC / SD
System On Chip
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 7/30
Différences matérielles
Comparatif
Microcontrôleur System-on-chip
Coût moyen < 10 € > 20 €
PCB support Simple – 2 couches Complexe – 6 couches
Alimentations Simple – 3.3 V Multiples3.3V / 5V / 12 V
Volume de code métier ~ 100 ko > 10 Mo
Environnement de développement
Propriétaire > 3000 €Libre (Gnu) pas toujours disponible.
Libre (Gnu) et gratuit sidéveloppement sous et pour Linux.
Mise au point du code Complexe.Débogueur spécifique.
Plus simple grâce à l'O.S.
Déploiement, mise à jour Complexe. Simple.Plusieurs possibilités.
Protection du code métier Facile (fusibles). Difficile.
- 7Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 8/30
Mémoire virtuelle et MMU
Un processus voit un espace de mémoire virtuelle, au sein du quel il peut accéder à n'importequelle adresse de 0x000000 à 0xFFFFFFFF (sur processeur 32 bits).
Cet espace est découpé en pages, et la MMU – Memory Managment Unit (un composantintégré dans le processeur) – associe une page de mémoire virtuelle avec une page demémoire physique en effectuant la modification d'adresse lors de l'accès à la mémoire.
Certaines pages de mémoire virtuelle n'ont pas de correspondance en mémoire physique : unetentative d'accès déclenche une interruption « faute de page ».
Chaque processus dispose d'une configuration personnelle de la MMU. Cette dernière estprogrammée à chaque commutation entre deux processus.
Un processus ne voit que les pages de mémoire physique qui lui ont été attribué par le noyau ;les pages des autres processus ne sont projetées à aucun emplacement de sa mémoirevirtuelle.
- 8Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
0x 0000 0000
0x FFFF FFFF
MMU
Espace d'adressage virtuel
Mémoire physique
4 G
o
4 ko
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 9/30
Systèmes multicœurs
L'unité de traitement des données est multipliée (par deux ou quatre en général).
Le cache de premier niveau est spécifique à chaque cœur. Le cache de second niveau peutêtre partagé ou non. Lorsque le cache de niveau 2 est partagé l'accès est plus rapide, sinon ilfaut des messages de synchronisation lors d'accès à des zones identiques depuis les deuxcœurs.
- 9Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Coeur 1Coeur 1 Coeur 2Coeur 2
RAMRAM
BusBus
Cache L3Cache L3
Cache L1Cache L1Cache L1Cache L1
Cache L2Cache L2Cache L2Cache L2
Coeur 1Coeur 1 Coeur 2Coeur 2
RAMRAM
BusBus
Cache L2Cache L2
Cache L3Cache L3
Cache L1Cache L1Cache L1Cache L1
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 10/30
Spécificités logicielles
Composants d'un système Linux embarqué
Le rôle du noyau Linux : mettre les ressources offertes par le matériel à disposition desapplications de l'espace utilisateur.
Lorsqu'il exécute le code du noyau, le processeur est en mode superviseur (privilégié). Pourexécuter du code en espace utilisateur, il passe en mode protégé (non-privilégié).
Les tâches (threads) de l'espace utilisateur s'exécutent dans des processus (espaces demémoire disjoints).
- 10Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Noyau Linux(kernel)
Matériel
Espaceutilisateur
Mémoire
Périphériques
Pilotes(drivers)
Ordonnanceur(scheduler)
MemoryManagement
MMUCPUProcesseur(s)
Bibliothèques...
libC
Processus(Code métier)
Processus(Script
d'initialisation)
Processus(Environnement
graphique)
Processus(Sauvegardespériodiques)
Processus(Serveur
FTP)
Processus(ServeurHTTP)
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 11/30
Ressources nécessaires
Sur un système à micro-contrôleur, le code métier est le seul maître à bord, il accède àvolonté aux périphériques, à la mémoire, etc.
Au contraire, dans un système à micro-processeur, le code métier n'est qu'une petite partie del'ensemble du logiciel. Il est soumis à l'ordonnancement et au sous-système de gestionmémoire du noyau. Il s'appuie sur des bibliothèques et des utilitaires externes.
- 11Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Micro-contrôleurCœur 32 bits
Horloge 120 MHz128 Ko Ram1Mo Flash
Code métier
main() { ... }
Micro-processeurCœur 32 bitsHorloge 1GHz512 Mo Ram
2Go Flash
Processus
main() { ... }
Busybox283.000 lignes
de code
Linux14.000.000 lignes de code
uClibC372.000 lignes de code
Système à micro-contrôleur(STM32F2)
Système à micro-processeur(T.I. AM3359 de BeagleBone Black)
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 12/30
Temps de boot
Suivant le type de processeur et la complexité du matériel, le temps de boot du noyau dure dedeux à cinq secondes environ.
Le démarrage du processus init, les tâches administratives (montage systèmes de fichiers,configuration paramètres de /proc, etc.) prennent une à deux secondes supplémentaires.
Le lancement de tous les services (réseau, authentification, environnement graphique, etc.)peut demander une dizaine de secondes.
Pour en savoir plus
« Optimisation du temps de boot d'un système Linux embarqué » Christophe Blaess – OpenSilicium 9, voir http://www.blaess.fr/christophe/articles/ .
- 12Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Noyau Linux
Matériel
Espaceutilisateur
script shell
Codemétier
Drivers
Processeur
init(Busybox)
BootInit
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 13/30
Services offerts par le noyau Linux
Le noyau Linux permet directement d'accéder à plusieurs centaines de périphériques etprotocoles de communications, de réaliser des opérations d'entrées-sorties aisément,d'afficher une interface graphique, de lire des dizaines de formats de systèmes de fichiers, dedialoguer avec de nombreux protocoles réseau, etc.
Si un élément n'est pas présent dans une configuration embarquée, il suffit généralement derecompiler le noyau (voire de ne compiler qu'un module) pour l'intégrer.
- 13Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Noyau
Matériel
Espaceutilisateur
ServeurHTTP
Applicationmétier
USB
USB Core
SPI,CAN, I²C, RS 232/485
Drivers
/dev/spi0
Contrôleurgraphique
FrameBuffer
/dev/fb0
EthernetWifi
UDPTCP
IP
socket
ServeurFTP
ServeurTelnet
ServeurSSH
ServeurNTP
Busybox
/sys/...
GPIOPWM...
Drivers
FlashDisqueSD...
Blocksubsystem
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 14/30
Choix d'architecture
Prototypage – Projet personnel
SBC (Single-Board-Computer)
Ordinateur mono-carte intégrant system-on-chip, mémoire, connecteurs d'E/S, etc.
Exemples : BeagleBone Black, Cubieboard, Raspberry Pi, OLinuXino...
Certains SBC (sans Linux) reposent sur des microcontrôleurs : Arduino, Launchpad, etc.
- 14Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
S. O. C.
RJ 45
Micro SDslot
USB
Ethernet
GPIO
RAM
Flash
Single Board Computer
MicroA
HE10 DB 9 RS 232
Alimentations
Horloge
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 15/30
Environnement de développement
Utilisation de distributions Linux pré-compilées :
• Raspbian pour Raspberry PI
• Arch Linux,
• etc.
Développement du code métier directement sur la cible.
Prototypage rapide par scripts (Python par exemple).
Inscription du code métier dans les scripts de démarrage de l'application.
Démonstration, proof-of-concept : débogage et mise au point réduits.
Pas de souci d'industrialisation, de déploiement ou de mise à jour pour le moment.
On teste éventuellement plusieurs SBC afin de déterminer le processeur le plus adapté.
- 15Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Carte métier
CapteursActionneurs
Single BardComputer
SPI / I²C / GPIO / ...
Carte porteuse
AlimentationCapteurs
Actionneurs
System on Module
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 16/30
Petite série – Startup
Computer-on-module (C.O.M.) - System-on-module (S.O.M)
Un module est une petite carte de dimension réduite contenant l'équivalent d'un ordinateurmono-carte (S.O.C, mémoire…) sans connecteurs.
La liaison avec la carte porteuse se fait soit par broches HE10 soit par collage CMS.
La conception de la carte porteuse doit être étudiée pour s'intégrer dans le boîtier final duprojet.
C'est une phase qui fait souvent appel à du financement participatif (crowd-funding)
- 16Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 17/30
Développement logiciel
L'industrialisation du processus logiciel est cruciale.
Les systèmes de construction d'image (Buildroot, Yocto, etc.) sont préférés aux distributions.
La configuration du noyau est optimisée (temps de boot, occupation mémoire, choix desdrivers).
Il faut mettre au point des mécanismes de déploiement et de mise à jour.
Le logiciel doit être sécurisé pour être fiable (non-brickable) pour éviter les retours S.A.V.
C'est un bon moment pour mettre en place un environnement d'intégration continue, unsystème de gestion de version, etc.
- 17Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 18/30
I.D.E. - Éclipse
Éclipse est un environnement de développement intégré permettant de gérer des projet Java,C, C++, Python, etc.
Éclipse permet de réaliser du débogage local ou sur une cible distante.
- 18Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Carte spécifique
AlimentationCapteurs
ActionneursHorlogesS.O.C.
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 19/30
Grande série – production industrielle
Intégration d'un system-on-chip
Rarement intéressant en dessous d'une dizaine de milliers d'unité.
Coûts importants de design, routage, banc de test, validation, etc.
Les frais de production sont avantageux.
Externalisation de la conception : attention à la propriété intellectuelle
- 19Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 20/30
Étude de cas
Problématique
Nous devons mesurer l'angle de rotation d'un axe par rapport à une position de repère.
Nous voulons fournir à l'utilisateur la valeur de l'angle en degrés et dixièmes.
- 20Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
30.8°
Microcontrôleur
Valeur
Microprocesseur
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 21/30
Architecture envisagée
- 21Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Axe
Encodeurincrémental
Interface Utilisateur
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 22/30
Codeur incrémental de rotation
- 22Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
A
B
A
B
AB
STM32 F 103
Programmemétier
Timer 3
Ch. 1Ch. 2
UART
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 23/30
Système à microcontrôleur
- 23Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
BA
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 24/30
Résultats
Validité des résultats, exactitude, précision.....................................................
Fiabilité du système, facilité d'industrialisation .............................................
Interface utilisateur, confort, ergonomie..........................................................
Évolutivité, souplesse d'adaptation à de nouvelles demandes.........................
- 24Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
PagesHTML5
Handler IRQ
ServeurHTTP
Script CGIScript PHP
...
CommandesShell
SauvegardeClé USB
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 25/30
Microprocesseur sous Linux
- 25Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
BA
Driver
GPIO
Valeur
GPIO
Noyau Linux
/dev/rotation-sensor
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 26/30
Résultats
Validité des résultats, exactitude, précision.....................................................
Cette architecture est néanmoins correcte pour des contraintes temporelles faibles
Fiabilité du système, facilité d'industrialisation .............................................
Le Raspberry Pi n'est pas industrialisable, mais il existe de nombreux systèmes acceptables.
Interface utilisateur, confort, ergonomie..........................................................
Évolutivité, souplesse d'adaptation à de nouvelles contraintes.......................
- 26Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Noyau Linux
MicroprocesseurMicrocontrôleur
Modulecommunication
Calcul valeur
Bibliothèquecommunication
ServeurHTTP
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 27/30
Architecture hybride
- 27Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
BA
SPI
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 28/30
Projet LxMCU
Projet libre pour fournir une interface de communication bi-directionnelle entremicrocontrôleur et microprocesseur, s'appuyant sur une liaison SPI (I²C à venir) engénéralisant le principe des files de messages.
Côté microcontrôleur :
• Bibliothèque optimisée d'accès en lecture et écriture dans les files de messages.
• Notification lors de la réception d'un message.
• Licence LGPL : bibliothèque libre mais utilisable depuis code propriétaire.
Côté microprocesseur :
• Module kernel Linux avec interface « caractère » (/dev/lxmcu0 … /dev/lxmcu63.)
• Communications synchrones ou asynchrones.
• Licence GPL : code libre dans le noyau Linux.
www.lxmcu.org
- 28Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 29/30
Résultats
Validité des résultats, exactitude, précision.....................................................
Fiabilité du système, facilité d'industrialisation .............................................
Interface utilisateur, confort, ergonomie..........................................................
Évolutivité, souplesse d'adaptation à de nouvelles demandes.........................
- 29Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )
Du microcontrôleur au système Linux embarqué - Toulouse - 15 novembre 2014 30/30
ConclusionLe choix d'une architecture doit se faire en prenant en compte plusieurs facteurs :
• puissance de calcul et la quantité de mémoire nécessaires,
• le nombre et les types d'entrées-sorties utilisés,
• les méthodes de développement logiciel, déploiement et mise à jour du code.
• ...
Les choix peuvent évoluer au cours de la mise au point du projet : la plate-forme utilisée pourle prototype ne sera pas la même que les premières séries ou la production en nombre.
Questions ?
N'hésitez pas à me contacter sur
christophe.blaess.fr
ou
www.logilin.fr
- 30Du microcontrôleur au système Linux embarqué (Toulouse - 15 novembre 2014 )