Patrice KADIONIK
ENSEIRB-MATMECA
-1-
OBJECTIFS DU COURS
-2-
HISTORIQUE
V1.0 09/02 : Cration du document. V2.0 09/03 : MAJ des offres Linux embarqu pour plus de clart. Ajout mesures performances TR. V 2.1 09/03 : Ajout chapitre sur la mise au point des systmes embarqus. V 2.2 09/05 : MAJ scurit hardware. V 2.3 11/06 : MAJ. V 3.0 09/07 : MAJ et remise en forme. V 4.0 10/08 : MAJ. Connectivit IP supprime. V 5.0 10/10 : MAJ. Partie RTLinux revue. A terme supprime. V 7.0 09/11 : MAJ et remise en forme. V 8.0 02/13 : MAJ et remise en forme. Partie scurit hardware supprime. Partie RTLinux supprime. Ajout parties PREEMPT-RT et Xenomai.
-3-
CHAPITRE 0 : INTRODUCTION
-4-
INTRODUCTION
Cette formation a pour but de prsenter les lments techniques pour apprhender au mieux le monde des systmes embarqus : Les systmes embarqus aujourdhui. Le codesign : dveloppement conjoint matriel et logiciel. Linux embarqu : Les concepts. Le panorama. Mise en uvre de Linux embarqu par lexemple. Le Temps Rel sous Linux. Les concepts. Le panorama. Mise en uvre de PREEMPT-RT et Xenomai par lexemple. La mise au point des systmes embarqus : conception, les outils de debug, trucs et astuces.
-5-
-6-
-7-
Les systmes (numriques) embarqus ont vu leur importance progresser au rythme de limportance prise par les microprocesseurs. 1971 : premier microprocesseur 4 bits 4004 dIntel 92,5 kHz vendu 200 $. Le succs a t l tout de suite. Juin 1978 : premier processeur x86 8086 4,77 MHz (technologie 3 m, 29000 transistors), bus dadresse 20 bits 9,1 Mo/s, bus de donnes 16 bits. Juin 1979 : 8088 intgr dans le premier IBM-PC en 1981. Motorola, Zilog, TI ont embot le pas Le march des microprocesseurs est un march qui crot de faon exponentielle.
IT331 : Les systmes embarqus. Linux pour lembarqu -8-
pk/enseirb/2013 v8
Deux lois empiriques sont vrifies depuis 30 ans (en plus de la loi de Moore) : Loi de JOY : la puissance CPU en MIPS double tous les 2 ans. Loi de RUGE : on a besoin dune Bande Passante de 0,3 1 Mb/s par MIPS. Le march du microprocesseur a aussi tir le march des systmes embarqus et des tlcommunications.
-9-
Grce aux progrs de lintgration sur silicium, on est pass rapidement du processeur 4 bits au : Processeur 8 bits. au Processeur 64 bits. Il ne faut pas croire que le march du microprocesseur se rsume celui du PC via les processeurs x86.
- 10 -
- 11 -
Il a t vendu 108 millions de processeurs x86 pour le march du PC contre 1,4 milliard de processeurs 8 bits pour le march des systmes embarqus (appel aussi march de lembarqu). On voit ainsi que 2 % des processeurs vendus sont pour le march du PC. Dans 85 % des cas, Microsoft Windows est utilis. Pour 98 % des autres processeurs vendus, on utilisera gnralement un autre systme dexploitation (OS). On trouvera ici dans 50 % des cas un OS propritaire. Beaucoup optent pour des OS libres comme Linux embarqu
- 12 -
En 2004, il a t vendu environ 260 millions de processeurs pour le march du PC grand public comparer aux 14 milliards de processeurs tout type confondu (microprocesseur, microcontrleur, DSP) pour le march de l'embarqu. Si l'on regarde le prix moyen d'un processeur tout type confondu, on arrive 6 USD par unit comparer au prix moyen de 300 USD par unit pour un processeur pour PC. Le march du processeur pour PC est trs faible en volume mais extrmement lucratif !
- 13 -
Moins de 10 % des processeurs vendus sont des processeurs 32 bits pour prs de 31 % du chiffre d'affaire sur les processeurs. Cette part du chiffre d'affaire tait de 48 % pour 2008 : cela montre la migration rapide vers ces processeurs 32 bits dans l'embarqu, condition ncessaire pour pouvoir mettre en oeuvre un systme dexploitation comme Linux. Actuellement, les processeurs 32 bits sont la norme. Dans ce cas, il faut avoir le rflexe aussi dembarquer un vritable systme dexploitation
- 14 -
Peripheral Communication
Microcontroller Precision control of motors and actuators Quickly resolve complex software program control flow Fast response to external events
- 15 -
Embedded Processor
DSP
Benefit Digital filtering in few cycles Interface to codecs Hardware support for translation of analog signals High data Throughput from Peripheral DMA Less wasted cycles fetching serial ports data from serial ports Fast data access Harvard architectures and Fast execution of signal variants processing algorithms
- 16 -
Moyen 2-8 Mo
PC embarqu 16-64 Mo
MMU optionnelle
2-4 Mo 4-16 Mo xx Mo FLASH FLASH MIPS, ARM, Cortex Hitachi SH x86, PowerPC NIOS II, MicroBLaze, Leon Ardoise Internet Carte unit centrale System on Chip (SoC) Routeur Dcodeur Stockage en rseau Imprimante en rseau
CompactPCI
- 17 -
Un systme embarqu peut tre dfini comme un systme lectronique et informatique autonome ne possdant pas des entres/sorties standards comme un clavier ou un cran d'ordinateur (PC). Le systme matriel et lapplication sont intimement lis et noys dans le matriel et ne sont pas aussi facilement discernables comme dans un environnement de travail classique de type PC. Un systme embarqu est donc un systme lectronique et informatique autonome, qui est ddi une tche bien prcise.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 18 -
Un systme embarqu : Est un systme numrique. Utilise gnralement un processeur. Excute un logiciel ddi pour raliser une fonctionnalit prcise. Na pas rellement de clavier standard (BP, clavier matriciel...). Laffichage est limit (cran LCD) ou nexiste pas du tout. Nest pas un PC traditionnel.
- 19 -
Diffrences avec un ordinateur de bureau : Linterface IHM peut tre aussi simple quune led qui clignote ou aussi complexe quun systme de vision de nuit. Des circuits numriques FPGA, ASIC ou des circuits analogiques sont utiliss en plus pour augmenter les performances du systme ou sa fiabilit. Le logiciel a une fonctionnalit fixe excuter et est spcifique une application.
- 20 -
10
- 21 -
EXEMPLE : WIRELESS
Autoradio GPS
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 22 -
11
EXEMPLE : ROBOTIQUE
- 23 -
EXEMPLE : AUTOMOBILE
Automobile 1: Rear distance Sensor, 2: Control unit, 3: Speed signal, 4: Front distance sensor, 5: Motor, 6: Lamps.
- 24 -
12
Fonctionnement en Temps Rel : Ractivit : des oprations de calcul doivent tre faites en rponse un vnement extrieur (interruption matrielle). La validit d'un rsultat (et sa pertinence) dpend du moment o il est dlivr. Rater une chance va causer une erreur de fonctionnement. Temps Rel dur : plantage. Temps Rel mou : dgradation temporaire non dramatique des performances du systme. Beaucoup de systmes sont multirate : traitement dinformations diffrents rythmes.
- 25 -
Faible encombrement, faible poids : Electronique pocket PC : applications portables o l'on doit minimiser la consommation lectrique (bioinstrumentation...). Difficult pour raliser le packaging afin de faire cohabiter sur une faible surface lectronique analogique, lectronique numrique, RF sans interfrences. Faible consommation : Batterie de 8 heures et plus (PC portable : 2 heures).
- 26 -
13
Environnement : Temprature, vibrations, chocs, variations dalimentation, interfrences RF, corrosion, eau, feu, radiations. Le systme nvolue pas dans un environnement contrl. Prise en compte des volutions des caractristiques des composants en fonction de la temprature, des radiations...
- 27 -
Fonctionnement critique pour la scurit des personnes. Sret : Le systme doit toujours fonctionner correctement. Sret faible cot avec une redondance minimale. Sret de fonctionnement du logiciel Systme oprationnel mme quand un composant lectronique lche.
- 28 -
14
Beaucoup de systmes embarqus sont fabriqus en grande srie et doivent avoir des prix de revient extrmement faibles, ce qui induit : Une faible capacit mmoire. Un petit processeur (4 bits). Petit mais en grand nombre ! La consommation est un point critique pour les systmes avec autonomie. Une consommation excessive augmente le prix de revient du systme embarqu car il faut alors des batteries de plus forte capacit. Faible cot : Optimisation du prix de revient.
IT331 : Les systmes embarqus. Linux pour lembarqu - 29 -
pk/enseirb/2013 v8
- 30 -
15
- 31 -
Gnralement, un systme embarqu doit respecter : Des contraintes temporelles fortes (hard Real Time). On y trouve enfoui un systme d'exploitation ou un noyau Temps Rel (Real Time Operating System ou RTOS). Le Temps Rel est un concept un peu vague. On pourrait le dfinir comme : Un systme est dit Temps Rel lorsque l'information aprs acquisition et traitement reste encore pertinente.
- 32 -
16
Cela veut dire que dans le cas d'une information arrivant de faon priodique (sous forme dune interruption priodique du systme), les temps d'acquisition et de traitement doivent rester infrieurs la priode de rafrachissement de cette information. Pour cela, il faut que le noyau ou le systme Temps Rel soit dterministe et premptif pour toujours donner la main durant le prochain tick la tche de plus forte priorit prte.
- 33 -
Une confusion classique est de mlanger Temps Rel et rapidit de calcul du systme donc puissance du processeur (microprocesseur, microcontrleur, DSP).
On entend souvent : tre temps Rel, cest avoir beaucoup de puissance : des MIPS, des MFLOPS. NON. Il faut rpondre au plus juste dans un temps maximum !
- 34 -
17
La question dutiliser un systme d'exploitation Temps Rel ou non ne se pose plus aujourdhui pour des raisons videntes : Simplification de lcriture de lapplication embarque. Portabilit. Evolutivit. Matrise des cots. Le systme dexploitation peut tre mme maison !
- 35 -
Kernel
Aujourdhui
- 36 -
18
La superboucle nest pas prime mais reste rserve aux petits systmes embarqus. Le choix doit tre bien sr le bon choix pour minimiser les cots du systme. On noublie pas les bonnes recettes du pass !
- 37 -
Linux depuis 2001 est en train de conqurir un domaine o on ne lattendait pas vraiment : les systmes embarqus. Pourquoi retrouve-t-on Linux dans lembarqu ? Tout dabord pour ses qualits quon lui reconnat maintenant dans lenvironnement plus standard du PC grand public : Libre, disponible gratuitement au niveau source : pas de royalties reverser. Ouvert.
- 38 -
19
Pourquoi retrouve-t-on Linux dans lembarqu ? Tout dabord pour ses qualits quon lui reconnat maintenant dans lenvironnement plus standard du PC grand public : Stable et efficace. Aide rapide en cas de problmes par la communaut Internet des dveloppeurs Linux. Nombre de plus en plus important de logiciels disponibles. Connectivit IP en standard.
- 39 -
Linux a aussi dautres atouts trs importants pour les systmes embarqus : Portage sur processeurs autres que x86 : PowerPC, ARM, MIPS, 68K, ColdFire, NIOS, MicroBlaze Taille du noyau modeste compatible avec les tailles de mmoires utilises dans un systme embarqu (< 1 Mo). Diffrentes distributions proposes suivant le domaine : routeur IP, PDA, tlphone Support du chargement dynamique de modules qui permet doptimiser lempreinte mmoire du noyau. Migration rapide et en douceur pour un spcialiste Linux Linux embarqu ; ce qui rduit les temps de formation (et les cots).
IT331 : Les systmes embarqus. Linux pour lembarqu - 40 -
pk/enseirb/2013 v8
20
On a en fait entendu parler pour la premire fois officiellement de Linux embarqu une exposition Linux World en 1999 o les socits Motorola, Force et Ziatech ont prsent un systme CompactPCI fonctionnant sous Linux. En 2000 a t cr le consortium Linux embarqu (Embedded Linux Consortium) dont le but est de centraliser et de promouvoir les dveloppements de solutions Linux embarqu. Ce consortium regroupe des diteurs de distribution Linux, des diteurs de systmes Temps Rel propritaires (comme WindRiver pour VxWorks) et des fabricants de composants.
- 41 -
Les distributions Linux embarqu ont une part de march grandissante face des distributions propritaires gnralement Temps Rel comme VxWorks, pSOS, QNX o lon est dabord oblig de payer pour accder la plateforme de dveloppement puis de payer des royalties pour chaque systme (ou cible) que lon commercialise ensuite. Il est noter que lon observe une volution de ce systme page de certains face la menace Linux.
- 42 -
21
Linux embarqu supporte aussi diffrentes extensions Temps Rel dur qui mettent en place une couche dabstraction logique entre le matriel, les interruptions et Linux. Linux et lensemble des processus sont gnralement considrs comme la tche de fond excute quand il y a rien de Temps Rel faire On peut citer comme extensions Temps Rel dur : Xenomai. RTAI.
- 43 -
- 44 -
22
CONNECTIVITE INTERNET
La connectivit Internet permet de raccorder tout systme lectronique (systme embarqu) au rseau Internet. On parle aussi de connectivit IP (Internet Protocol). Ajouter une connectivit IP un systme lectronique permet de le contrler distance de nimporte o dans le monde : Par une application rseau. Plus simplement par le Web en utilisant un navigateur Internet.
- 45 -
CONNECTIVITE INTERNET
Cette ultime (?) tape est laboutissement du contrle distance dun systme lectronique par Internet : Par un terminal VT100 (80x24 caractres) reli par une liaison srie RS-232. Par une application graphique sur un PC reli par une liaison srie. Par une application graphique sur un PC ou une station de travail reli par une liaison Ethernet (ou par un bus de terrain). Oar une application graphique de type navigateur Web sur un quipement de contrle (PC, station de travail, ordinateur de poche, tlphone portable) reli lInternet.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 46 -
23
CONNECTIVITE INTERNET
La connectivit IP demande dembarquer une suite de protocoles Internet sur le systme lectronique pour pouvoir tre mise en uvre. On parle alors de protocoles Internet embarqus (sur le systme) ou plus simplement d'Internet embarqu. La suite des protocoles IP embarquer est plus ou moins importante en fonction du service implanter : Contrle par une application rseau spcifique (API sockets). Contrle par le web. Envoi demails.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 47 -
CONNECTIVITE INTERNET
La connectivit IP prsume inconsciemment lutilisation dinterfaces graphiques modernes et banalises (navigateur Web) en adquation avec les besoins actuels des utilisateurs. Cest en fait l'aboutissement dun lent processus de modernisation du tlcontrle allant de la liaison srie RS-232 dporte lapplet Java excute par un navigateur Web interrogeant un serveur Web embarqu !
- 48 -
24
CONNECTIVITE INTERNET
Explosion du march de lInternet embarqu
1,000,000,000 utilisateurs 100,000,000 10,000,000 1,000,000 100,000
Government & Research Worldwide Web Email
Internet Users
Today
Embedded Internet
1980
1985
1990
1995
2000
2005
2010
- 49 -
CONNECTIVITE INTERNET
Importance croissante du Wireless Embedded Internet
Bil $ 140 120 100 80
% of SC Market Wireless Wired
60 40 20 0
- 50 -
25
- 51 -
La capacit de conception des systmes numriques permet aujourdhui de tout intgrer dans un mme composant (concept du single chip). On travaille donc au niveau systme et non plus au niveau porte lmentaire ou schmatique. On parle de systme sur silicium SoC (System on Chip) ou SoPC (System on Programmable Chip). Ceci est li la loi empirique de Moore qui stipule que pour une surface de silicium donn, on double le nombre de transistors intgrs tous les 18 mois !
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 52 -
26
Technologie Complexit
1998 1999 2001 2009 0,25 m 0,18 m 0,15 m 40 nm 1 M de portes 2-5 M 5-10 M 1 G Loi de Moore
2012 20 nm 10 G
- 53 -
- 54 -
27
System System C C Application Application Compilers Compilers (FIR) (FIR) Intellectual Intellectual Property Property Behavioral Behavioral VHDL/Verilog VHDL/Verilog
100K-1M
Gates (K)
10-100K
RTL RTL
1K-5K
Schematics Schematics
Equations Equations
1 1991 1993 1995 1997 1999 2001 2003 2005
- 55 -
On utilise maintenant des langages de description du matriel (VHDL, Verilog) pour synthtiser et aussi tester les circuits numriques. On a ainsi une approche logicielle pour concevoir du matriel. Avec laugmentation de lintgration, les systmes numriques se sont complexifis alors que la mise sur le march doit tre la plus rapide possible : Prise en compte du Time To Market (TTM). Rutilisation de choses dj ralises (Design Reuse).
- 56 -
28
On a ainsi vu apparatre la notion de blocs IP (Intellectual Property) qui est possible par lutilisation des langages de description du matriel. On achte des blocs IP comme on achte un circuit intgr : Interface bus CAN. Transformation DCT. Interface MAC IEEE 802.3 qui est la condition ncessaire pour assurer la connectivit IP sur rseau Ethernet.
- 57 -
HARDWARE OU SOFTWARE ?
La difficult est maintenant de savoir comment implmenter une fonctionnalit. Exemple dun algorithme de compression vido : Plus rapide par hardware mais plus cher. Plus flexible par software mais plus lent. On doit tre capable de jongler en plus avec les paramtres suivants : Cot. Rapidit. Robustesse.
- 58 -
29
1. Choix du matriel (composants lectroniques, processeur) pour le systme embarqu. 2. Donner le systme ainsi conu aux programmeurs. 3. Les programmeurs doivent raliser un logiciel qui colle au matriel en nexploitant que les ressources offertes.
- 59 -
COMPLEXITE GRANDISSANTE
Les systmes embarqus sont de plus en plus complexes. Il est de plus en plus difficile de penser une solution globale optimise du premier jet. Il est de plus en plus difficile de corriger les bugs . Il est de plus en plus difficile de maintenir le systme au cours du temps (obsolescence des composants). En consquence, lapproche traditionnelle de dveloppement dun systme embarqu doit voluer...
- 60 -
30
Dans llectronique embarque, le temps de conception devient de plus en plus rduit (pour diminuer les cots, gagner un appel doffre). Le temps dveloppement de llectronique dans lindustrie automobile est passe de 3 5 ans 1 3 ans. Et le systme doit toujours tre toujours aussi sr et robuste !
- 61 -
SOLUTION A LA COMPLEXITE
Dans le processus de conception du systme, on doit garder un niveau dabstraction important le plus longtemps possible. Le systme doit pouvoir tre dcompos en sous-systmes suivant une hirarchie logique (approche objet). Si le design change, on doit pouvoir en rutiliser une bonne partie (design reuse). Il ne faut pas jeter la poubelle un prcdent design et repartir from scratch ! On doit pouvoir utiliser des outils de vrification automatique.
- 62 -
31
Lusage dun processeur facilite la ralisation du systme dans la majorit des cas. Il se peut aussi que le processeur soit surdimensionn par rapport la fonctionnalit logique implmenter par logiciel. Lusage de circuits logiques programmables FPGA (ou ASIC) est alors intressante dans ce cas. Lusage d'un processeur spcialis comme un microcontrleur ou un DSP peut aussi rduire considrablement le surdimensionnement et le nombre de composants lectroniques.
- 63 -
LA QUADRATURE DU CERCLE
Quand on conoit un systme embarqu, un certain nombre de contraintes apparaissent : Quel hardware a-t-on besoin ? Quel processeur choisir ? Quelle puissance CPU ? Quelle type de mmoire et taille mmoire a-t-on besoin ? Choix entre hardware rapide ou software intelligent ? Consommation ? Minimiser les accs mmoire ? Choisir les instructions assembleur en fonction de leur consommation ? Les contraintes de temps de conception seront-elles respectes ? TTM ?
- 64 -
32
LA QUADRATURE DU CERCLE
Quand on conoit un systme embarqu, un certain nombre de contraintes apparaissent : Est-ce que le systme final marche correctement ? Est-ce que les spcifications fonctionnelles ont t respectes ? Comment doit-on tester les caractristiques Temps Rel du systme ? Doit-on le tester avec des donnes relles ? Quelle plateforme de tests doit-on utiliser ?
- 65 -
CODESIGN HARDWARE/SOFTWARE
Le codesign dans la mthodologie de conception dun systme embarqu est de plus en plus utilis. Le codesign permet de concevoir en mme temps la fois le matriel et le logiciel pour une fonctionnalit implmenter. Cela est maintenant possible avec les niveaux dintgration offerts dans les circuits logiques programmables. Le codesign permet de repousser le plus loin possible dans la conception du systme les choix matriels faire contrairement lapproche classique o les choix matriels sont faits en premier lieu !
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 66 -
33
CONCEPTION ET CODESIGN
HW
- 67 -
- 68 -
34
CODESIGN HARDWARE/SOFTWARE
- 69 -
CODESIGN HARDWARE/SOFTWARE
- 70 -
35
CODESIGN HARDWARE/SOFTWARE
- 71 -
AVANTAGES DU CODESIGN
Le codesign est intressant pour la conception des systmes embarqus (ou de SoC) : Amlioration des performances : paralllisme, algorithmes distribus, architecture spcialise Reconfiguration statique ou dynamique en cours de fonctionnement. Indpendance vis vis des volutions technologiques des circuits logiques programmables. Mise profit des amliorations des outils de conception fournis par les fabricants de circuits logiques programmables : synthse plus efficace, performances accrues.
- 72 -
36
BILAN
Les systmes embarqus tant de plus en plus complexes, une mthodologie rigoureuse de conception doit tre maintenant mise en uvre. Le codesign fait partie intgrante de cette mthodologie. Cela est maintenant possible grce des niveaux dintgration sur silicium trs importants des circuits logiques programmables qui peuvent aujourdhui embarquer aussi des processeurs. Lapparition de modules IP, vritables circuits lectroniques sous forme logicielle na fait quaccentuer l'importance du codesign et du design reuse.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 73 -
- 74 -
37
- 75 -
92%
92%
88%
58% 60% 48% 50% 40% 30% 20% 10% 0% Fiabilit Stabilit Performances 42%
Linux
Windows
- 76 -
38
LE MARCHE DE L'EMBARQUE
- 77 -
LE MARCHE DE L'EMBARQUE
- 78 -
39
- 79 -
- 80 -
40
Linux est un systme d'exploitation libre de type UNIX lanc par le finlandais Linus Torvalds en 1991 avec l'assistance de milliers de dveloppeurs dans le monde pour son volution. Son succs tient au fait qu'il est dvelopp sous licence GPL (General Public License), ce qui signifie que le code source Linux est disponible tout le monde et gratuit. Son emblme est un manchot : le tux.
- 81 -
Linux correspond au systme d'exploitation : le noyau. Linux tourne originellement sur plateforme i386 et suprieure avec 8 Mo de RAM. IL FAUT DONC UN PROCESSEUR 32 BITS AVEC MMU (OU A DEFAUT 32 BITS SANS MMU AVEC Clinux).
- 82 -
41
Linux est complt des outils GNU (Gnu is Not UNIX). Linux est disponible sous forme de distributions : Debian, RedHat, Fedora, Ubuntu, SuSE, Slackware... Linux est utilis avec une interface graphique : Gnome, KDE, Xfce
- 83 -
Linux est open source : Le code source est disponible au public. Le code source inclut : Le noyau Linux. Les pilotes de priphriques (driver). Un ensemble de petits utilitaires (MAKEDEV). On peut ainsi voir directement travers les fichiers sources ce que fait le noyau Linux voire modifier son comportement au besoin. On n'a donc pas une bote noire (avec comme seul interlocuteur une hot line !).
- 84 -
42
Linux est fiable : Grce une gestion mmoire optimise, Linux peut tourner sur une machine des annes sans plantage et sans cran bleu de la mort . Linux est extensible : Une application Linux crite pour une plateforme PC peut tre facilement porte sur une plateforme Linux embarque.
- 85 -
Linux est scuris : Linux est conu pour que les processus ne puissent pas lire en mmoire code et donnes sans provoquer une violation des rgles de scurit du systme (segmentation violation). Cela permet de confiner les programmes malicieux. Scurisation du systme de fichiers avec des droits d'accs. Scurisation d'accs physique la plateforme. Scurisation de l'accs rseau.
- 86 -
43
Linux supporte la plus large palette de protocoles rseau tests et prouvs (indispensable pour la connectivit IP) : TCP/IP. Routing/Firewalling. Serveur Web. Serveur FTP. Serveur Telnet. SMB. NFS. Protocoles WAN : X.25, AX.25, HDLC, ATM. ...
- 87 -
Linux possde un support efficace travers la communaut de dveloppeurs. On trouve toujours une application Linux correspondant son besoin (ou trs proche). On capitalise son exprience UNIX en travaillant sous Linux car Linux est UNIX like d'o des cots de formation rduits.
- 88 -
44
Les cots de mise en uvre de Linux sont rduits : Toutes les distributions Linux sont disponibles gratuitement au tlchargement par Internet. On peut acheter une distribution (< 150 euros) avec la documentation papier et un service support de 30 jours gnralement. Les outils de dveloppement (compilateurs, IDE) sont disponibles faible cot ou gratuits (GNU).
- 89 -
Linux est sans royalties payer pour chaque produit vendu base de Linux. Ce point est une ( r )volution dans le domaine de l'embarqu o les outils (OS, IDE) sont chers et o l'on paye en plus des royalties non ngligeables sur chaque produit conu avec.
- 90 -
45
Linux est un logiciel libre : cela donne le pouvoir aux utilisateurs d'utiliser ce logiciel comme ils l'entendent : Free software is a matter of liberty, not price free as in free speech, not as in free beer. Free Software Foundation Le dveloppement n'est pas contrl par un petit groupe de dveloppeurs donc pas de despotisme possible. Il est possible de gagner de l'argent avec le logiciel libre (formation, assistance).
- 91 -
L'OPEN SOURCE
Lopen source : accs aux sources du logiciel. Lopen source permet : Une interoprabilit entre applications et les diffrentes plateformes. La formation par analyse des sources. L'accs aux sources permet d'optimiser des parties de code pour des performances accrues. Les ides et algorithmes deviennent des standards et sont disponibles tous sans brevet. Des distributeurs dveloppent et vendent leurs fonctionnalits au dessus de logiciels open source. Le terme open source est plus vendeur que logiciel libre.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 92 -
46
Dfinition technique du logiciel libre (free software) d'aprs la FSF (Free Software Foundation) : Users have the freedom to : (1) run the software, for any purpose; (2) study how the program works and adapt it to their needs; (3) redistribute copies; (4) improve the program and release improvements to the public Access to source code is necessary for (2) and (4) so Free can include Open Source
IT331 : Les systmes embarqus. Linux pour lembarqu - 93 -
pk/enseirb/2013 v8
En consquence, le logiciel libre peut tre modifi, utilis et mme vendu. Vendre un logiciel libre correspond ajouter un service, un bonus : Outils dinstallation, de packaging de logiciels. Aide, support, formation. Adaptation de logiciel un besoin spcifique. Driver dun matriel sous forme dun module Linux (founiture du fichier objet .o). Des amliorations dun logiciel libre peuvent tre proposes par tous sous forme dune nouvelle release.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 94 -
47
Mise disposition du code source. Les modifications apportes au programme doivent tre clairement indiques et dates (Changelog). Un programme sous GPL reste un programme sous GPL.
- 95 -
Pour distribuer un programme sous GPL : Transmettre tous les droits que vous possdez. Sassurer que les destinataires reoivent le code source ou peuvent se le procurer. Leur remettre la licence GPL afin queux aussi connaissent leurs droits.
- 96 -
48
Une licence logicielle prcise ce que l'utilisateur peut faire avec un logiciel et son code. Une licence traditionnelle (commerciale) prcise strictement l'utilisation du logiciel achet. Une licence open source indique comment le code peut tre utilis, rutilis et redistribu. La licence gnralement mise en uvre est la licence GPL.
- 97 -
La licence GPL est le modle de distribution idal d'un logiciel propos par la FSF et le projet GNU. Les dveloppeurs peuvent choisir de licencier leur logiciel sous licence GPL. Cela exige que les utilisateurs maintiennent le code source originel et indiquent clairement les changements oprs avant toute redistribution. Le code source est disponible, les utilisateurs peuvent le modifier, le compiler comme ils veulent.
- 98 -
49
AUTRES LICENCES
Il existe d'autres types de licences : MIT. BSD. X11, XFree86. Netscape. W3C.
- 99 -
AUTRES LICENCES
IT331 : Les systmes embarqus. Linux pour lembarqu Source: Free Software Foundation
pk/enseirb/2013 v8
- 100 -
50
LINUX ET LA PORTABILITE
Linux est fortement portable. Une mme application peut tre utilise (porte) sur : Un nombre important de processeurs : x86, Alpha, ARM, StrongARM, MIPS, PowerPC, m68k, NIOS, MicroBlaze... Un nombre important de plateformes ou BSP (Board Support Package). Un nombre important d'interfaces physiques avec le driver adquat. Linux est donc capable d'excuter la mme application du PDA l'ordinateur de bureau. Linux est un systme d'exploitation de choix pour les systmes embarqus. On parle de Linux embarqu.
IT331 : Les systmes embarqus. Linux pour lembarqu - 101 -
pk/enseirb/2013 v8
LINUX EMBARQUE
Linux embarqu est une adaptation du noyau Linux un systme embarqu. Suivant les capacits du systme, on ne retrouve qu'une partie des fonctionnalits du noyau : Moins de services disponibles. Moins de mmoire requise (< 8 Mo). Boot depuis une mmoire ROM. Pas de clavier ou de souris requis. Logiciels spciaux pour piloter les priphriques du systme (cran LCD, Flash disk, Disk On Chip DOC, touch screen).
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 102 -
51
LINUX EMBARQUE
Une version de Linux embarqu peut tre spcialement configure pour coller une plateforme ou application prcise : Linux embarqu pour routeur IP (projet OpenWRT). Linux embarqu sur PDA. Linux embarqu pour microcontrleur sans MMU. Linux embarqu sur processeur 80286 et infrieur. ...
- 103 -
On utilise pour le dveloppement sous Linux embarqu les mmes outils traditionnels GNU : (cross) compilateurs C/C++. C est prfrable pour limiter la taille des excutables. IDE. GDB. Simulateur (qemu).
- 104 -
52
On utilise pour le dveloppement sous Linux embarqu un PC de dveloppement sous Linux (hte) avec une chane de compilation croise en fonction du processeur embarqu sur le systme (cible). L'excutable ainsi produit est tlcharg dans la cible pour pouvoir y tre test. On utilisera alors GDB pour debugger l'application par le rseau que l'on pourra coupler avec une interface graphique de type DDD. Un montage NFS depuis la cible d'un rpertoire du PC hte permet de simplifier la phase de tlchargement.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 105 -
Il existe des simulateurs tournant sur le PC hte pour simuler la cible : qemu. UML (User Mode Linux). Cela permet de crer une machine virtuelle tournant un Linux embarqu correspondant la cible et son type de processeur.
- 106 -
53
Miniature <0,1 Mo
Petit
Moyen 2-8 Mo
0,14 Mo 0,1-0,5 Mo 0,52 Mo DragonBall 68K Mcore ColdFire ARM MMU optionnelle
PC embarqu 16-64 Mo
2-4 Mo 4-16 Mo xx Mo FLASH FLASH MIPS Hitachi SH x86 PowerPC Ardoise Internet Carte unit centrale System on Chip (SoC) Routeur Dcodeur Stockage en rseau Imprimante en rseau
CompactPCI
- 107 -
- 108 -
54
- 109 -
- 110 -
55
Little Board (5.75 x 8.0 in.) -- complete systems on a single compact board, expandable with plug-on function modules ISA "slot boards" (full-length, 13.8 x 4.8 in.; halflength, 7.1 x 4.8 in.) -- IBM PC plug-in cards which could function as standalone SBCs backplanes) PC/104 modules (3.6 x 3.8 in.) -- compact, rugged, self-stacking modules featuring a reliable pin-andsocket board-to-board expansion bus
- 111 -
- 112 -
56
- 113 -
- 114 -
57
Les drivers Linux pour un priphrique donn ne sont pas toujours disponibles. Le manque de standards : window manager, GUI, extensions Temps Rel Le manque dune cohrence marketing. Le manque doutils de qualification dun systme sous Linux (tests de conformit de lAPI POSIX pour le Temps Rel ?). Le modle de la licence GPL mal compris (droits et surtout obligations).
IT331 : Les systmes embarqus. Linux pour lembarqu - 115 -
pk/enseirb/2013 v8
- 116 -
58
Les offres de version de Linux embarqu (et Temps Rel) peuvent tre ranges dans lune des 3 catgories suivantes : Les distributions Linux classiques : RedHat , Ubuntu, Fedora, Debian, Slackware, Suse Suivant la quantit de mmoire disque du systme embarqu, il est possible ddulcorer une distribution classique (<100-150 Mo). Cela tient dans une mmoire Flash. Le projet LFS (Linux From Scratch) explique comment construire son Linux pas pas depuis rien suivant ses besoins : www.linuxfromscratch.org
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 117 -
Les offres de version de Linux embarqu (et Temps Rel) peuvent tre ranges dans lune des 3 catgories suivantes : Les distributions Linux embarqu commerciales : non TR : Montavista, Lineo-MetrowerksMotorola/Creation Suite for Linux, LynuxWorks/BlueCat. TR : WindRiver-Intel/RTLinux, Montavista, LynuxWorks/BlueCat RT, TimeSys/Linux RTOS, LineoMetrowerks-Motorola/Creation Suite for Linux.
TR=Temps Rel
- 118 -
59
Les offres de version de Linux embarqu (et Temps Rel) peuvent tre ranges dans lune des 3 catgories suivantes : Les distributions Linux embarqu libres : non TR : Clinux, Embedded Debian Project. TR dur : Xenomai, RTAI. TR mou : PREEMPT-RT. Autres : eCOS, FreeRTOS...
- 119 -
MontaVista Professional or Carrier Grade or Consumer Electronics Edition : Solution gnrale (et TR) pour lembarqu. www.mvista.com kit d'valuation disponible (preview kit). MontaVista Linux Professional Edition
This industry-leading comprehensive embedded operating system and cross development environment is our flagship product. It provides a common source and binary platform across a broad range of processor architectures. The Professional Edition includes a modern OS featuring real-time functionality, multi-process and multi-threaded with extensive bundled software components including rich networking.
- 120 -
60
Support for over seventy popular COTS, Evaluation, and Reference boards. Support for seven target CPU families with more than 25 CPU variants.
KDevelop IDE. MontaVista Target Configuration Tool. MontaVista Library Optimizer Tool. Graphical binary and source-level debug. Graphical kernel configuration tool. Kernel debug (KGDB and hardware debuggers). File system populator.
- 121 -
Rich Complement of target-based Software Components Deployable utilities, libraries, drivers, and other run-time components Real-time Support MontaVista Linux Preemptible Kernel MontaVista Linux Real-time Scheduler with up to 1024 levels of priority Rich Networking Extensive complement of clients and servers Rich support for the TCP/IP Suite Broad support for routing, security, tunneling cPCI backplane networking
- 122 -
61
Clinux est fait pour : Les processeurs 32 bits sans MMU. www.uclinux.org Caractristiques de Clinux :
Clinux is the ideal OS for non-MMU microprocessors and high-volume embedded systems featuring posix-4, real-time functions, and TCP/IP. Clinux includes a complete TCP/IP stack supporting Ethernet, PPP and SLIP as well as many wireless protocols. Clinux is perfect for remote sensing, monitoring and control applications. And, because Clinux is an open source product, you will never be stuck on a dead end development path.
- 123 -
Embedded Debian Project : Outil de gnration dun Linux embarqu (OS+FS). www.emdebian.org Caractristiques de Embedded Debian Project :
The first effort will attempt to capture the current state of the art by exploring the tools and techniques used by other embedded Linux distributions. The primary product of this effort will be the development of a "Guide to Embedding Debian", a comprehensive guide to getting the most (or least, depending on how you look at it) out of Debian for embedded systems.
- 124 -
62
The second effort involves determining the best ways to extend Debian's reach into the embedded space. This will involve things such as: Creating a set of build-tools for embedded system developers to easily package just the parts they need. Emdebsys and ipkg seem to be the basis to work from. Specifying new packages tailored specifically for embedded systems Ensuring new embedded packages work across as many platforms as possible Involvement in Linux standardization activities involving embedded Linux. Work with debian proper to integrate embedded requirements into the debian infrastructure. EmDebSys a system for the configuration and generation of both a Linux kernel *AND* an operating system (i.e. root filesystem). EmDebSys is being designed to assist embedded Linux developers in configuring and generating small (1 to 10Mb) Linux target systems (ARM, PowerPC, SPARC, Intel x86, Alpha and Motorola 680x0).
- 125 -
Le choix est faire en fonction de ses comptences en interne et des TTM respecter. Choisir un linux embarqu commercial est rassurant. Cela a aussi un cot.
- 126 -
63
PARTIE 3 : BILAN
- 127 -
Clinux Embedded Debian Project Metrowerks/Creation Suite for Linux Montavista LynuxWorks/Bluecat
- 128 -
64
- 129 -
Il existe un ensemble de logiciels libres utilitaires (projets) qui facilitent la conception logicielle dun systme sous Linux embarqu.
On utilise dans ce cadre des utilitaires faible empreinte mmoire adapts lembarqu. Ils possdent leur quivalent sous Linux standard.
Il convient de connatre la bote outils libres pour concevoir son systme Linux embarqu.
- 130 -
65
COMPILATEURS CROISES
Adresse Internet
http://www.gnu.org/software/gcc/ http://www.kegel.com/crosstool/
Description
Compilateur C, C++, Objective-C, Fortran... Gnrateur automatique d'un compilateur C, C++ et la bibliothque glibc pour processeurs alpha, ARM, x86, IA64, MIPS, PowerPC, SH4... Gnrateur automatique d'un compilateur C, C++ et la bibliothque Clibc pour processeurs ARM, MIPS, PowerPC ainsi que le root File System Gnrateur automatique d'un compilateur C, C++ et la bibliothque glibc ou Clibc pour processeurs ARM, x86, PowerPC, MIPS
Buildroot
http://buildroot.uclibc.org/
Scratchbox
http://www.scratchbox.org/
- 131 -
COMPILATEURS CROISES
Outil ELDK Adresse Internet
ftp://mirror.switch.ch/mirror/eldk/eldk/
Description
Kit Embedded Linux Development Kit de la socit DENX. Contient les compilateurs croiss prcompils pour processeurs PowerPC, ARM, MIPS Documentation : http://www.denx.de/wiki/DULG/Manual Compilateur crois prcompil pour processeurs ARM Compilateur crois prcompil pour processeurs ARM Compilateur crois prcompil pour processeurs MIPS Compilateur crois prcompil pour processeurs m68k, ColdFire et ARM Compilateur crois prcompil pour processeurs H8
http://www.codesourcery.com/gnu_toolchains/arm/
ftp://ftp.handhelds.org/projects/toolchain/
http://www.linux-mips.org/wiki/MIPS_SDE_Installation
http://www.uclinux.org/pub/uClinux/m68k-elf-tools/
http://www.uclinux.org/pub/uClinux/ports/h8/
- 132 -
66
BIBLIOTHEQUES LIBC
Adresse Internet
http://www.gnu.org/software/libc/ http://www.uclibc.org/ http://sources.redhat.com/newlib/ http://www.fefe.de/dietlibc/
Description
libc standard GNU. Peu adapte l'embarqu libc pour l'embarqu libc pour l'embarqu libc pour l'embarqu
- 133 -
DEBUG
Outil gdb
Adresse Internet
http://www.gnu.org/software/gdb/gdb.ht ml
Description
Debugger GNU. Une version cross compile est gnralement fournie avec les chanes de compilation croise prcompiles Data Display Debugger. Front end gdb
DDD
http://www.gnu.org/software/ddd/
- 134 -
67
NOYAU LINUX
Outil Noyau Linux Noyau Clinux Noyau Clinux Noyau Clinux Noyau Clinux Noyau Clinux Adresse Internet
http://www.linux.org/
Description
Noyau Linux standard Noyau Clinux pour processeurs m68k Noyau Clinux pour processeurs ColdFire Noyau Clinux pour processeurs ARM7TDMI Noyau Clinux pour processeurs Blackfin Noyau Clinux pour processeurs H8
http://www.uclinux.org/pub/uClinux/ports/h8/
- 135 -
NOYAU LINUX
Outil Noyau Linux Noyau Linux Noyau Linux Noyau Linux Noyau Linux Noyau Clinux Noyau Clinux Adresse Internet
http://www.denx.de/en/Software/WebHome
Description
Noyau Linux pour processeurs ARM, PowerPC et MIPS (ELDK) Noyau Linux pour processeurs ARM Noyau Linux pour processeurs alpha Noyau Linux pour processeurs superH Noyau Linux pour processeurs MIPS Noyau Clinux pour processeurs softcore NIOS II. S'inscrire auparavant Noyau Clinux pour processeurs softcore Microblaze
http://www.arm.linux.org.uk/
http://www.alphalinux.org/
http://tsukuba.m17n.org/linux-sh/
http://www.linux-mips.org/
http://www.niosforum.com
http://xilinx.wikidot.com/microblaze-linux
- 136 -
68
BOOTLOADERS LINUX
Outil u-boot
Adresse Internet
http://sourceforge.net/projects/u-boot
Description
Universal Boot. Bootloader Linux pour processeurs PowerPC, ARM, x86, MIPS, Xscale, ColdFire 52x2,PXA... et processeurs softcore MicroBlaze, NIOS I et NIOS II Bootloader ColdFire Linux pour processeurs
Bootloader Linux pour processeurs PowerPC. Intgr dans u-boot Bootloader Linux pour processeurs ARM Bootloader Linux pour processeurs MIPS
- 137 -
BOOTLOADERS LINUX
Outil MRB RedBoot Adresse Internet
http://www.cybertec.com.au/mrb.html
Description
My Right Boot. Bootloader Linux pour processeurs ColdFire Bootloader Linux pour processeurs ARM, CalmRISC, FR-V, H8, IA32, 68k, Matsushita AM3x, MIPS, NEC V8xx, PowerPC, SPARC, SuperH. S'utilise avec eCos BIOS pour carte mre base processeurs x86, Alpha et AMD64 BIOS pour carte processeurs x86 mre base de de
http://ecos.sourceware.org/redboot/
http://www.openbios.info/
http://freebios.sourceforge.net/
http://syslinux.zytor.com/pxe.php
Bootloader Linux par le rseau Ethernet conforme la norme PXE pour carte mre de PC base de processeurs x86 Bootloader Linux par le rseau Ethernet pour carte mre de PC base de processeurs x86
EtherBoot
http://etherboot.sourceforge.net/
- 138 -
69
Adresse Internet
http://busybox.net/
Description
Vritable couteau suisse ! BusyBox est incontournable aujourd'hui Shell (intgr dans BusyBox)
- 139 -
EDITEURS DE TEXTES
Adresse Internet
http://busybox.net/ http://www.nyangau.fsnet.co.uk/ http://www.sax.de/~adlibit/
Description
vi est dans BusyBox Andy's Editor. Editeur Editeur compatible vi, emacs et Wordstar Editeur compatible vi Editeur Editeur compatible emacs
- 140 -
70
Description
Serveur web. Le serveur web pour l'embarqu. Support des scripts CGI boa+php pour Clinux disponible ici : http://www.menie.org/georges/uClinux/bo a-php.html tiny/turbo/throttling HTTP server. Serveur web
thttpd
http://www.acme.com/software/thttpd/
BusyBox contient un serveur web Serveur web. Support des scripts CGI Navigator web. Mode graphique
- 141 -
Description
Navigator web. Mode graphique Outil pour la configuration rseau
Client NTP Client et serveur SSH. Peut tre compil avec Clibc Outil pour grer le contrle d'accs au systme embarqu : login, passwd, getty... Client et serveur DHCP (intgr dans BusyBox)
udhcp
http://udhcp.busybox.net/
- 142 -
71
INTERFACES GRAPHIQUES
Outil Frame Buffer DirectFB Nano-X Adresse Internet
http://www.linux.org
Description
Intgr au noyau Linux
http://www.directfb.org/ http://www.microwindows.org/
graphique
tournant
au-dessus
du
Environnement graphique tournant au-dessus du Frame Buffer, X Window, SVGAlib. Il existe 2 API (Application Programming Interface) : - Nano-X : API compatible Xlib - Win32 : API compatible Windows Win32 Environnement Frame Buffer graphique tournant tournant tournant au-dessus au-dessus au-dessus du de du
Open Palmtop Integrated Environment. Environnement graphique tournant au-dessus du Frame Buffer GPE Palmtop Environment. Environnement graphique tournant au-dessus du X11
- 143 -
EMULATEURS
Outil qemu Adresse Internet
http://qemu.org/
Description
Emulateur pour processeurs x86, ARM, SPARC et PowerPC. Peut muler un systme Linux pour processeurs x86, x86_64 et PowerPC Emulateur d'un systme Linux pour processeurs x86 Emulateur pour processeurs ColdFire. Peut muler un systme Clinux Emulateur pour processeurs ARM. Peut muler un systme Linux ou Clinux Emulateur pour processeurs ARM. Peut muler un systme Linux Emulateur pour processeurs ARM. Peut muler un systme Clinux
http://user-mode-linux.sourceforge.net/ http://www.slicer.ca/coldfire/
http://skyeye.sourceforge.net/index.shtml
Softgun SWARM
http://softgun.sourceforge.net/ http://www.cl.cam.ac.uk/~mwd24/phd/swarm.html
- 144 -
72
GUI
Mise en uvre de Java avec une JVM comme OS : Androd. Il est possible aussi d'utiliser des interfaces graphiques lgres : Nano/X (MicroWindows). Qt Embedded de Nokia (Trolltech) (et drivs Qtopia, OPIE). Frame buffer.
- 145 -
AUTRES
Outil MTD
Adresse Internet
http://www.linux-mtd.infradead.org/
Description
Memory Technology Device. Bibliothque pour grer la mmoire FLASH. Intgr au noyau Linux Journalling Flash File System, version 2. Systme de fichiers pour mmoire FLASH Linux Test Project. Suite de tests d'un systme Linux
JFFS2 LTP
http://sources.redhat.com/jffs2/
http://ltp.sourceforge.net/
- 146 -
73
- 147 -
Pour bien concevoir son systme embarqu libre, il convient de respecter quelques points importants. Il sagit de rgles de bon sens !
- 148 -
74
Le systme dexploitation est Linux. Il faut donc choisir un processeur 32 bits support par Linux ou Clinux (avec ou sans MMU). Il faut choisir des composants lectroniques supports par Linux et non linverse. On naura dvelopper que les drivers spcifiques de son application.
- 149 -
Trs tt dans le processus de conception, on utilisera une carte dvaluation du commerce utilisant le mme processeur que celui de son design. Il est mme possible dutiliser cette carte dvaluation comme carte finale de son design en rajoutant ventuellement des cartes filles pour sa partie spcifique. Cela est dautant plus facile que lon utilise des cartes au format industriel : PC/104, EBX, ETX
- 150 -
75
Il serait tonnant de ne pas avoir le portage de Linux embarqu pour la carte dvaluation choisie ! Il est alors possible de dvelopper la partie logicielle sur la carte dvaluation en ajoutant les cartes filles spcifiques. Cela est gnralement simplifi par la prsence de connecteurs dE/S permettant de sinterfacer sur le bus du processeur. Il est fourni gnralement les schmas lectroniques de la carte dvaluation, ce qui permet une reprise de CAO pour la carte finale.
- 151 -
Il ne faut pas hsiter sabonner et poser des questions dans les forums adquats. La rponse est rapide. Il ne faut pas hsiter suivre des formations pour gagner du temps. Cest un investissement pour lavenir ! Lexprience acquise dans le libre pour lembarqu peut dboucher vers dautres marchs
- 152 -
76
Il faut privilgier la solution Linux embarqu la plus simple. Au minimum, pour concevoir son systme Linux embarqu, on a besoin : Dun bootloader Linux : u-boot. Du noyau Linux. Dun systme de fichiers root : busybox.
- 153 -
Mmoire FLASH
Hardware
Processeur
U-boot
- 154 -
77
u-boot : on adaptera le bootloader sa carte cible. Noyau Linux : le noyau Linux sera configur et ventuellement adapt sa carte cible puis cross-compil. Bibliothque libc : on utilisera une bibliothque adapte : Clibc Busybox : le couteau suisse sera configur puis crosscompil.
- 155 -
- 156 -
78
PRESENTATION DE Clinux
Clinux est originellement un driv du noyau Linux 2.0 pour les microcontrleurs sans MMU (Memory Management Unit). Clinux se prononce you-see-Linux : C pour microcontrleur. Clinux a t port en premier lieu sur le microcontrleur Motorola MC68328 DragonBall. Le premier systme sous Clinux a t un ordinateur de poche PalmPilot.
- 157 -
PRESENTATION DE Clinux
Tous les portages Clinux suivant le type du processeur sont sous licence GPL. www.uclinux.org
- 158 -
79
PRESENTATION DE Clinux
Clinux a t port sur diffrents processeurs : Motorola DragonBall (M68EZ328), M68328, M68EN322, ColdFire, QUICC. ARM7. MC68EN302. MicroBlaze. Blackfin. NIOS II.
- 159 -
Clinux vs Linux
Labsence de MMU impose quelques limitations dusage par rapport lenvironnement Linux : La mmoire virtuelle nexiste pas. Lappel systme fork() n'est pas support. Il faudra utiliser alors une implmentation de lappel systme vfork() dUNIX BSD (le processus parent est suspendu jusqu ce que le processus fils appelle exec() ou exit() ) . Lappel systme exec() ne peut pas charger actuellement une image binaire suprieure 256 Ko. La taille de la pile est fixe pour chaque processus.
- 160 -
80
- 161 -
La mise en uvre de Clinux sera faite sur carte Analog Devices Blackfin BF537 EZ-KIT Lite. La carte dvaluation Blackfin BF537 EZ-KIT Lite possde : Un processeur Blackfin BF537 600 MHz. 64 Mo de mmoire SDRAM. 4 Mo de mmoire FLASH. 1 port srie. Une liaison Ethernet IEEE 802.3 10/100BaseT. Un port de debug JTAG.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 162 -
81
- 163 -
En tant simple utilisateur, dans son Home Directory, installer le package Clinux :
% cd ~ % tar xvzf uClinux.tgz
- 164 -
82
Configurer le noyau Clinux comme sous Linux (choix de la carte, des applications embarquer) :
% make menuconfig
Tlcharger l'image dans la carte depuis le moniteur (par le rseau) et lancer le noyau Clinux.
- 165 -
- 166 -
83
- 167 -
- 168 -
84
- 169 -
- 170 -
85
- 171 -
Le fichier image (fichier uImage) du noyau Clinux est recopi sous /tftpboot. Ce fichier sera ensuite tlcharg par le rseau depuis le bootloader u-boot de la carte Blackfin par le protocole TFTP :
bfin> tftp uImage bfin> bootm
- 172 -
86
Le processeur ColdFire est un processeur de Motorola dont la premire version est sortie en 1994. Le processeur ColdFire est le successeur du clbre processeur Motorola 68000 dont la production sest arrte avec le microprocesseur 68060 il y a quelques annes. Il reprend le jeu dinstructions du microprocesseur 68020 o lon a supprim les instructions qui ne servaient gure ainsi que certains modes dadressage. Le processeur ColdFire reprend une architecture RISC.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 173 -
Suivant les versions de processeur ColdFire, Motorola a rajout des instructions de type MAC (Multiply and ACCumulate) que lon retrouve dans les processeurs de traitement du signal (Digital Signal Processing). Il a aussi intgr des priphriques ; ce qui confre au processeur ColdFire les proprits dun microcontrleur/DSP. Le march vis par Motorola est clairement celui des tlcommunications o lon retrouve ce genre de besoins.
- 174 -
87
La mise en uvre de Clinux sera faite sur carte ColdFire Motorola EVB M5407C3. La carte dvaluation M5407C3 possde : Un processeur MCF5407 150 MHz (257 Dhrystone MIPS). 32 Mo de mmoire SDRAM. 2 Mo de mmoire FLASH dont 0,3 Mo occup par le moniteur de la carte. 2 ports srie. Une liaison Ethernet IEEE 802.3 10BaseT. Un port de debug BDM (Background Debugger Module). Un slot PCI (version 2.1).
IT331 : Les systmes embarqus. Linux pour lembarqu - 175 -
pk/enseirb/2013 v8
- 176 -
88
En tant simple utilisateur, dans son Home Directory, installer le package Clinux :
% cd ~ % tar xvzf uClinux-dist-aaaammjj.tar.gz
- 177 -
Configurer le noyau Clinux comme sous Linux (choix de la carte, des applications embarquer) :
% make xconfig
Tlcharger l'image dans la carte depuis le moniteur (par le rseau, par la liaison srie) et lancer le noyau Clinux.
- 178 -
89
Durant la phase de configuration, il convient de choisir les bons paramtres correspondant la carte Motorola. On laissera les autres paramtres avec leurs valeurs par dfaut.
- 179 -
- 180 -
90
- 181 -
Configuration du noyau :
- 182 -
91
- 183 -
- 184 -
92
- 185 -
La carte ColdFire possde un moniteur embarqu pour des oprations lmentaires accessibles depuis le port srie :
- 186 -
93
Le fichier image (fichier image.bin) du noyau Clinux est recopi sous /tftpboot. Ce fichier sera ensuite tlcharg par le rseau depuis le moniteur de la carte ColdFire par le protocole TFTP. Il convient donc d'avoir un serveur TFTP actif sur le PC hte.
- 187 -
- 188 -
94
- 189 -
pk/enseirb/2013 v8
- 190 -
95
pk/enseirb/2013 v8
- 191 -
- 192 -
96
PARTIE 1 : INTRODUCTION
- 193 -
Un systme d'exploitation est dit Temps Rel s'il est capable de rpondre des sollicitations ou vnements (internes ou externes) dans un temps maximum. On parle ainsi de Temps Rel mou (soft Real Time) quand les vnements traits trop tardivement ou perdus sont sans consquence catastrophique pour la bonne marche du systme. On ne garantit pas un temps de traitement maximum dans 100 % des cas tout en essayant de sy rapprocher.
- 194 -
97
On peut citer l'exemple des systmes multimdia : si quelques images ne sont pas affiches correctement, cela ne met pas en pril le fonctionnement correct de l'ensemble du systme. Au bout de quelques images perdues, le systmes retrouve son fonctionnement normal. Cela ne nuit pas lusager Cela dfinit une certaine QoS sur la gestion du temps. Le Temps Rel peut tre vu comme une Qualit de Service offert une application ;-)
- 195 -
On parle de Temps Rel dur (hard Real Time) quand les vnements traits trop tardivement ou perdus provoquent des consquences catastrophiques pour la bonne marche du systme (perte d'informations cruciales, plantage). Les systmes contraintes dures ne tolrent quune gestion stricte du temps est ncessaire afin de conserver l'intgrit du service rendu. On citera comme exemples les contrles de processus industriels sensibles comme la rgulation des centrales nuclaires ou les systmes embarqus utiliss dans l'aronautique.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 196 -
98
Ces systmes garantissent un temps maximum d'excution pour chaque tche dans 100 % des cas. On a ici une rpartition stricte et totalitaire du temps CPU entre tches. On peut dire qu'un systme Temps Rel doit tre prvisible (predictible), les contraintes temporelles maximales garanties pouvant descendre quelques s.
- 197 -
Les systmes contraintes dures doivent rpondre trois critres fondamentaux : Le dterminisme logique : les mmes entres appliques au systme doivent produire les mmes effets. Le dterminisme temporel : un tche donne doit obligatoirement tre excute dans les dlais impartis. On parle d'chance. La fiabilit : le systme doit tre disponible. Cette contrainte est trs forte dans le cas d'un systme embarqu car les interventions d'un oprateur sont trs difficiles voire mme impossibles. Cette contrainte est indpendante de la notion de Temps Rel mais la fiabilit du systme sera d'autant plus mise l'preuve dans le cas de contraintes dures.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 198 -
99
Linux standard nest pas un systme d'exploitation Temps Rel dur car : Le noyau Linux possde de longues sections de code o tous les vnements extrieurs sont masqus (non interruptible). Le noyau Linux n'est pas premptible durant toute l'excution d'un appel systme (structure monolithique) par un processus et ne le redevient qu'en retour d'appel systme (mode user). Le noyau Linux n'est pas premptible durant le service d'une interruption ISR (Interrupt Sub Routine). La routine ISR acquitte l'interruption puis programme un Bottom Half (BH) pour le traitement des donnes. Le BH est excut de faon non premptif immdiatement avant de retourner en mode user.
IT331 : Les systmes embarqus. Linux pour lembarqu - 199 -
pk/enseirb/2013 v8
Linux standard nest pas un systme d'exploitation Temps Rel dur car : En cas d'occurrence d'une interruption durant l'excution d'un appel systme en mode noyau, le BH programm par l'ISR et ventuellement les autres BH des autres ISR) ne sera excut qu' la fin de l'excution complte de l'appel systme d'o un temps de latence important et non born fatal un systme Temps Rel !
- 200 -
100
Linux standard nest pas un systme d'exploitation Temps Rel dur car : L'ordonnanceur de Linux essaye d'attribuer de faon quitable le CPU l'ensemble des processus (ordonnancement de type old aging mise en uvre pour favoriser l'accs CPU aux processus rcents). C'est une approche galitaire. Un ordonnanceur Temps Rel dur donnera toujours la main la tche de plus forte priorit prte.
- 201 -
Le noyau Linux standard ne peut tre pas tre considr comme Temps Rel dur. Il existe des solutions Linux Temps Rel dur pour une ractivit de quelques dizaines de s garantie dans 100 % des cas Il existe des solutions Linux Temps Rel mou (par application de patchs sur un noyau Linux standard) pour une ractivit de quelques dizaines de s non garantie dans 100 % des cas...
- 202 -
101
ISR
Interrupt Interrupt
ISR
Interrupt
ISR
time
OK
JAMAIS
<n
ISR
time
n: dlai maximum
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 203 -
Waiting task
Scheduler
Interrupt context
Scheduling latency
kernel latency = interrupt latency + handler duration + scheduler latency + scheduler duration
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 204 -
102
start
time
tche
Linux standard
start
tche tche
start
tche
start
tche
start
time
RTOS
OK
tche
JAMAIS
<n
start
tche
OK
<n
start
tche
OK
<n
start
<n
start
tche
time
- 205 -
Gnration d'un signal priodique sur une broche du port parallle. Noyau Linux 2.4. Le signal gnr sur la broche 2 (bit D0) du port parallle est thoriquement un signal priodique carr de demi-priode T/2 de 50 ms. On observe l'oscilloscope le signal suivant sur un systme non charg (AMD Athlon 1500+).
- 206 -
103
#define LPT 0x378 int ioperm(); int main(int argc, char **argv) { setuid(0); if (ioperm(LPT, 1, 1) < 0) { perror("ioperm()"); exit(-1); }
- 207 -
- 208 -
104
- 209 -
On remarque que l'on n'a pas une priode de 100 ms mais de 119,6 ms d au temps supplmentaire d'excution des appels systme. Ds que l'on stresse le systme (criture rptitive sur disque d'un fichier de 50 Mo), on observe le signal suivant :
- 210 -
105
- 211 -
On observe maintenant une gigue (jitter) sur le signal gnr. La gigue maximale sur la dure de l'exprience est de 17,6 ms. La forme du signal varie maintenant au cours du temps, n'est pas de forme carre mais rectangulaire. Linux n'est donc plus capable de gnrer correctement ce signal. Il faut noter aussi que le front montant sur la figure prcdente apparat sans gigue car il a servi comme front de synchronisation de l'oscilloscope. La gigue observe est donc voir comme la contribution de la gigue sur front montant et sur front descendant. Si l'on diminue la valeur de la demi-priode, la gigue devient aussi importante que cette dernire et dans ce cas, Linux ne gnre plus aucun signal !
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 212 -
106
La complexit des systmes et l'interoprabilit omniprsente ncessitent une standardisation de plus en plus grande tant au niveau des protocoles utiliss que du code source des applications. Mme si elle n'est pas obligatoire, l'utilisation de systmes conformes POSIX est de plus en plus frquente. POSIX est l'acronyme de Portable Operating System Interface ou interface portable pour les systmes d'exploitation. Cette norme a t dveloppe par l'IEEE (Institute of Electrical and Electronic Engineering) et standardise par l'ANSI (American National Standards Institute) et l'ISO (International Standards Organisation).
IT331 : Les systmes embarqus. Linux pour lembarqu - 213 -
pk/enseirb/2013 v8
Le but de POSIX est d'obtenir la portabilit des logiciels au niveau de leur code source. Un programme qui est destin un systme d'exploitation qui respecte POSIX doit pouvoir tre adapt moindre frais sous n'importe quel autre systme POSIX. En thorie, le portage d'une application d'un systme POSIX vers un autre doit se rsumer une compilation des sources du programme. POSIX a initialement t mis en place pour les systmes de type UNIX mais d'autres systmes d'exploitation comme Windows sont aujourd'hui conformes POSIX.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 214 -
107
IEEE 1003.1-1990 : POSIX Partie 1 : Interface de programmation (API) systme. Dfinition d'interfaces de programmation standards pour les systmes de type UNIX, connu galement sous l'appellation ISO 9945-1. Ce standard contient la dfinition de ces fonctions en langage C. IEEE 1003.2-1992 : Interface applicative pour le shell et applications annexes. Dfinit les fonctionnalits du shell et commandes annexes pour les systmes de type UNIX. IEEE 1003.1b-1993 : Interface de programmation (API) Temps Rel. Ajout du support de programmation Temps Rel au standard prcdent. On parle galement de POSIX.4. IEEE 1003.1c-1995 : Interface de programmation (API) pour le multithreading.
- 215 -
La norme POSIX 1003.1b dfinit la notion de Temps Rel pour un systme d'exploitation des fins de normalisation : Realtime in operating systems: the ability of the operating system to provide a required level of service in a bounded response time Cela implique pour le systme dexploitation :
Davoir un ordonnancement des tches premptif (avec priorit). De coller en mmoire les pages virtuelles. De supporter des signaux Temps Rel. Davoir des mcanismes de communication inter processus IPC (Inter Processus Communication) performants. Davoir des timers Temps Rel.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 216 -
108
Linux ne supporte que partiellement la norme POSIX 1003.1b et ne peut tre considr en l'tat comme un systme Temps Rel. Appels systme dvelopps : mlock(), setsched(). Il convient donc de modifier Linux pour le rendre Temps Rel et conforme la norme POSIX 1003.1b.
- 217 -
Implmentation du noyau Linux standard : Pas de support du Temps Rel. Sparation entre le matriel et les processus Linux. ...
- 218 -
109
Solution 1 pour une extension Temps Rel mou de Linux : Modification du noyau Linux par application de patchs pour amliorer les contraintes Temps Rel : dvalider les interruptions le moins longtemps possible, appeler l'ordonnanceur le plus souvent possible (fonction schedule() du noyau), en retour d'interruption par exemple, rduction des temps de latence. Cette technologie est disponible avec le projet open source PREEMPT-RT et elle est galement supporte commercialement par divers diteurs spcialiss comme MontaVista, TimeSys...
- 219 -
Solution 2 pour une extension Temps Rel dur de Linux : Ajout d'un deuxime ordonnanceur TR de tches et considrer le noyau Linux et ses processus comme tche de fond. Plus difficile que la premire solution. Cette technique permet de mettre en place des systmes Temps Rel durs. Utilis dans les projets Xenomai et RTAI.
- 220 -
110
Solution 2 pour une extension Temps Rel dur de Linux : Ajout d'une couche d'abstraction entre le matriel et le noyau Linux. Dfinition de tches Temps Rel. Pas de sparation entre le matriel et les tches Temps Rel.
- 221 -
- 222 -
111
VERITABLE RTOS
Avantages : simplicit, monolithique, fait pour le Temps Rel, excellente ractivit. Inconvnients : fonctionnalits plus ou moins limites. Exemples : VxWorks, QNX, pSOS, VRTX, C/OS II, eCOS, FreeRTOS... Application TR RTOS Hardware
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 223 -
Avantages : de nombreuses fonctionnalits, coopration entre tches Temps Rel et processus non Temps Rel. Inconvnients : n'est pas un vrai RTOS monolithique. Exemples : Xenomai, RTAI... Applications
Applications TR
OS standard
Extension TR
Hardware
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 224 -
112
- 225 -
Les offres de version de Linux embarqu et Temps Rel peuvent tre ranges dans lune des 2 catgories suivantes : Les distributions Linux Temps Rel commerciales. Les distributions Linux Temps Rel libres.
- 226 -
113
Montavista Professional Lineo-Metrowerks-Motorola/Creation Suite for Linux LynuxWorks/BlueCat RT TimeSys/Linux RTOS Professional or Standard Edition
- 227 -
Xenomai http://xenomai.org RTAI : Real Time Application Interface http://www.aero.polimi.it/~rtai eCOS http://sources.redhat.com/ecos FreeRTOS http://www.freertos.org
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 228 -
114
Il y a toujours les solutions TR commerciales non Linux : VxWorks pSOS QNX LynxOS C/OS II
- 229 -
VxWorks ET pSOS
Solution commerciale TR non Linux de WindRiver Systems : http://www.wrs.com Un des leaders dans le domaine du Temps Rel et de lembarqu VxWorks :
Scalable (simple to complex designs) Reliable (mission-critical applications, ABS) CPUs PowerPC, 68K, CPU32, ColdFire, MCORE, 80x86 and Pentium, i960, ARM Graphic Development Platform POSIX 1003.1b compliant Networking Tornado II embedded development platform
- 230 -
115
QNX
Highly reliable all generic x86 based processors(386+) Scalable (modules) Deterministic "QNX Neutrino real-time OS, "the most advanced RTOS on the market Networking Graphical development tools and debugger Visual design tools (C code form cut and paste)
- 231 -
RTAI
Solution libre dextension TR de Linux. Systme TR. Universit de Milan en Italie : http://www.aero.polimi.it/~rtai Mise en place d'une couche d'abstraction. Mise en service sous forme de modules Linux : 3 entits/modules de base : Dispatcher dinterruptions entre tches TR et noyau Linux. Ordonnanceur TR. FIFOS de communication.
IT331 : Les systmes embarqus. Linux pour lembarqu - 232 -
pk/enseirb/2013 v8
116
XENOMAI
Mise en place dun noyau Temps Rel gnrique par extension de Linux : http://xenomai.org Emulation d'API propritaires (VxWorks, pSOS,VRTX, uITRON). Architectures supportes : ARM, Blackfin, x86, IA64, PowerPC, NIOS II. Programmation en mode : Espace kernel et espace utilisateur.
IT331 : Les systmes embarqus. Linux pour lembarqu - 233 -
pk/enseirb/2013 v8
XENOMAI
- 234 -
117
XENOMAI
- 235 -
XENOMAI
Xenomai est srement la solution Temps Rel dur sous Linux la plus prometteuse. Elle est privilgier
- 236 -
118
- 237 -
INTRODUCTION
Il existe au dpart deux principaux patchs introduit avec la version 2.4 du noyau Linux permettant d'amliorer les performances au niveau du temps de latence en diminuant la taille des sections du noyau non premptibles :
Ces patchs ont permis d'amliorer les temps de latence sur le noyau Linux standard 2.4 mais le concept se rapproche plus d'une amlioration de la qualit de service.
- 238 -
119
INTRODUCTION
Ces patchs ont t fondus dans le noyau Linux 2.6 et suprieur : Option Voluntary Kernel Preemption (Desktop) : PREEMPT_VOLUNTARY Option Preempt The Big Kernel Lock : PREEMPT_BKL Lextension Temps Rel mou PREEMPT-RT est privilgier car elle offre de bien meilleurs rsultats maintenant : https://rt.wiki.kernel.org PREEMPT-RT est la solution Temps Rel mou privilgier dans ce cas.
- 239 -
INTRODUCTION
PREEMPT-RT est un patch appliquer aux sources du noyau Linux standard pour lui donner la proprit Temps Rel mou. Un des apports de PREEMP-RT est la possibilit davoir des timers haute rsolution (High Resolution Timer) dont la rsolution descend en dessous du tick (HZ). On met en uvre ici un timer matriel (clock event) dont la plus petite priode peut atteindre 1 ns.
- 240 -
120
INTRODUCTION
Avec PREEMP-RT, nous pouvons dire que : Le noyau Linux devient premptible mme en cas doccurrence dune interruption. Les ISR (interrupt handler) sont traites comme des threads (threaded interrupt).
- 241 -
INTRODUCTION
BusyBox v1.15.3 root:/> ps PID USER 1 root 2 root 3 root 4 root 5 root 6 root 7 root 8 root 9 root 10 root 11 root 12 root 13 root 14 root 15 root 16 root 17 root 77 root 78 root 79 root 595 root 605 root 609 root 627 root 628 root 629 root (2010-05-04 17:30:42 CEST) hush - the humble shell VSZ 1832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1976 1692 1968 STAT S SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< SW< S S R COMMAND /init [kthreadd] [sirq-high/0] [sirq-timer/0] [sirq-net-tx/0] [sirq-net-rx/0] [sirq-block/0] [sirq-tasklet/0] [sirq-sched/0] [sirq-hrtimer/0] [sirq-rcu/0] [posixcputmr/0] [watchdog/0] [desched/0] [rcu_sched_grace] [events/0] [khelper] [kswapd0] [aio/0] [nfsiod] [irq/4-JTAGUART] [irq/7-eth%d] [rpciod/0] -/bin/sh /sbin/inetd ps
- 242 -
121
INTRODUCTION
Coming from the PREEMPT_RT project Since the beginning of 2.6
O(1) scheduler Kernel preemption Better POSIX real-time API support
Since 2.6.30
Threaded interrupts
Since 2.6.33
Spinlock annotations
Since 2.6.18
Priority inheritance support for mutexes
Since 2.6.21
High-resolution timers
- 243 -
Nous regarderons la mise en uvre sur un PC (processeur x86) sous Linux (distribution Fedora 14 ici) : Noyau Linux version 2.6.33.9. Patch PREEMPT-RT version 2.6.33.9-rt31. Rcupration des sources du noyau vanilla depuis un site miroir. On supposera que par la suite, on travaille depuis son Home Directory :
$ cd $ wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/longterm/v2. 6.33/linux-2.6.33.9.tar.bz2
- 244 -
122
- 245 -
- 246 -
123
On validera PREEMPT-RT :
$ make gconfig
- 247 -
Une fentre de configuration apparat. Cherchez les menus et sous-menus Processor type and features > Preemption Mode > Complete Preemption (Real-Time) et activez ce dernier (option PREEMPT_RT). PREEMPT_RT sera donc marqu Y dans le fichier de configuration. De mme, on vrifiera que l'option HIGH_RES_TIMERS Processor type and features > High Resolution Timer Support est bien valide pour avoir le support des timers haute rsolution pour pouvoir ensuite utiliser l'utilitaire cyclictest.
- 248 -
124
- 249 -
- 250 -
125
- 251 -
Redmarrage du PC et au menu d'accueil choisir le noyau Fedora (2.6.33.9-rt31). On pourra alors vrifier que PREEMPT-RT est install :
$ dmesg | grep Real-Time Real-Time Preemption Support (C) 2004-2007 Ingo Molnar
- 252 -
126
Les mesures de temps de latence se font dabord avec un noyau Linux non charg puis avec un noyau Linux charg, cest--dire stress. Pour stresser le noyau Linux, il faut : Consommer du temps processeur. Gnrer des interruptions (ping flooding). Faire des accs dE/S (disque dur).
- 253 -
Outil cyclictest : mesure du temps de latence sur des threads priodiques (https://rt.wiki.kernel.org/index.php/Cyclictest) :
# cyclictest -n -p 99 -i 1000 IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 254 -
127
Exemple de stress du noyau Linux. Script load lanc en tant super utilisateur :
#!/bin/bash stress -c 20 -i 20 & ping f localhost &
- 255 -
Lenvironnement de mesures est le suivant : PC Athlon : XP 1500+ avec 512 Mo de RAM. Noyau PREEMPT-RT 2.6.33.9-rt31. Programme de mesure : Fichier C square.c. Lexcutable square est lanc avec la priorit 99 en mode SCHED_FIFO :
# sched -f 99 ./square
Outil PREEMPT-RT cyclictest. Mesures sur noyau non charg. Mesures sur noyau charg avec le script load.
- 256 -
128
- 257 -
- 258 -
129
- 259 -
- 260 -
130
- 261 -
- 262 -
131
- 263 -
- 264 -
132
Linux charg :
# cyclictest -n -p 99 -i 1000 policy: fifo: loadavg: 80.77 40.90 16.40 1/227 2203 T: 0 ( 2029) P:99 I:1000 C: 314106 Min: 6 Act: 10 Avg: 10 Max: 57
- 265 -
- 266 -
133
INTRODUCTION
Xenomai est un patch appliquer aux sources du noyau Linux standard pour lui donner la proprit Temps Rel dur. Lextension Temps Rel dur Xenomai est privilgier : http://xenomai.org Xenomai implmente ses propres timers haute rsolution et fournit ses propres outils de mesure de temps de latence (cyclictest, latency).
- 267 -
Nous regarderons la mise en uvre sur un PC (processeur x86) sous Linux (distribution Fedora 14 ici) : Noyau Linux version 2.6.35. Patch Xenomai 2.5.6. Rcupration des sources du noyau vanilla depuis un site miroir. On supposera que par la suite, on travaille depuis son Home Directory :
$ cd $ wget ftp://ftp.lip6.fr/pub/linux/kernel/sources/v2.6/linux2.6.37.tar.bz2
- 268 -
134
- 269 -
- 270 -
135
On validera Xenomai :
$ make gconfig
- 271 -
Il faudra ensuite dsactiver un certain nombre d'options (APM, CPU_FREQ, ACPI_PROCESSOR, INTEL_IDLE) qui posent problme avec Xenomai sur processeur x86 :
APM. Option APM dans le menu APM (Advanced Power Management) BIOS support sous Power management and ACPI options. CPU idle PM support. Option INTEL_IDLE dans le menu CPU idle PM support sous Power management and ACPI options. CPU Frequency scaling. Option CPU_FREQ dans le menu CPU Frequency scaling sous Power management and ACPI options. ACPI. Option ACPI dans le menu Power management and ACPI options sous Power management and ACPI options.
- 272 -
136
- 273 -
Dfinition de lEXTRAVERSION :
$ cd $ cd linux-2.6.37 $ emacs Makefile
LEXTRAVERSION :
EXTRAVERSION =
devient :
EXTRAVERSION = -xenomai
- 274 -
137
- 275 -
- 276 -
138
Redmarrage du PC et au menu d'accueil choisir le noyau Fedora (2.6.37-xenomai). On pourra alors vrifier que Xenomai est install :
$ dmesg |grep I-pipe I-pipe 2.9-00: pipeline enabled. I-pipe: Domain Xenomai registered. $ dmesg |grep Xenomai I-pipe: Domain Xenomai registered. Xenomai: hal/i386 started. Xenomai: scheduling class idle registered. Xenomai: scheduling class rt registered. Xenomai: real-time nucleus v2.5.6 (Wormhole Wizards) loaded. Xenomai: starting native API services. Xenomai: starting POSIX services. Xenomai: starting RTDM services.
- 277 -
- 278 -
139
# make install
pk/enseirb/2013 v8
- 279 -
Lenvironnement de mesures est le suivant : PC Athlon : XP 1500+ avec 512 Mo de RAM. Noyau Xenomai 2.6.37-xenomai. Programme de mesure : Fichier C square.c. Lexcutable square est lanc avec la priorit 99 en mode SCHED_FIFO :
# sched -f 99 ./square
Outils Xenomai cyclictest et latency. Mesures sur noyau non charg. Mesures sur noyau charg avec le script load.
- 280 -
140
- 281 -
- 282 -
141
- 283 -
- 284 -
142
- 285 -
Linux charg :
# /usr/xenomai/bin/cyclictest -n -p 99 -i 1000 71.91 32.37 12.40 1/192 2450 T: 0 ( 2265) P:99 I: 1000 C: 171301 Min: 0 Act: 1 Avg: 2 Max: 36
- 286 -
143
# /usr/xenomai/bin/latency -t0 -p 1000 == Sampling period: 1000 us == Test mode: periodic user-mode task == All results in microseconds warming up... RTT| 00:00:01 (periodic user-mode task, 1000 us period, priority 99) RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst RTD| 0.105| 0.180| 3.654| 0| 0| 0.105| 3.654 RTD| 0.021| 0.728| 29.636| 0| 0| -0.341| 45.454 # /usr/xenomai/bin/latency -t2 -p 1000 == Sampling period: 1000 us == Test mode: in-kernel timer handler == All results in microseconds warming up... RTT| 00:00:01 (in-kernel timer handler, 1000 us period, priority 99) RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst RTD| -2.556| -2.095| 0.114| 0| 0| -2.556| 0.114 RTD| -2.656| -1.997| 0.391| 0| 0| -2.702| 13.70
- 287 -
# /usr/xenomai/bin/latency -t0 -p 1000 == Sampling period: 1000 us == Test mode: periodic user-mode task == All results in microseconds warming up... RTT| 00:00:01 (periodic user-mode task, 1000 us period, priority 99) RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst RTD| 0.219| 5.146| 23.638| 0| 0| 0.219| 23.638 RTD| -0.046| 3.437| 31.605| 0| 0| -0.119| 39.243 # /usr/xenomai/bin/latency -t2 -p 1000 == Sampling period: 1000 us == Test mode: in-kernel timer handler == All results in microseconds warming up... RTT| 00:00:01 (in-kernel timer handler, 1000 us period, priority 99) RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst RTD| -2.645| -2.064| 1.802| 0| 0| -2.712| 7.832 RTD| -2.648| -2.034| 2.076| 0| 0| -2.811| 14.90
- 288 -
144
PARTIE 5 : BILAN
- 289 -
Le choix est faire en fonction des contraintes Temps Rel que doit respecter le systme : Pas de contraintes. Ractivit de qq 10ms qq 100 ms : Linux standard 2.6 et suprieur. Temps Rel mou. Ractivit de qq 100 s : PREEMPT-RT. Temps Rel dur. Ractivit de qq 10 s : Xenomai, RTAI.
- 290 -
145
qq 10 s
- 291 -
Noyau Linux 2.6 et suprieur Noyau Linux 2.6 et suprieur -rt RTOS (TR dur)
- 292 -
146
Le noyau Linux standard n'est pas fondamentalement un systme d'exploitation Temps Rel car trop gnraliste. Par application de patchs (PREEMPT-RT), il est possible d'avoir un systme Linux Temps Rel mou. Il est possible d'avoir un systme Linux temps dur en utilisant les extensions Temps Rel Xenomai, RTAI...
- 293 -
Le choix final se fera en fonction des contraintes temporelles imposes par le processus contrler depuis Linux en prenant aussi en compte la complexit de mise en oeuvre dans chaque cas : Configuration du noyau. Ecriture de l'application Temps Rel. Choisir l aussi un Linux embarqu Temps Rel commercial est rassurant. Cela a aussi un cot.
- 294 -
147
Complexit de programmation
API Linux standard
COMPLEXE
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 295 -
CHAPITRE 5 : LA CONCEPTION ET LA MISE AU POINT DES SYSTEMES EMBARQUES. LES OUTILS, METHODES, TRUCS ET ASTUCES
- 296 -
148
PARTIE 1 : INTRODUCTION
- 297 -
INTRODUCTION
La conception et la mise au point dun systme embarqu est un processus difficile o le concepteur est vite en proie au doute et demande une certaine expertise. Ce chapitre se propose de donner quelques pistes et quelques rgles de bon sens dans lart de mettre au point un systme embarqu : Conception : mise au point du matriel. Tests : mise au point du logiciel avec ventuellement modification du matriel. Lexprience acquise lors de la mise au point de prcdents systmes est un capital inestimable...
IT331 : Les systmes embarqus. Linux pour lembarqu - 298 -
pk/enseirb/2013 v8
149
INTRODUCTION
La mise au point (debug) dun systme est pnible, long et consommateur d'argent. Dans la conception matrielle dun circuit SoC, cette tape de tests/debug (avec des patterns bien choisis) consomme 60 % du temps du projet. Dans la conception logicielle, on estime quil reste encore 5 % de bugs aprs compilation statique dun code source. Sur un programme de 10000 lignes, cela reprsente 500 bugs avant inspection du code et tests. Linspection du code permet den liminer 70 80 %, ce qui en laisse encore 100. Aprs tests, on estime en avoir limin 50 %, ce qui en laisse 50 dans le produit fini ! (d'aprs J. Ganssle)
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 299 -
INTRODUCTION
Le calcul prcdent nest pas acceptable bien sr ( moins de vouloir vendre des releases tout coup) et lon a donc besoin doutils trs performants et chers pour faire tendre ce chiffre vers 0. Toutes les techniques de management et mthodologie nlimineront jamais le besoin de tester et de debugger Le debug est ainsi trs important pour ne pas surinfecter le produit fini...
- 300 -
150
- 301 -
INTRODUCTION
- 302 -
151
INTRODUCTION
Dans le processus de mise au point du systme lectronique, il est primordial de bien connatre la palette doutils disposition. Mettre au point un systme est dautant plus compliqu que lon travaille souvent avec un matriel non encore test... A chaque problme, il existe loutil appropri. Il convient donc de le prsenter...
- 303 -
LOSCILLOSCOPE
- 304 -
152
INTRODUCTION
Loscilloscope est le premier outil de debug hard. Il permet de visualiser rellement un signal lectrique : Analogique. Numrique (sans niveaux logiques comme avec lanalyseur logique).
- 305 -
AVANTAGES ET INCONVENIENTS
Loscilloscope permet de mettre en vidence parasites, glitchs Il est limit 4 sondes au plus soit 4 signaux. La logique de synchronisation (trigger) est trs limite. Il peut tre intrusif en rajoutant une charge : Un circuit logique marche quand on branche une sonde sur une broche puis ne marche plus quand on la dbranche (charge capacitive). Il est important davoir de bonnes sondes calibres avec une grande bande passante pour ne pas dformer le signal.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 306 -
153
LANALYSEUR LOGIQUE
- 307 -
INTRODUCTION
Lanalyseur logique espionne des signaux logiques : bus dadresses et de donnes, signaux de contrle... On peut collecter les accs du processeur en mmoire et ensuite dsassembler le code excut. On voit des adresses physiques externes donc si le cache dinstructions ou de donnes est activ, on ne voit pas tout Si les caches du processeur sont dsactivs, il faudra faire attention au prefetch du processeur.
- 308 -
154
AVANTAGES
Lanalyseur logique est un outil universel dans la mise au point de systmes numriques. Il nest pas li un processeur particulier. Lanalyseur logique permet de mettre en place des triggers de dclenchement de lacquisition. Il est important de garder lesprit (idem pour lmulateur ICE) que dans 90 % des cas, on choisit des conditions de trigger simples (boolen) par rapport aux triggers complexes tant vants par les constructeurs ; ce qui en augmente le prix !
- 309 -
INCONVENIENTS
Un analyseur logique est cher. Il y a le problme de la connectique et du nombre important de signaux capturer. Pour dsassembler le code excut, on est oblig de capturer les bus dadresses et de donnes ainsi que les signaux de contrle soit un nombre trs important de signaux logiques. Si lon a valid loptimisation du code (compil ou assembl), il peut tre difficile de remonter au fichier source par dsassemblage.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 310 -
155
INCONVENIENTS
Quand on branche lanalyseur logique, on introduit une charge diffrente sur un bus. On peut ainsi masquer ou crer des problmes. La charge peut rduire le bruit induit et lensemble marche dans un environnement bruit. On enlve lanalyseur et plus rien ne marche. Cela peut tre aussi le contraire. Lanalyseur logique est donc intrusif. Lanalyseur logique est passif : on na pas de contrle sur le processeur.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 311 -
INCONVENIENTS
Il faudra faire attention aux caches valids. Lanalyseur logique fait un chantillonnage. Il convient donc davoir une frquence dacquisition suffisante et une taille mmoire dacquisition consquente...
- 312 -
156
LE MONITEUR ROM
- 313 -
INTRODUCTION
Le moniteur ROM est un programme de debug accessible depuis un port de communication (liaison srie). Il dialogue avec une application debugger pour lui envoyer la valeur courante dun registre, dune adresse mmoire et placer un point darrt simple une adresse donne ou tlcharger en mmoire du code.
- 314 -
157
POINT DARRET
Un point darrt (breakpoint) permet de drouter lexcution normale du code de lapplication du systme pour en examiner ltat (du processeur, de la mmoire, des E/S...) ou le modifier. Linstruction pointe par le point darrt (son adresse) est remplace par une routine spcifique (ou un trap) : Sauvegarde des registres du processeur. Examen de ltat du processeur. Restauration des registres du processeur.
- 315 -
POINT DARRET
Code image in memory: after instruction n-1 trap vector to debugger entry point instruction n+1 instruction n
Debugger Debuggerinserts inserts trap trapvector vectorin inplace place of ofinstruction instruction
Moved Movedto tothe thedebugger debugger database databasefor forsafe safekeeping keeping
- 316 -
158
EXEMPLE DE MONITEUR
Moniteur Buffalo pour le microcontrleur 68HC11 :
- 317 -
AVANTAGES
Le moniteur ROM est bon march. Il n'y a pas de problmes de connectique. Il n'y a pas de problmes de rapidit (c'est du code excut).
- 318 -
159
INCONVENIENTS
Le moniteur ROM demande un port de communication exclusif prvoir dans le design. Il consomme des ressources du systme cible : RAM, ROM, interruptions, ce qui peut tre gnant pour un tout petit systme. Il y a toujours des problmes de configuration lors de la prise en main. Il ne marche pas sil y a des bugs matriels. Il ne possde pas/peu de possibilits de debug en Temps Rel.
IT331 : Les systmes embarqus. Linux pour lembarqu - 319 -
pk/enseirb/2013 v8
L'EMULATEUR ROM
- 320 -
160
INTRODUCTION
Lmulateur ROM est un quipement qui se branche sur un support de mmoire ROM du systme cible mais contient de la RAM au lieu de la ROM (Overlay RAM). Il possde : Un cble de liaison en concordance avec les spcificits du support ROM. De la RAM rapide. Un contrle du processeur (reset) Un port de communication avec le systme hte pour le debug. Cest un moyen simple et rapide de tlcharger du code dans la cible en lieu et place de la mmoire ROM initiale.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 321 -
INTRODUCTION
LAN, serial or parallel Simple plug-in probe substitutes for system ROMs
Main chassisTarget system - Overlay memory - Trace Capability - System control and host interface
- 322 -
161
AVANTAGES
L'mulateur ROM est bon march. Il est compatible avec diffrents types de mmoires et n'est donc pas li un type de processeur comme l'mulateur ICE. Il permet d'ajouter un port de communication temporaire au systme. Le tlchargement de code est rapide. On peut tracer l'activit ROM en Temps Rel.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 323 -
AVANTAGES
On peut mettre un point d'arrt en ROM. Il peut tre utilis avec d'autres outils de debug.
- 324 -
162
INCONVENIENTS
L'mulateur ROM a besoin d'tre de plus en plus rapide (comme l'mulateur ICE) avec l'volution des processeurs. Il ne fonctionne qu'avec une interface ROM : problme si l'on a un microcontrleur avec de la ROM interne. Beaucoup de systmes font une recopie ROM vers RAM pour des soucis de performance donc l'mulateur ROM est hors jeu. Il est inefficace en cas de problmes matriels sur le systme. Il est intrusif.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 325 -
L'EMULATEUR ICE
- 326 -
163
INTRODUCTION
ICE est l'acronyme de In Circuit Emulator. Pourquoi utiliser un mulateur ICE ? Si le hardware du systme n'est pas parfait. C'est le meilleur outil pour dtecter des problmes matriels mais aussi logiciels. Il n'utilise pas de ressources du systme cible. Il supporte un debug en Temps Rel avec possibilits de trace, triggers C'est l'outil parfait pour un intgration conjointe matrielle et logicielle.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 327 -
INTRODUCTION
L'mulateur ICE combine la fois un debugger, un mulateur ROM et un analyseur logique. Il se substitue compltement au processeur qu'il va muler.
- 328 -
164
INTRODUCTION
Host computer runs emulator control software - Provides run control - Displays real time trace at source level - Loads overlay memory with object code - High-speed link to emulation chassis Probe head contain emulation microprocessor - Substitutes for, or disables target microprocessor - Contains run control circuitry and cable buffers - May contain memory mapping hardware
Main chassis - Contains emulation ( overlay memory ) - Trace analysis hardware and trace memory - Performance analysis hardware ( - Power supply - Control and communications
Target system
- 329 -
INTRODUCTION
L'mulateur ICE permet de contrler le systme : Lecture/criture en mmoire. Modification des registres du processeur. Pas pas. Points d'arrt. Dsassemblage de code. Tlchargement de code.
- 330 -
165
INTRODUCTION
L'mulateur ICE se comporte comme un mulateur ROM : Overlay RAM. Possibilit de panacher mmoire Overlay RAM et mmoire du systme cible. Possibilit de fixer des attributs des zones mmoire : ROM : pas dcriture possible. Mmoire donnes, mmoire code. Mmoire partage : simulation dE/S.
- 331 -
INTRODUCTION
L'mulateur ICE supporte l'Overlay RAM : l'intrieur de l'mulateur, la RAM est mappe dans l'espace d'adressage du processeur de la cible pour remplacer sa mmoire ROM ou FLASH. On peut ainsi tlcharger rapidement du code tester en Overlay RAM sans reprogrammer la mmoire ROM de la carte cible. Point d'arrt matriel : stoppe l'excution du programme sans affecter le contexte du processeur. Point d'arrt logiciel : insertion dans le code d'un appel vers une routine de debug. Il y a un problme si le code est en mmoire externe ROM car pas d'criture possible.
IT331 : Les systmes embarqus. Linux pour lembarqu - 332 -
pk/enseirb/2013 v8
166
L'mulateur ICE permet de tracer l'activit du processeur (comme l'analyseur logique). Il admet des triggers complexes pour le lancement d'une acquisition (trace pour la surveillance d'une interruption) et dsassemble le code captur stock dans une mmoire tampon circulaire. Si l'on possde la table des symboles, on peut remonter au fichier source directement.
- 333 -
- 334 -
167
- 335 -
AVANTAGES
L'mulateur ICE est l'outil roi pour la mise au point matrielle et logicielle. Il fournit toutes les fonctionnalits de debug ncessaires. Le contrle du processeur est garanti quel que soit l'tat matriel du systme cible. Il connat les instructions en cache et il filtre les activits de prefetch du processeur.
- 336 -
168
INCONVENIENTS
L'mulateur ICE cote trs cher. Il est fabriqu pour un type de processeur donn. Si l'on utilise un nouveau processeur, il faudra mettre jour l'mulateur ICE. Problme de la connectique, du prix et de la fragilit de la tte : adaptation pourvoir si processeur CMS. Il ne supporte pas toujours toutes les variantes d'un processeur donn (microcontrleur). Les gens pensent que l'mulateur ICE est difficile utiliser.
IT331 : Les systmes embarqus. Linux pour lembarqu - 337 -
pk/enseirb/2013 v8
INCONVENIENTS
Le systme cible doit tre conu pour supporter la tte de l'mulateur ICE. Un mulateur ICE ne fonctionne pas toujours la frquence maximale du processeur. Quand on branche l'mulateur ICE, on introduit une charge diffrente de celle du processeur. On peut masquer ou crer des problmes. La charge introduite peut rduire le bruit induit et l'ensemble marche dans un environnement bruit. On enlve l'mulateur ICE et plus rien ne marche. Cela peut tre le contraire. L'mulateur ICE est donc intrusif.
IT331 : Les systmes embarqus. Linux pour lembarqu - 338 -
pk/enseirb/2013 v8
169
JTAG
- 339 -
INTRODUCTION
Le JTAG (Joint Test Action Group) a t originellement cr pour le BIST : Built In Self Test (autotests de circuits lectroniques). C'est un standard IEEE (1149.1) qui permet originellement de tester des circuits lectroniques pour l'industrie des cartes PC. Le JTAG possde 3 entits : Le contrleur TAP (Test Access Port). Machine 16 tats. Un registre dcalage d'instructions. Un registre dcalage de donnes.
- 340 -
170
INTRODUCTION
Le JTAG forme une boucle srie interconnectant les broches d'E/S des circuits surveiller/analyser (un point d'entre, un point de sortie). La boucle peut tre active (criture) et/ou passive (lecture). On rcupre ainsi un flux de donnes srie plus ou moins important. On va donc balayer priodiquement les composants JTAG (Boundary Scan). Chaque bit du registre dcalage de donnes du JTAG correspond la valeur instantane d'une broche du circuit. On peut lire sa valeur courante ou lui affecter une nouvelle valeur (criture).
IT331 : Les systmes embarqus. Linux pour lembarqu - 341 -
pk/enseirb/2013 v8
INTRODUCTION
Each JTAG cell sniffs the state of the corresponding output bit of the IC
JTAG Connector
JTAG bit stream in JTAG bit stream out PC Board Bit stream forms one long shift-register IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 342 -
171
INTRODUCTION
Le contrleur TAP possde 4 broches : TCK : horloge (Test ClocK). TMS : mode test de contrle du TAP (Test Mode Select). TDI : entre donne srie (Test Data In). TDO : sortie donne srie (Test Data Out).
- 343 -
INTRODUCTION
- 344 -
172
Il est possible de mettre au point un systme par le JTAG : la norme JTAG a t tendue par certains fondeurs pour cela. On lie tous les registres internes et les blocs fonctionnels importants par une boucle JTAG. On a donc un debugger simple sur silicium (on chip). On autorise la lecture comme l'criture dans les registres. On peut rajouter des registres de debug spcifiques accessibles par le JTAG.
- 345 -
Program Counter - PC
Register R2
Register Rn
- 346 -
Register R1
173
AVANTAGES
Le debugger JTAG est un debugger on chip OCD (On Chip Debugger). On peut mettre des points d'arrt, faire du pas pas, regarder la mmoire, changer une valeur en mmoire, tlcharger du code Le JTAG est un standard ouvert. Il est adapt aux composants monts en surface. Il est bon march.
- 347 -
AVANTAGES
Il n'utilise pas beaucoup de broches car il met en uvre un protocole srie. Il permet d'observer des entres et positionner des sorties sans utiliser la logique du systme. Il permet de rduire les points de tests sur le systme. Il ne marche qu'avec un processeur le supportant. Si un processeur supporte le JTAG pour le debug, rajouter toujours le connecteur JTAG sur le PCB (on ne sait jamais) !
- 348 -
174
AVANTAGES
Il peut tre utilis aussi pour la programmation de mmoire flash embarque sur le systme. Il supporte ventuellement des point d'arrt matriels simples. Une broche spciale suspend l'activit du CPU dans l'extension JTAG.
- 349 -
INCONVENIENTS
Il peut tre lent : chaque bit doit tre dcal dans le registre dcalage. La boucle peut tre grande (>10000 bits). Il n'a pas toujours de points d'arrt hard. Il n'y a pas de points d'arrt complexes comme avec l'mulateur ICE. Il n'y a pas d'Overlay RAM.
- 350 -
175
SIMULATEUR
- 351 -
SIMULATEUR
Le simulateur ISS (Instruction Set Simulator) est un logiciel excut par le systme hte de dveloppement pour simuler un processeur cible particulier. La principale difficult est de simuler les priphriques rels du systme cible. Exemples de simulateur : MPLAB pour le simulateur du microcontrleur PIC Microchip. qemu pour simuler des cartes Linux embarqu (SBC2440).
- 352 -
176
- 353 -
Le bon sens doit avant guider l'ingnieur dans le choix des outils de debug utiliser. On part gnralement des outils les plus simples aux outils les plus sophistiqus : L'oscilloscope : vrification des horloges, signaux critiques L'analyseur logique : reset, vrification des bus d'adresses et de donnes, accs mmoire. L'mulateur ROM, ICE : couplage avec le logiciel. Debug au niveau source. On peut ensuite embarquer un moniteur en ROM pour le lancement de l'application finale ou faire des tests en cours de production.
IT331 : Les systmes embarqus. Linux pour lembarqu - 354 -
pk/enseirb/2013 v8
177
- 355 -
- 356 -
178
- 357 -
ENVIRONNEMENT DE DEVELOPPEMENT
- 358 -
179
INTRODUCTION
Dvelopper et mettre au point une application pour un systme embarqu est un art difficile matriser pour une application allant de la simple superboucle (boucle plus interruptions) jusqu' un ensemble de processus coopratifs excuts par un systme d'exploitation embarqu. On a gnralement un environnement de dveloppement crois avec : Une machine hte (host) pour le dveloppement et la mise au point. Un systme cible (target) dans lequel on va tlcharger l'application puis l'excuter dans la phase de mise au point. La mise au point fera appel aux outils prcdents : mulateurs ICE ou ROM, JTAG, moniteur.
IT331 : Les systmes embarqus. Linux pour lembarqu - 359 -
pk/enseirb/2013 v8
ENVIRONNEMENT DE DEVELOPPEMENT
On a un environnement de dveloppement crois :
host
target
- 360 -
180
ENVIRONNEMENT DE DEVELOPPEMENT
On va dvelopper et tester l'application sur une plateforme standard (PC) avec des outils logiciels conviviaux afin de faciliter le debug. On aura un compilateur crois sur l'hte pour avoir un code objet excutable par le processeur de la cible. On aura un debugger crois sur l'hte pour mettre au point l'application excute par le processeur de la cible.
- 361 -
ENVIRONNEMENT DE DEVELOPPEMENT
Source Listing Source Listing Create User Library (optional) Librarian
C or C++ Compiler
Assembler
User Library
Include Files
Link Map
- 362 -
181
ENVIRONNEMENT DE DEVELOPPEMENT
Si l'on travaille en langage volu (langage C), on teste au niveau du source en langage volu (source level debugging). Le debugger crois (au niveau source) sera coupl avec un quipement de debug (ICE, mulateur ROM, JTAG...). Il doit supporter le mode trace en Temps Rel pour capturer le traitement d'une interruption (ISR) sans ralentir le systme.
- 363 -
- 364 -
182
INTRODUCTION
Avant de commencer quoi que ce soit, il convient d'abord de prparer le terrain quand on doit dvelopper le firmware. Il est important de savoir de quels outils on a besoin et sassurer qu'ils sont compatibles avec le systme debugger. Les points ne pas ngliger : Etre impliqu dans la conception du systme. Comprendre et matriser le hardware du systme et tre sympa avec le designer. Avoir une copie de tous les documents. Etre sr que le matriel marche. Commencer doucement (mais srement). Regarder ce que l'on vient de concevoir.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 365 -
Vrifier que le composant sur lequel dmarre (boot) le systme est reprogrammable : pas de dsoudage faire, interface JTAG pour le reprogrammer Le systme doit inclure un mcanisme de communication entre le logiciel de boot (firmware) et l'humain : leds, port srie, connecteur spcial non quip dans la version finale pour limiter le cot du produit fini, JTAG, BDM...
- 366 -
183
MAITRISER LE HARDWARE
Etablir une bonne relation entre les gens du matriel et du logiciel, ne pas se jeter la balle : cest pas le soft qui plante, cest le hardnon cest pas le hard qui plante, cest le soft . Passer un peu de temps avec le gens du hardware, poser des questions. Ne pas passer son temps les espionner . Avoir une copie des schmas lectroniques.
- 367 -
On doit connatre plus que les schmas. Avoir les datasheets de tous les circuits utiliss dans le systme (travailler sur papier). Vrifier sil nexiste pas d'errata pour chaque datasheet surtout quand un circuit rcent est utilis. Il est bien sr possible alors de dcouvrir des bugs.
- 368 -
184
Si le systme est neuf, sassurer que les tests lectriques lmentaires ont t faits : Court-circuits. Tests de continuit. Pas de faux contacts. Soudures froides. Savoir comment brancher l'alimentation.
- 369 -
COMMENCER DOUCEMENT
Faire de petits pas. Ne pas se lancer dans un norme programme mais procder par de petits programmes de tests pour tester un fonctionnalit bien particulire. Points vrifier : Est-ce que le programme est bien mapp en mmoire ? Est-ce que la procdure de reset du CPU est bien comprise ? Est-ce que le fichier objet est dans le bon format ? Est-ce que le programmateur est bien configur ? Est-ce que le partitionnement de la mmoire de boot adresses paires/impaires est bien ralis ? Est-ce que le matriel marche rellement ?
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 370 -
185
COMMENCER DOUCEMENT
Rechercher des exemples de code sur le site du fondeur du processeur. Sabonner aux forums adquats. Rechercher des informations sur Internet.
- 371 -
Faire des dumps en hexadcimal des fichiers objets. Consulter le fichier de mapping mmoire. Vrifier le mapping mmoire : Vrifier les sections de code : .text Vrifier les sections de donnes initialises : .data Vrifier les sections de donnes non initialises : .bss (Bloc Starting by Symbol)
- 372 -
186
- 373 -
INTRODUCTION
Aprs le prambule prcdent, il est possible de toucher au matriel. En cours d'criture du logiciel (firmware), il y a nanmoins des tests matriels faire quelquefois quand on dcouvre des bugs matriels ou un firmware qui ne fait pas ce que l'on veut. Il est important de faire alors appel l'quipe hardware pour confirmation et correction. Les procdures suivantes sont importantes valider.
- 374 -
187
POINTS A VERIFIER
Vrifier les tensions d'alimentation : Utiliser un voltmtre. Utiliser un oscilloscope. Prsence de bruit sur les alimentations ? Vrifier la prsence d'une horloge valide : Utiliser un oscilloscope : prsence d'une horloge sur le processeur, bonne frquence ? Vrifier la bonne assertion des Chip Select au boot (reset).
- 375 -
POINTS A VERIFIER
Vrifier la bonne soudure des broches : pas de soudures froides, faux contacts. Faire attention aux dcharges ESD. Utiliser un bracelet antistatique. Ecrire une simple boucle installe au vecteur de reset pour vrifier la bonne assertion du Chip Select de la mmoire ROM (68000, installer au vecteur 0). Saider au besoin d'un analyseur logique :
LOOP JUMP LOOP
- 376 -
188
POINTS A VERIFIER
Utiliser une led comme test (avec le programme tester) si l'on n'a pas d'analyseur logique ou d'oscilloscope (ce qui serait surprenant !). Jouer sur la rapidit du clignotement, led allume ou teinte. Une fois ce point acquis, crire 3 routines : led_on() led_blink_slow() led_blink_fast() et sen servir comme routines de debug. Si l'on a plus de leds, on peut indiquer un tat de progression dans la phase de boot (3 leds soit 8 tats).
- 377 -
POINTS A VERIFIER
Tester la SRAM externe (patterns $55 et $AA comme tests grossiers). Tester la liaison srie (programme d'cho). Initialiser le contrleur de DRAM. Et si tout va bien alors : programmer en langage volu de type C. Utiliser un compilateur crois C qui offre les routines C ANSI d'E/S et modifier le getchar() et putchar() pour coller son hardware. On a accs alors son printf() prfr pour un debug simple...
IT331 : Les systmes embarqus. Linux pour lembarqu - 378 -
pk/enseirb/2013 v8
189
POINTS A VERIFIER
Faire attention aux donnes C initialises au reset du systme. Elles doivent donc tre mise en mmoire non volatile. On ne peut donc pas les modifier en cours d'excution d'un programme. Regarder la documentation du compilateur crois et notamment la section chargeur (loader) en analysant plus particulirement le fichier assembleur crts.s (C Run Time Startup).
- 379 -
- 380 -
190
INTRODUCTION
Il ne suffit pas savoir programmer, il faut savoir bien programmer ! Un systme embarqu doit tre robuste et son code bien crit. Le langage de prdilection pour le dveloppement logiciel est le langage C. Le langage C est un langage de haut niveau mais proche du matriel. Cette partie met le doigt sur certains points de la programmation en langage C auxquels il faudra faire trs attention.
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 381 -
INTRODUCTION
Se mfier des options d'optimisation du compilateur. Bien traiter les interruptions utilises par le systme en renseignant les vecteurs concerns dans la table des vecteurs du processeur. Mise en place de la routine d'interruption ISR (Interrupt Sub Routine). Renseigner toute la table des vecteurs mme pour les interruptions non utilises (ISR dummy).
- 382 -
191
CLASSES DE STOCKAGE
Pour un systme embarqu, on est concern par la faon dont le compilateur C va stocker les variables. On doit garder le contrle du mapping mmoire.
- 383 -
CLASSES DE STOCKAGE
auto :
auto int a;
Classe de stockage par dfaut pour une fonction. Stockage sur la pile. Variable dtruite (dsalloue) en fin d'excution de la fonction.
- 384 -
192
CLASSES DE STOCKAGE
register :
register int a;
Stockage de la variable dans un registre du processeur. Accs la variable trs rapide. Limitation par le nombre de registres de donnes.
- 385 -
CLASSES DE STOCKAGE
static :
static int a;
Contraire de auto. Dans le cas d'une telle variable de fonction, elle existe durant toute la dure d'existence de la fonction. Si c'est une variable globale, elle existe durant toute la dure d'excution du programme.
- 386 -
193
CLASSES DE STOCKAGE
extern :
extern int a;
Variable dfinie dans un autre fichier source. Variable importe. Utilis durant la phase d'dition de liens pour rsoudre les rfrences croises.
- 387 -
MODIFICATEURS D'ACCES
const :
La valeur de la variable ne peut pas tre change par le programme. A placer en mmoire ROM.
volatile :
volatile char a;
La valeur de la variable peut changer d'elle-mme en cours d'excution du programme. Registre d'E/S mapp en mmoire. Zone mmoire servant de buffer par un priphrique externe (contrleur DMA).
- 388 -
194
Le modificateur d'accs volatile est utiliser obligatoirement : Pour l'accs des registres de priphriques mapps en mmoire. Zone mmoire accde par DMA. Variables globales modifies par une ISR. Variables globales dans une application multi-tche.
- 389 -
Exemple : scrutation active d'un registre d'tat d'un priphrique 8 bits. Le registre d'tat 8 bits est l'adresse 0x1234. Scrutation active du registre d'tat jusqu' ce qu'il soit non nul.
- 390 -
195
Cela risque de ne pas marcher ds que le compilateur optimise le code. Le code gnr pourrait tre :
mov mov bz ptr, #0x1234 a, @ptr loop
loop
- 391 -
Le compilateur C voit qu'il a dj la valeur courante de la variable. Il n'y a aucun besoin d'aller la relire puisque c'est la toujours mme valeur (la valeur d'une case mmoire ne change pas d'elle mme !). Il gnre alors une boucle infinie. On ne sort donc pas de le boucle ! D'o un BUG en run time !
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 392 -
196
- 393 -
PARTIE 5 : EXEMPLE ILLUSTRE : MISE AU POINT LOGICIELLE D'UN SYSTEME LINUX EMBARQUE
- 394 -
197
1. Dveloppement du bootloader. 2. Portage du noyau Linux. 3. Dveloppement des drivers spcifiques. 4. Dveloppement de l'application finale. 5. Intgration du tout.
- 395 -
L'ENVIRONNEMENT
- 396 -
198
Utilisation d'un PC ou une station de travail comme host sous Linux en gnral (ou virtualis). Connexion par liaison srie (ou par rseau Ethernet maintenant) avec le systme embarqu cible ou target : minicom Partage de fichiers avec la cible par montage NFS si la cible a une interface rseau Ethernet. Dveloppement crois sur l'hte avec tous les composants logiciels ncessaires.
- 397 -
Utilisation d'une carte CPU qui excute Linux. On a besoin d'y intgrer diffrents composants logiciels : Une boot ROM contenant un bootloader chargeant le noyau Linux en mmoire et puis l'excutant. Un noyau Linux. Une image disque d'un systme de fichiers Linux contenant les programmes applicatifs, bibliothques partages, modules Linux, fichiers de script...
- 398 -
199
Utilisation d'un quipement particulier pour le tlchargement dans la cible en phase de dveloppement (en final, tout sera rom ) : ICE, JTAG On flashera en premier en mmoire FLASH le bootloader. Le bootloader pourra ensuite tlcharger le noyau et l'image du systme de fichiers par la liaison srie ou par le rseau (TFTP) (et le mettre en mmoire FLASH au final). Le systme de fichiers (root File System) peut tre ventuellement mont par NFS au lancement du noyau Linux de la cible...
IT331 : Les systmes embarqus. Linux pour lembarqu - 399 -
pk/enseirb/2013 v8
Environnement de dveloppement crois sous Linux. On utilisera les outils GNU : gcc ld, as, nm, obcopy, strip, ar Ces outils permettent de crer une image binaire du noyau et du systme de fichiers (root File System) sur l'hte. On pourra utiliser un atelier de gnie logiciel IDE (Integrated Design Environment) : Kdevelop, Eclipse...
- 400 -
200
Utilisation du debugger GNU ou GDB. Debug par la liaison srie ou par le rseau. On a sur la cible un programme serveur gdbserver qui attend les ordres d'une application cliente excute par l'hte. On bnficie alors d'un interface graphique conviviale sur l'hte qui permet de debugger au niveau source : utilisation d'un front end gdb comme DDD (Data Display Debugger). On pourra aussi mettre profit les outils de base Linux sur l'hte pour la gestion du projet : make, svn, git...
IT331 : Les systmes embarqus. Linux pour lembarqu - 401 -
pk/enseirb/2013 v8
DEVELOPPEMENT VS PRODUCTION
En phase de dveloppement, on a disposition des outils : Qui permettent un tlchargement rapide. Qui permettent de tlcharger le noyau Linux. Qui permettent de tlcharger l'application par NFS. Qui permettent de dvelopper, de tester sur l'hte puis de porter sur la cible. En phase de production, le bootloader, le noyau et son root File System sont roms en mmoire FLASH : Taille totale ? Comment mettre jour (correction de bugs) ?
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 402 -
201
QUOI DEVELOPPER ?
On doit dvelopper : Le systme lectronique (procdure classique). Le bootloader. Le portage du noyau. Les pilotes de priphriques. L'application. L'intgration du tout.
- 403 -
DEVELOPPEMENT DU BOOTLOADER
Dveloppement du bootloader : En utilisant les sources ventuels fournis avec la carte si on l'a achete. En utilisant un bootloader open source : u-boot, RedBoot, Colilo Se l'crire soi-mme. Le bootloader est en mmoire FLASH. Il prend en charge l'initialisation de base du systme, les autotests, la dcompression de l'image et du root FS stocks en mmoire FLASH ou tlcharg (liaison srie ou rseau). Il peut avoir des fonctions de debugger (moniteur).
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8
- 404 -
202
PORTAGE DU NOYAU
Il est important de comprendre comment marche le noyau et notamment la procdure de boot. Il faut choisir le portage correspondant au type de processeur de la cible. Il faut modifier ventuellement les sources du noyau (fichiers assembleur) pour coller au hardware de la carte cible.
- 405 -
Il est souhaitable de choisir des composants qui sont supports par Linux lors de la phase de conception du systme. Lors de la phase de configuration du noyau, on choisira les drivers appropris. On pourra ventuellement les modifier pour coller au mapping mmoire de la cible. Si l'on doit crire un nouveau driver pour un matriel spcifique, il est prfrable de partir d'un driver existant similaire. Il faudra faire le choix entre dvelopper un driver statique li au noyau ou un driver dynamique (module Linux) charg en mmoire par le noyau la demande.
IT331 : Les systmes embarqus. Linux pour lembarqu - 406 -
pk/enseirb/2013 v8
203
DEVELOPPEMENT DE L'APPLICATION
Il est important de voir s'il n'existe pas dj une application existante collant son besoin. Dans le cas ventuel, la porter sur sa cible. Dans le meilleur des cas, cela se traduira par une simple recompilation croise. Choisir de prfrence des applications open source. Considrer le dveloppement d'une interface graphique GUI (Graphical User Interface) si besoin : Frame buffer. Nano/X, Microwindows, Qt/embedded, X...
- 407 -
INTEGRATION SYSTEME
Il faudra veiller : Evaluer la taille mmoire consomme (RAM, FLASH) Prendre en compte la faible empreinte mmoire : Chargement du noyau en RAM ou XIP (eXecute In Place). Root File System en RAM ou FLASH. Type du systme de fichiers : ext3, JFFS2 pour un systme embarqu. Bibliothques : statiques ou dynamiques. Bibliothques libc light (Clibc, dietlib, newlib).
- 408 -
204
REFERENCES BIBLIOGRAPHIQUES
Linux embarqu. P. Ficheux, E. Bnard. Editions Eyrolles. Version 4 revue et corrige ! LA REFERENCE !
- 409 -
REFERENCES BIBLIOGRAPHIQUES
Embedded Linux System Design and Development. P. Raghavan, A. Lad, S. Neelakandan. Editions Auerbach Publications Building Embedded Linux Systems. K. Yaghmour. Editions O' Reilly
Embedded Linux Primer. A Practical Real-World Approach. C. Hallinan. Editions Prentice Hall
- 410 -
205
REFERENCES BIBLIOGRAPHIQUES
Embedded Linux Primer. A Practical Real-World Approach. C. Hallinan. Editions Prentice Hall
Building Handbook of Real-Time and Embedded Systems. I. Lee, J. Leung, S. Son. Editions Chapman & Hall/CRC
- 411 -
REFERENCES BIBLIOGRAPHIQUES
- 412 -
206
REFERENCES BIBLIOGRAPHIQUES
- 413 -
REFERENCES BIBLIOGRAPHIQUES
Mise en uvre de PREEMPT-RT pour crer un noyau Temps Rel mou. P. Kadionik. http://doc.fedorafr.org/wiki/Mise_en_%C5%93uvre_de_PREEMPTRT_pour_cr%C3%A9er_un_noyau_Temps_R%C3%A9el_mou
Mise en uvre de Xenomai pour crer un noyau Temps Rel dur. P. Kadionik. http://doc.fedorafr.org/wiki/Mise_en_%C5%93uvre_de_Xenomai_pour_cr%C3%A9er_un_noyau_Te mps_R%C3%A9el_dur
- 414 -
207