Documente Academic
Documente Profesional
Documente Cultură
2010
Nom: Programmation Linux embarqué
Module
o 21 heures
o Note
• 60% note examen
• 40% note compte rendu
o Objectifs
• Approfondir les connaissances sur les Systèmes embarqués
• Avoir une vision système «de l'intérieur»
• Se familiariser avec la cross-compilation
• Apprendre à développer des modules, des drivers …
Intervenants Académiques:
o Melle Lamis AMAMOU
• lamis.amamou@esprit.ens.tn
o M. Hichem BARGAOUI
• Hichem.bargaoui@esprit.ens.tn
2010 2
3
2010
Systèmes embarqués
Caractéristiques et Domaines d’applications
Rappels (noyau linux)
Linux embarqué (choix de Linux)
Cross compilation
Panorama des outils pour l’embarqué (GUI, navigateurs, librairies
allégées, bootloaders)
Virtualisation (Qemu)
2010 4
5
Systémes embarqués
2010
Un système embarqué
o système électronique et informatique autonome
o Dédié à une tâche bien précise.
o Ses ressources disponibles limitées.
• Limitation généralement d'ordre spatial (taille limitée)
• Limitation énergétique (consommation restreinte).
Les systèmes embarqués font très souvent appel à
l’informatique et notamment aux systèmes temps
réels.
L'ensemble logiciel, matériel intégré dans un
équipement constitue un système embarqué.
2010 6
Micro-ordinateur PC Système embarqué
Forme et périphériques Forme et périphériques suivant
standards les exigences et l’environnement
Matériel ouvert à de nombreuses de l’application
applications logicielles
Dispositif qui s’adapte à Matériel et logiciel dédiés aux
différents types de travaux: fonctionnalités de l’application
bureautique, calcul scientifique, Contraintes de consommation,
gestion,… de temps de traitement,
Moins de contraintes sur les d’encombrement, de robustesse
ressources logicielles et
matérielles et de coût
2010 7
Un système embarqué a des impératifs qui sont principalement :
La criticité:
o Les systèmes embarqués sont souvent critiques.
o Le degré de criticité est fonction des conséquences des déviations par rapport à
un comportement nominal
• Conséquences qui peuvent concerner la sûreté des personnes et des biens, la
sécurité…
L'autonomie
o Les systèmes embarqués doivent remplir leur mission pendant de longues
périodes sans intervention humaine.
La robustesse, sécurité et fiabilité
o L'environnement est souvent hostile, pour des raisons physiques (chocs,
variations de température, ...) ou humaines (malveillance).
o =>La sécurité - au sens de la résistance aux malveillances - et la fiabilité -au
sens continuité de service malgré les variations externes- sont souvent
rattachées à la problématique des systèmes embarqués.
Contraintes non fonctionnelles
o L'occupation mémoire, la consommation d'énergie, le coût (production en
grande série ->coût faible)...
2010 8
Un système embarqué est dédié à un domaine d’application
La réactivité
o Interaction avec l’environnement à une vitesse imposée par ce
dernier.
• Ceci induit donc des impératifs de temps de réponses.
Contraintes temporelles (temps-réel):
o Un système temps-réel doit réagir aux stimuli de son
environnement dans un délai temporel imposé par l'environnement
o Résultats corrects au sens temporel
• Pour un système temps-réel, il ne suffit pas de fournir des résultats
corrects, il faut aussi les fournir à temps (des résultats corrects mais
tardifs sont faux).
2010 9
Temps réel dur (Hard real-time)
o Une contrainte est dite "dure", si son non respect résulterait
en une catastrophe (Kopetz 1997)
o Exemples: pilote automatique d'avion, système de
surveillance de centrale nucléaire, équipement médical…
Temps réel souple ou mou (Soft real-time)
o Toutes les autres contraintes temporelles (tolérance d’un
dépassement exceptionnel, qui sera peut-être rattrapé à
l'exécution suivante).
o Exemples: audio, vidéo, DAB…
2010 10
2010 11
Calculateur générique
Fonctions: Traitement de données avec interface utilisateur interactive
Applications: Set-top box, PDA, …
Système de commande
Fonctions: Contrôle de systèmes en temps réel
Applications: procédé industriel, système de navigation, …
Système de traitement du signal
Fonctions: Calcul rapide sur des données à fort débit
Applications: Compression vidéo, radar …
Communication et réseau
Fonctions: Transmission et gestion d’accès
Applications: commutateurs, routeurs, stations de base, …
2010 12
13
Linux et ses preuves dans l’embarqué
2010
Système d’Exploitation = Operating System
Interface entre l’utilisateur et le matériel
o Présenter au programmes une abstraction du matériel
o Piloter un périphérique (compliqué)
• Pilote = Driver
o ⇒ le système d’exploitation propose une HAL(Hardware Abstraction
Layer)
L’interface entre le système d’exploitation et les
programmes de l’utilisateur est constitué d’un ensemble d’«
instructions étendues » fournies par le système
d’exploitation.
o Les appels système
2010 14
Fonctionnalités d’un Système d’Exploitation
o Servir les requêtes des processus
• Appels systèmes: Read, Write, Open, …
o Traiter les exceptions matérielles dues aux processus
• Déroutements: Division par 0, Débordement de pile, …
o Gérer les interruptions matérielles
• Interruptions: clavier / souris, réseau, …
o Fournir un ensemble de services spécifiques
• Assurer des tâches d’entretien du système
• Gestion du swap, des caches, …
• Gestionnaire de pages, …
2010 15
2010 16
Bref historique
o Initiateur du projet Linux: le finlandais Linus Benedict Torvalts de
l'université de Helsinki (Finlande)
o 1991 Annonce officielle par Linus Torvalts de la version 0.02
o 1993 version 0.99 du noyau linux, gratuit, disponible sur Internet
La gestion des versions
o La version d'un noyau Linux a une syntaxe particulière et est
récupérable:
• Soit par uname
• uname -r pour récupérer uniquement le numéro de la version
• uname -a pour récupérer toutes les informations du noyau
• Soit par cat /proc/version
o exemple: Linux version 2.6.9-1.667
-> x.y.z-W.T: x=version, y=release, z=sous-release,
W.t=version du patch de la distribution
2010 17
Principe jusqu’à la 2.5 comprise
o Les noyaux de « release » paire sont stables et utilisables
en production
o Dés qu'une version stable sort, une nouvelle « release » du
noyau (impaire) est crée pour le code de développent de la
prochaine version stable
Principe pour le noyau 2.6
o Le noyau 2.7 n'est pas actuellement en développement
o Plusieurs noyaux 2.6 co-existent
• Le 2.6.x, stable, maintenu par Linux Torvalds
• Le 2.6-mm, noyau de test pour les nouvelles
améliorations avant leur intégration dans le 2.6 normal
2010 18
Méthode à partir des sources
o Récupérer tarball .tar.gz, .tar.bz,
o Configurer avec automake
o ./configure ; make; make install
Paquetages de distribution
o Principaux formats :
• .deb (Debian, Ubuntu, ...)
• .rpm(RedHat, Mandriva, ...)
o Applications d'installation
• .deb : dpkg, dselect, aptitude, …
• .rpm: rpm, yum
Commandes de mise à jour:
o apt(Debian)
o yum/up2date(RedHat)
o synaptic: fonctionne avec les 2 formats
• Lancement : synaptic
2010 19
wget
o Récupérer des fichiers sur Internet: wget url
patch
o Appliquer un correctif sur les sources : patch –pn< file.diff
mount
o Attacher un nouveau FS: mount [–t type] device
make
o Compilation de sources: make target
o Optimation: make –j 4 (plus rapide même sur mono-proc.)
dmesg
o Accèdera aux messages envoyés par le noyau
2010 20
Emplacement des fichiers de log pour linux: /var/log
o En tant que root
• tail-f /var/log/messages
Démon syslogd
o Fichier /etc/syslog.conf
Lignes formées de couples Sélecteur/Action
o Sélecteur simple : facility.priority
• Attention : priority signifie niveau >= priority
• Exemple : mail.notice messages concernant le mail, pour tous les niveaux
de notice à emergency (donc sauf info et debug)
o Sélecteur étendus:
• facility1,facility2.priority
• facility.=priority; facility.!=priority…
o Action :
• /chemin/vers/un/fichier/de/trace, @machine.domaine,
• user1,user2, * : wall(1) (tous ceux qui sont connectés) ...
2010 21
Selon la FSF (Free Software Foundation), pour être libre, un logiciel doit
respecter quatre libertés fondamentales:
o liberté d'exécution
o liberté d'étude
o liberté d'amélioration
o liberté de redistribution des copies
o D’autres licences existent …(LGPL, BSD…)
2010 22
C'est une adaptation du noyau Linux à un système embarqué.
Suivant les capacités du système, une partie des fonctionnalités
du noyau est maintenue (moins de services, moins de mémoire
requise, pas de clavier…)
Linux embarqué est devenu la principale plateforme de
l’embarqué
2010 23
Quelques Systèmes d’exploitation
o VxWorks, PsoS, VRTX, OSE, ThreadX
o Linux , µcLinux, MontaVista Linux, Lynux
o WindowsCE, Symbian OS
o Beaucoup de systèmes "propriétaires"!
Autres logiciel
o Pilotes de périphériques, Interfaces graphiques, Protocoles
réseaux…
2010 24
Le marché de Linux embarqué (Source: linuxdevices.com)
2010 25
Linux et les smartphone
o Le monde des smartphones déjà habitué à Linux
• Maemo (qui équipe certains Nokia) et Android
o Android disponible dans des dizaines d’appareils
• iPhone OS reste confiné aux iPhone, BlackBerry OS pour les produits de RIM, Bada pour les
téléphones de Samsung.
o 1er trimestre 2010, plus de 5 millions de smartphones sous android vendus.
o Android va frapper très fort dans le secteur des tablettes tactiles.
o De très nombreux constructeurs exploitent ou comptent exploiter ce système :
Archos, ASUS (Eee Pad), Dell (Streak, Mini 5), Samsung (S-Pad), Notion Ink (Adam) et
bien sûr Google…
Et bientôt la télévision...
o Google TV (fonctionnant sous Android) souhaite proposer aux fabricants de
télévisions un boîtier offrant divers services.
• En cas de succès, diverses applications seront programmés pour les télévisions…
2010 26
Prix
o Raison économique: Linux est gratuit et sans royalties à payer pour
chaque produit vendu à base de Linux
• Important pour des systèmes destinés à être fabriqués en grande série,
« Code Source » disponible et gratuit
o Linux est un logiciel libre => code source disponible au public.
o Possibilités aux utilisateurs d'utiliser ce logiciel comme ils
l'entendent.
Plein d'application
o Diverses applications sont supportées par Linux.
• De manière générale il est possible de trouver des applications
gratuites adaptées pour votre domaine.
2010 27
Beaucoup de pilotes et outils de développement disponibles
o Nombreux pilotes existent souvent en modèle "OpenSource",
• Donc facilement modifiables ou adaptables.
o Pour développer une application, Il est nécessaire d'avoir les
outils comme le compilateurs, IDE, et le déboguer.
• Linux supporte le GCC, GDB pour déboguer et beaucoup de IDE.
Support de réseau
o La capacité de réseau sera indispensable pour la connectivité IP dans
l'embarqué.
• Cela permet l'interopérabilité du système (TCP/IP réseau., Routage/Firewall, Telnet,
NFS…)
Fiable et robuste
o La fiabilité de Linux est assurée pour des configurations optimales ou
plus complètes.
2010 28
Le répertoire /usr/src/linux/arch contient les architectures supportées
X86 (Intel est toujours le plus grand distributeur des processeurs
de cette famille)
o La plus populaire, linux supporte complètement l'architecture x86
o Représente une petite partie du marché de systèmes embarqués
ARM (fabriqués par Intel, Toshiba, Samsung, et beaucoup
d'autres)
o Fiable pour l’embarqué
MIPS (développée par MIPS Computer Systems)
Power PC (IBM: connu par son utilisation dans la machine Apple)
Les autres: Motorola, Intel 960, et ColdFire ..
2010 29
Le marché de Linux embarqué (Source: linuxdevices.com)
2010 30
uClibc
o Gère ARM, mips, powerPC, x86,i960…
o Version allégée de la glibc
o Ne gère que Linux (glibc gère MS-DOS, BeOS, AmigaOS…)
Dietlibc
o Très léger mais moins complet que uClibc
o Gère ARM, X86, mips, powerRPC…
2010 31
Interfaces graphiques:
Nano-X Window System Gestionnaire d’affichage graphique
o Propose une API compatible win32 et une API proche de Xlib
o Très léger environ 100ko
tinyX
o Version allégée du serveur X
2010 33
34
Produire du code pour un autre processeur
2010
Le principe de la compilation croisée (Cross Compilation ):
o Compiler des programmes sur une machine ayant une
architecture différente de la machine qui utilisera ce
programme.
o =>Il s'agit simplement de produire, au travers d'un
compilateur, un fichier binaire qui est utilisable sur un
environnement autre que celui sur lequel il a été produit.
Compilateur croisé (Cross Compiler): Est un programme
capable de traduire un code source en code objet ayant un
environnement d'exécution (architecture matérielle, système
d’exploitation) différent de celui où la compilation est
effectuée.
2010 35
Un environnement de développement croisé est composé de
deux entités à distinguer:
o La cible (Target-System) est la plateforme matérielle qui va accueillir
l'OS et/ou le ou les applicatifs embarqués.
o L'hôte de développement (Host-Development) est la plateforme de
développement sur laquelle sont mis au point les différentes parties
logicielles de la cible.
o => Ces deux entités seront reliées par un moyen de connexion
Lorsque les systèmes 'cible' et 'hôte' sont identiques , on ne
parle plus de compilation croisée mais d’une
compilation native.
2010 36
Raisons principales d’entreprendre cette démarche:
o Plus rapide sur la station de travail que sur le système cible
o Plus facile d’avoir un environnement de développement sur la
station de travail que sur la cible
• Problème de place sur la cible
• Problème de ressources sur la machine cible (écran, taille, clavier, …)
Les outils pour les développeurs de système embarqués
sont différents par rapport à ceux d’un développement
ordinaire.
o Ces outils s'appellent souvent des chaîne de compilation croisée
"cross-platform development tools" ou "cross-development tools".
2010 37
Système d’exploitation?
2010 38
2010 39
Les outils de développement habituels disponibles sur un
poste de travail (PC) Linux est la chaîne de compilation GNU
o Cette chaîne fonctionne sur le pc et produit du code pour le pc
(habituellement architecture x86)
o Elle se compose des composants suivants:
• binutils: un ensemble d'outils de développement logiciel
• compilateur C/C++: GCC et débogueur GDB
• bibliothèque C (Glibc, Dietlibc, uClibc)
o Le composant du toolchain de GNU est téléchargeable sous
ftp://ftp.gnu.org/gnu/
• 2010 40
Pour un développement pour des systèmes embarqués, il est
habituellement impossible ou non intéressant pour employer la chaîne
de compilation native
o Cible est trop restreinte en termes de stockage et/ou la mémoire, est lente comparée
au poste de travail
o Il n’est pas possible d’installer tous les outils de développement sur votre cible.
2010 41
2010 42
La chaine de compilation croisée ARM existante dans
/usr/local/arm/3.3.2/
Ce chemin est à ajouter dans le PATH
o export PATH=/usr/local/arm/3.3.2/bin:$PATH
Compiler pour une cible (ARM)
o make ARCH=arm CROSS_COMPILE=armlinux
o make modules_install
Installer
o Copier arch/<platform>/boot/zImage sur la cible
o Copier /lib/modules/<version> sur la cible
2010 43
44
Qemu
2010
Objectif:
Faire tourner plusieurs systèmes sur une seule machine
Notions
o Couche d'abstraction matérielle et/ou logicielle
o Système d'exploitation hôte (host) installé directement sur le
matériel
o Systèmes d'exploitations (ou applications, ou encore ensemble
d'applications) «virtualisé(s)» ou «invité(s)» (guest)
o Partitionnement, isolation et/ou partage des ressources physiques
et/ou logiques
2010 45
QEMU
o émulateur de plate-formesx86, PPC, Sparc
2010 46
Emulateur
o Permet l’exécution d’un programme pour un système X sur un système
Y
o Une instruction est exécutée par une routine qui simule le PC
o Lent mais universel
o Ex: Emulateurs PSX, DS, Néo-Géo, … mais aussi Plex86, QEMU
Virtualisation complète
o Compile les instructions lors de leur 1ère exécution (Virtual PC)
o Si possible, le code est directement exécuté sur le CPU, sinon, ré-
écriture dynamique.
o Ex:Vmware, Kqemu, VirtualBox)
Para-Virtualisation ou Hyperviseur
o Le système invité à «conscience» du système sous-jacent
o Performances optimales (proches d’un système hôte)
o Ex: Xen, UML, Hypervisor, …
2010 47
48
Emulateur libre
2010
Emulateur de Processeur Open Source
Modes de fonctionnement
o User Emulation: permet de lancer un programme Linux compilé pour un
CPU sur un autre
o System Emulation: émule un système complet (CPU, périphériques, …)
pour y installer un système d’exploitation
o Module de virtualisation(kqemu): augmente les performances
Réalisé par Fabrice Bellard: http://bellard.org/qemu/
Fonctionne sous (système hôte)x86, x86-64, PPC, Sparc32, ARM,
MIPS, Sparc64, ia64, m68k
QEMU émulation(système cible)x86, x86-64,ARM,Sparc32, PPC,
MIPS, m68k, Sparc64, PPC64
QEMU émulation User (système cible)x86, x86-64,ARM,Sparc32,
PPC, MIPS, m68k, Sparc64, PPC64
2010 49