Vous êtes sur la page 1sur 49

 

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

o Ils existent beaucoup d’autres applications permettant l’affichage de graphisme


pour des systèmes embarqués fonctionnant à l’aide de Linux: QtEmbedded,
miniGui, PoketLinux …
 Navigateurs:
 Dillo
o Navigateur open Source très léger (350Ko de ROM)
o Fonctionne sur les Unix
 Netfront
o Microbrowser pour systèmes embarqués.
o Principalement déployé sur les téléphones mobiles, décodeurs TV, PDA…
2010 32
 Das U-boot(Das UniversalBootloader)
o http://uboot.sourceforge.net/
o Gère les PowerPC, ARM, MIPs,X86…
o Permet de lire/écrire de la flash et de la RAM
o Permet de booter depuis la flash, le réseau ou une carte mémoire
 Redboot
o Chargeur de démarrage basé sur eCos de RedHat
o http://sources.redhat.com/redboot
o Gère les PowerPC, ARM, MIPs,X86,sh, m68k…
o Fonctionnalités comparables à U-boot
 LAB: Linux As Bootloader, de Handhelds.org
o Partie du noyau Linux de Handhelds.org
o http://handhelds.org/moin/moin.cgi/Linux26ToolsAndSources
o Matériel supporté: arm (expérimental)

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.

 Par conséquent, des « cross-compiling toolchains » sont généralement


employés.
 GNU fournit une chaîne de compilation croisée utilisée souvent pour la
construction d'un Linux Embarqué.

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

 KVM (Kernel-based Virtual Machine)


o version modifiée de QEMU tirant parti des instructions de virtualisation des
processeurs Intel et AMD (Intel VT ou AMD-V)
 Vmware
o propriétaire, émulateur de plate-forme x86
 Microsoft VirtualPC et VirtualServer
o propriétaire, émulateur de plate-forme x86
 VirtualBox
o émulateur de plateforme x86

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