30
Capitole du Libre 2014 Du microcontrôleur au système Linux embarqué Choix d'architectures matérielles et logicielles Christophe Blaess http://christophe.blaess.fr http://www.logilin.fr

Du microcontrôleur au système Linux embarqué - Christophe Blaess

  • Upload
    hacong

  • View
    254

  • Download
    7

Embed Size (px)

Citation preview

Page 1: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 2: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 3: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 4: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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...

Page 5: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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...

Page 6: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 7: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 8: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 9: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 10: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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)

Page 11: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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)

Page 12: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 13: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 14: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 15: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 / ...

Page 16: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 17: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 18: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 19: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 20: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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°

Page 21: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 22: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 23: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 24: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 25: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 26: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 27: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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

Page 28: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 29: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )

Page 30: Du microcontrôleur au système Linux embarqué - Christophe Blaess

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 )