0% ont trouvé ce document utile (0 vote)
554 vues49 pages

Systémes Embraqués1-2011

Transféré par

Simbil Pretty
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
554 vues49 pages

Systémes Embraqués1-2011

Transféré par

Simbil Pretty
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

 

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
• [Link]@[Link]
o M. Hichem BARGAOUI
• [Link]@[Link]

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 .[Link], .[Link],
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< [Link]
 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/[Link]
 Lignes formées de couples Sélecteur/Action
o Sélecteur simple : [Link]
• Attention : priority signifie niveau >= priority
• Exemple : [Link] messages concernant le mail, pour tous les niveaux
de notice à emergency (donc sauf info et debug)
o Sélecteur étendus:
• facility1,[Link]
• facility.=priority; facility.!=priority…
o Action :
• /chemin/vers/un/fichier/de/trace, @[Link],
• 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: [Link])

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: [Link])

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 [Link]
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 [Link]
o Gère les PowerPC, ARM, MIPs,X86,sh, m68k…
o Fonctionnalités comparables à U-boot
 LAB: Linux As Bootloader, de [Link]
o Partie du noyau Linux de [Link]
o [Link]
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
[Link]

• 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: [Link]
 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

Vous aimerez peut-être aussi