Vous êtes sur la page 1sur 207

ENSEIRB-MATMECA

Les systmes embarqus. Linux pour lembarqu


email web : kadionik@enseirb-matmeca.fr : http://kadionik.vvv.enseirb-matmeca.fr/

Patrice KADIONIK
ENSEIRB-MATMECA

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

-1-

OBJECTIFS DU COURS

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

-3-

CHAPITRE 0 : INTRODUCTION

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

-5-

CHAPITRE 1 : LES SYSTEMES EMBARQUES AUJOURDHUI. LE BESOIN DEMBARQUER INTERNET

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

-6-

PARTIE 1 : CARACTERISTIQUES DUN SYSTEME EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

-7-

IMPORTANCE DU MARCHE DE LEMBARQUE

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

IMPORTANCE DU MARCHE DE LEMBARQUE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

-9-

IMPORTANCE DU MARCHE DE LEMBARQUE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 10 -

IMPORTANCE DU MARCHE DE LEMBARQUE

La figure suivante dmontre le contraire (anne de rfrence 1999) :

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 11 -

IMPORTANCE DU MARCHE DE LEMBARQUE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 12 -

IMPORTANCE DU MARCHE DE LEMBARQUE

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 !

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 13 -

IMPORTANCE DU MARCHE DE LEMBARQUE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 14 -

LE CHOIX DUN PROCESSEUR POUR LEMBARQUE


Embedded Processor System Requirement I/O Control Feature Benefit I/O Ports with bit-level Efficient control of external control devices Direct interface to actuators, switches and digital status signals Serial Ports : SPI, IC, Hardware support for Microwire, UART, CAN expansion & external device networking and communications Sophisticated timers and Low software overhead PWM peripherals Conditional jumps Efficiently implement Bit test instructions control oriented algorithms Interrupt priority control External interrupts with Program control multiple priority levels immediately redirected on event occurrence with minimal overhead Analog-to-Digital (A/D) Hardware support for Converters external sensors

Peripheral Communication

Microcontroller Precision control of motors and actuators Quickly resolve complex software program control flow Fast response to external events

Conversion of sensor data

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 15 -

LE CHOIX DUN PROCESSEUR POUR LEMBARQUE

Embedded Processor

System Requirement Software Filters

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

Feature Multiply/Accumulate Unit Zero-overhead loops High-speed serial ports

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 16 -

PROCESSEUR 32 BITS POUR LEMBARQUE

Besoin Taille RAM Taille ROM/FLASH Processeurs

Miniature <0,1 Mo 0,1-0,5 Mo DragonBall 68K ColdFire ARM

Petit 0,14 Mo 0,52 Mo

Moyen 2-8 Mo

Haut de gamme 8-32 Mo

PC embarqu 16-64 Mo

Embarqu haute disponibilit > x Mo Go-To x86 PowerPC

Caractristiques matrielles Exemples dapplications

MMU optionnelle

Camra numrique PDA Tlphone

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

Commutateur tlphonique Routeur haute performance Serveur central

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 17 -

SYSTEME EMBARQUE : DEFINITION

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 -

SYSTEME EMBARQUE : DEFINITION

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 19 -

SYSTEME EMBARQUE : DEFINITION

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 20 -

10

TYPES DE SYSTEMES EMBARQUES


Calcul gnral Application similaire une application de bureau mais embarque. Jeu vido, set-top box. Contrle de systmes Contrle de systmes en Temps Rel. Moteur dautomobile, process chimique, process nuclaire, systme de navigation arien. Traitement du signal Radar, sonar, compression vido. Communications et rseaux Transmission dinformation et commutation. Tlphone, Internet.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 21 -

EXEMPLE : WIRELESS

Autoradio GPS
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 22 -

11

EXEMPLE : ROBOTIQUE

Robot (LEGO Mindstorms)

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 23 -

EXEMPLE : AUTOMOBILE

Automobile 1: Rear distance Sensor, 2: Control unit, 3: Speed signal, 4: Front distance sensor, 5: Motor, 6: Lamps.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 24 -

12

CARACTERISTIQUES DUN SYSTEME EMBARQUE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 25 -

CARACTERISTIQUES DUN SYSTEME EMBARQUE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 26 -

13

CARACTERISTIQUES DUN SYSTEME EMBARQUE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 27 -

CARACTERISTIQUES DUN SYSTEME EMBARQUE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 28 -

14

CARACTERISTIQUES DUN SYSTEME EMBARQUE

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

SYSTEME EMBARQUE TYPIQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 30 -

15

CYCLE DE VIE DUN SYSTEME EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 31 -

LES SYSTEMES EMBARQUES ET LE TEMPS REEL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 32 -

16

LES SYSTEMES EMBARQUES ET LE TEMPS REEL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 33 -

LES SYSTEMES EMBARQUES ET LE TEMPS REEL

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 !

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 34 -

17

LES (RT)OS AUJOURD'HUI

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 !

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 35 -

LES (RT)OS AUJOURD'HUI


ISR=Interrupt Sub Routine

Application Application Task

superboucle Main Loop ISR Annes 70

Task Task ISR

Application Middleware File System Drivers Java Networking

Kernel Annes 80-90

Kernel

Aujourdhui

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 36 -

18

LES (RT)OS AUJOURD'HUI

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 !

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 37 -

LES SYSTEMES EMBARQUES ET LINUX

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 38 -

19

LES SYSTEMES EMBARQUES ET LINUX

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 39 -

LES SYSTEMES EMBARQUES ET LINUX

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

LES SYSTEMES EMBARQUES ET LINUX

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 41 -

LES SYSTEMES EMBARQUES ET LINUX

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 42 -

21

LES SYSTEMES EMBARQUES ET LINUX

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 43 -

PARTIE 2 : CONNECTIVITE IP : LE BESOIN DE SYSTEMES COMMUNICANTS

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

The Internet Will Be Used to Communicate:


People to People People to Devices, and Devices to Devices

Internet Users
Today

Wireless / Mobile Internet

Embedded Internet

10,000 1,000 100

1980

1985

1990

1995

2000

2005

2010

Source: Motorola, Network Wizards,Motorola, Microsoft, The State of the Net

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 49 -

CONNECTIVITE INTERNET
Importance croissante du Wireless Embedded Internet
Bil $ 140 120 100 80
% of SC Market Wireless Wired

% of SC Market 40 36 32 28 24 20 16 12 90 91 92 93 94 95 96 97 98 99 '00 '01 '02 '03 '04 '05

60 40 20 0

Communications Semiconductor Market


Source : Motorola, WSTS, SPS & Dataquest

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 50 -

25

CHAPITRE 2 : IMPORTANCE DU CODESIGN DANS L'EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 51 -

QUAND LE MATERIEL REJOINT LE LOGICIEL

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

QUAND LE MATERIEL REJOINT LE LOGICIEL

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 53 -

QUAND LE MATERIEL REJOINT LE LOGICIEL

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 54 -

27

QUAND LE MATERIEL REJOINT LE LOGICIEL


1M-10K

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 55 -

QUAND LE MATERIEL REJOINT LE LOGICIEL

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 56 -

28

QUAND LE MATERIEL REJOINT LE LOGICIEL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 58 -

29

APPROCHE TRADITIONNELLE DE DEVELOPPEMENT

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 60 -

30

MOINS DE TEMPS POUR LE DEVELOPPEMENT

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 !

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 62 -

31

LINTERET DE LEMPLOI DUN PROCESSEUR

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

Conception traditionnelle dbut

Codesign (flot concurrent) dbut

HW

SW HW SW Ralise par le mme groupe dingnieurs en coopration

Ralise par des groupes dingnieurs indpendants

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 67 -

LES ETAPES DANS LE CODESIGN


Description systme Partitionnement HW/SW Compilation Software Intgration systme Modlisation

Reprsentation unifie Synthse Hardware Evaluation et tests HW/SW

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 68 -

34

CODESIGN HARDWARE/SOFTWARE

Outil Altera Quartus II


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 69 -

CODESIGN HARDWARE/SOFTWARE

Outil Altera Quartus II


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 70 -

35

CODESIGN HARDWARE/SOFTWARE

Outil Xilinx ISE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

CHAPITRE 3 : LINUX EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 74 -

37

PARTIE 1 : LE BESOIN D'EMBARQUER LINUX

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 75 -

LINUX ET LE MARCHE DE L'EMBARQUE

On retiendra les comparaisons suivantes (www.survey.com) :

100% 90% 80% 70%

92%

92%

88%

58% 60% 48% 50% 40% 30% 20% 10% 0% Fiabilit Stabilit Performances 42%

Linux

Windows

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 76 -

38

LE MARCHE DE L'EMBARQUE

Panorama du march de l'embarqu :

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 77 -

LE MARCHE DE L'EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 78 -

39

POINTS FORTS CITES

Code source disponible, pas de royalties pour Linux :

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 79 -

APPLICATIONS VISEES PAR LINUX

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 80 -

40

QUEST-CE QUE LINUX ?

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 81 -

QUEST-CE QUE LINUX ?

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 82 -

41

QUEST-CE QUE LINUX ?

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 83 -

POURQUOI UTILISER LINUX ?

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 84 -

42

POURQUOI UTILISER LINUX ?

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 85 -

POURQUOI UTILISER LINUX ?

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 86 -

43

POURQUOI UTILISER LINUX ?

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 87 -

POURQUOI UTILISER LINUX ?

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 88 -

44

POURQUOI UTILISER LINUX ?

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 89 -

POURQUOI UTILISER LINUX ?

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 90 -

45

LINUX ET LE LOGICIEL LIBRE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

LOGICIEL LIBRE : DROITS

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

LOGICIEL LIBRE : DROITS

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

LOGICIEL LIBRE : DEVOIRS

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 95 -

LOGICIEL LIBRE : DEVOIRS

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 96 -

48

LICENCE OPEN SOURCE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 97 -

LICENCE OPEN SOURCE GPL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 98 -

49

AUTRES LICENCES

Il existe d'autres types de licences : MIT. BSD. X11, XFree86. Netscape. W3C.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 103 -

OUTILS POUR LINUX EMBARQUE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 104 -

52

OUTILS POUR LINUX EMBARQUE

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 -

OUTILS POUR LINUX EMBARQUE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 106 -

53

PROCESSEUR POUR LINUX EMBARQUE

Besoin Taille RAM Taille ROM/FLASH Processeurs

Miniature <0,1 Mo

Petit

Moyen 2-8 Mo

Caractristiques matrielles Exemples dapplications

0,14 Mo 0,1-0,5 Mo 0,52 Mo DragonBall 68K Mcore ColdFire ARM MMU optionnelle

Haut de gamme 8-32 Mo

PC embarqu 16-64 Mo

Embarqu haute disponibilit > x Mo Go-To Pentium PowerPC

Camra numrique PDA Tlphone

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

Commutateur tlphonique Routeur haute performance Serveur central

Choix suivant puissance de calcul, mmoire...


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 107 -

PROCESSEURS POUR LINUX EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 108 -

54

PERIPHERIQUES POUR LINUX EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 109 -

CHOIX D'UN LINUX EMBARQUE

Enqute linuxdevices.com juin 2003


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 110 -

55

CARTES POUR LINUX EMBARQUE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 111 -

CARTES POUR LINUX EMBARQUE

Bus PCI en plus :

PC/104-Plus -- PCI added to PC/104 EBX -- PC/104-Plus added to Little Board

Cartes au format industriel VME, VXI, PXI...

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 112 -

56

FORMAT DES CARTES POUR LINUX EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 113 -

CHOIX D'UNE VERSION LINUX EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 114 -

57

POINTS FAIBLES DE LINUX EMBARQUE

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

PARTIE 2 : LES OFFRES LINUX EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 116 -

58

LES OFFRES LINUX EMBARQUE

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 LINUX EMBARQUE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 118 -

59

LES OFFRES LINUX EMBARQUE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 119 -

LINUX EMBARQUE COMMERCIAL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 120 -

60

LINUX EMBARQUE COMMERCIAL


Caractristiques de MontaVista Professional Edition : Board Hardware Support :


Support for over seventy popular COTS, Evaluation, and Reference boards. Support for seven target CPU families with more than 25 CPU variants.

MontaVista Development Environment :


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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 121 -

LINUX EMBARQUE COMMERCIAL

Caractristiques de MontaVista Professional Edition :


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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 122 -

61

LINUX EMBARQUE OPEN SOURCE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 123 -

LINUX EMBARQUE OPEN SOURCE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 124 -

62

LINUX EMBARQUE OPEN SOURCE

Caractristiques de Embedded Debian Project :


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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 125 -

LE CHOIX D'UN LINUX EMBARQUE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 126 -

63

PARTIE 3 : BILAN

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 127 -

LE CHOIX D'UN LINUX EMBARQUE


Complexit de mise en uvre maximale LFS (Linux From Scratch)

Clinux Embedded Debian Project Metrowerks/Creation Suite for Linux Montavista LynuxWorks/Bluecat

Complexit de mise en uvre minimale


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 128 -

64

PARTIE 4 : BOITE A OUTILS LIBRES POUR LINUX EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 129 -

BOITE A OUTILS LINUX EMBARQUE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 130 -

65

COMPILATEURS CROISES

Outil gcc crosstool

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/

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 132 -

66

BIBLIOTHEQUES LIBC

Outil glibc Clibc newlib dietlibc

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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/uClinux2.0.x/ http://www.linux-m68k.org/ http://www.uclinux.org/ports/coldfire/

http://www.uclinux.org/pub/uClinux/ports/arm7t dmi/ http://blackfin.uclinux.org/

http://www.uclinux.org/pub/uClinux/ports/h8/

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

colilo ppcboot ARMboot YAMON

http://www.reasonability.net/uclinux/c olilo/ http://sourceforge.net/projects/ppcbo ot/ http://sourceforge.net/projects/armbo ot http://www.mips.com/sitemap/content/ Products/SoftwareTools/content_html /yamon

Bootloader Linux pour processeurs PowerPC. Intgr dans u-boot Bootloader Linux pour processeurs ARM Bootloader Linux pour processeurs MIPS

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

OpenBIOS FreeBIOS PXELinux

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/

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 138 -

69

SHELLS ET COMMANDES LINUX

Outil BusyBox ash

Adresse Internet
http://busybox.net/

Description
Vritable couteau suisse ! BusyBox est incontournable aujourd'hui Shell (intgr dans BusyBox)

http://www.uclibc.org/ http://packages.debian.org/unstable/ shells/ash.html

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 139 -

EDITEURS DE TEXTES

Outil vi ae e3 elvis nano jove

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

http://elvis.the-little-red-haired-girl.org/ http://www.nano-editor.org/ http://packages.debian.org/unstable/editors/jo ve

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 140 -

70

OUTILS RESEAU ET CONNECTIVITE IP


Outil boa Adresse Internet
http://www.boa.org/

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 lightTPD dillo

http://busybox.net/ http://lighttpd.net/ http://www.dillo.org/

BusyBox contient un serveur web Serveur web. Support des scripts CGI Navigator web. Mode graphique

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 141 -

OUTILS RESEAU ET CONNECTIVITE IP


Outil minimo Iproute Adresse Internet
http://www.mozilla.org/projects/minimo/ http://packages.debian.org/unstable/net/ipr oute.html

Description
Navigator web. Mode graphique Outil pour la configuration rseau

ntpclient dropbear tinylogin

http://doolittle.faludi.com/ntpclient/ http://www.ucc.gu.uwa.edu.au/~Ematt/drop bear/dropbear.html http://tinylogin.busybox.net/

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/

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

Environnement Frame Buffer

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

Minigui FLTK SDL OPIE GPE

http://www.minigui.org/ http://fltk.org/ http://www.libsdl.org/index.php http://opie.handhelds.org/ http://gpe.handhelds.org/

Environnement graphique X11/Xlib avec OpenGL Environnement Frame Buffer graphique

Open Palmtop Integrated Environment. Environnement graphique tournant au-dessus du Frame Buffer GPE Palmtop Environment. Environnement graphique tournant au-dessus du X11

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

UML Coldfire Emulator SkyEye

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 146 -

73

PARTIE 5 : BIEN CONCEVOIR SON SYSTME EMBARQUE LIBRE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 147 -

BIEN CONCEVOIR SON SYSTME EMBARQUE LIBRE

Pour bien concevoir son systme embarqu libre, il convient de respecter quelques points importants. Il sagit de rgles de bon sens !

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 148 -

74

BIEN CONCEVOIR SON SYSTME EMBARQUE LIBRE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 149 -

BIEN CONCEVOIR SON SYSTME EMBARQUE LIBRE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 150 -

75

BIEN CONCEVOIR SON SYSTME EMBARQUE LIBRE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 151 -

BIEN CONCEVOIR SON SYSTME EMBARQUE LIBRE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 152 -

76

BIEN CONCEVOIR SON SYSTME EMBARQUE LIBRE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 153 -

BIEN CONCEVOIR SON SYSTME EMBARQUE LIBRE


Application

Root FS Software driver Bootloader Noyau Linux

Mmoire FLASH

Hardware

Processeur

U-boot

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 154 -

77

BIEN CONCEVOIR SON SYSTME EMBARQUE LIBRE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 155 -

PARTIE 6 : ETUDE ET MISE EN UVRE DE LINUX EMBARQUE : Clinux

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 157 -

PRESENTATION DE Clinux

Tous les portages Clinux suivant le type du processeur sont sous licence GPL. www.uclinux.org

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 160 -

80

MISE EN UVRE DE Clinux sur Blackfin

Le processeur Blackfin est un processeur dAnalog Devices ddi au traitement du signal.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 161 -

MISE EN UVRE DE Clinux sur Blackfin

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

MISE EN UVRE DE Clinux sur Blackfin

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 163 -

MISE EN UVRE DE Clinux sur Blackfin

En tant simple utilisateur, dans son Home Directory, installer le package Clinux :
% cd ~ % tar xvzf uClinux.tgz

Un rpertoire ~/blackfin-linux-dist est cr. Se placer dans ce rpertoire :


% cd blackfin-linux-dist

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 164 -

82

MISE EN UVRE DE Clinux sur Blackfin

Configurer le noyau Clinux comme sous Linux (choix de la carte, des applications embarquer) :
% make menuconfig

Construire l'image tlcharger dans la carte :


% make

Tlcharger l'image dans la carte depuis le moniteur (par le rseau) et lancer le noyau Clinux.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 165 -

MISE EN UVRE DE Clinux sur Blackfin

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 166 -

83

MISE EN UVRE DE Clinux sur Blackfin

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 167 -

MISE EN UVRE DE Clinux sur Blackfin

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 168 -

84

MISE EN UVRE DE Clinux sur Blackfin

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 169 -

MISE EN UVRE DE Clinux sur Blackfin

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 170 -

85

MISE EN UVRE DE Clinux sur Blackfin

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 171 -

MISE EN UVRE DE Clinux sur Blackfin

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

Il convient donc d'avoir un serveur TFTP actif sur le PC hte.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 172 -

86

MISE EN UVRE DE Clinux sur ColdFire

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 -

MISE EN UVRE DE Clinux sur ColdFire

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 174 -

87

MISE EN UVRE DE Clinux sur ColdFire

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

MISE EN UVRE DE Clinux sur ColdFire

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 176 -

88

MISE EN UVRE DE Clinux sur ColdFire

En tant simple utilisateur, dans son Home Directory, installer le package Clinux :
% cd ~ % tar xvzf uClinux-dist-aaaammjj.tar.gz

Un rpertoire ~/ uClinux-dist est cr. Se placer dans ce rpertoire :


% cd uClinux-dist

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 177 -

MISE EN UVRE DE Clinux sur ColdFire

Configurer le noyau Clinux comme sous Linux (choix de la carte, des applications embarquer) :
% make xconfig

Construire l'image tlcharger dans la carte :


% make

Tlcharger l'image dans la carte depuis le moniteur (par le rseau, par la liaison srie) et lancer le noyau Clinux.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 178 -

89

MISE EN UVRE DE Clinux sur ColdFire

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 179 -

MISE EN UVRE DE Clinux sur ColdFire

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 180 -

90

MISE EN UVRE DE Clinux sur ColdFire

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 181 -

MISE EN UVRE DE Clinux sur ColdFire

Configuration du noyau :

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 182 -

91

MISE EN UVRE DE Clinux sur ColdFire

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 183 -

MISE EN UVRE DE Clinux sur ColdFire

Choix des applications standards et userland :

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 184 -

92

MISE EN UVRE DE Clinux sur ColdFire

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 185 -

MISE EN UVRE DE Clinux sur ColdFire

La carte ColdFire possde un moniteur embarqu pour des oprations lmentaires accessibles depuis le port srie :

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 186 -

93

MISE EN UVRE DE Clinux sur ColdFire

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 187 -

MISE EN UVRE DE Clinux sur ColdFire

Tlchargement du fichier image image.bin par TFTP :


% minicom

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 188 -

94

MISE EN UVRE DE Clinux sur ColdFire

Tlchargement du fichier image image.bin par TFTP :


dBUG> dn image.bin Address: 0x00020000 Eth Mac Addr is 00:00:00:00:00:06 Downloading Image 'image.bin' from 192.9.203.1 TFTP download successful Read 1596184 bytes (3118 blocks)

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 189 -

MISE EN UVRE DE Clinux sur ColdFire

Boot du noyau Clinux :


dBUG> go 20000 Linux version 2.4.17-uc0 (uclinux@kiwi1) (gcc version 2.95.3 20010315 uClinux/COLDFIRE(m5407) COLDFIRE port done by Greg Ungerer, gerg@snapgear.com Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne On node 0 totalpages: 8192 zone(0): 0 pages. zone(1): 8192 pages. zone(2): 0 pages. Kernel command line: Calibrating delay loop... 149.50 BogoMIPS Memory available: 30424k/32768k RAM, 0k/0k ROM (581k kernel code, 197k data) IT331 : Les systmes embarqus. Linux pour lembarqu

pk/enseirb/2013 v8

- 190 -

95

MISE EN UVRE DE Clinux sur ColdFire

Boot du noyau Clinux :


Command: cat /etc/motd Welcome to ____ _ _ / __| ||_| _ _| | | | _ ____ _ _ _ _ | | | | | | || | _ \| | | |\ \/ / | |_| | |__| || | | | | |_| |/ \ | ___\____|_||_|_| |_|\____|\_/\_/ | | |_| For further information check: http://www.uclinux.org/ Execution Finished, Exiting Sash command shell (version 1.1.1) IT331 : Les systmes embarqus. Linux pour lembarqu

pk/enseirb/2013 v8

- 191 -

CHAPITRE 4 : LE TEMPS REEL SOUS LINUX INTRODUCTION AU TEMPS REEL

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 192 -

96

PARTIE 1 : INTRODUCTION

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 193 -

TEMPS REEL MOU

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 194 -

97

TEMPS REEL MOU

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 ;-)

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 195 -

TEMPS REEL DUR

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

TEMPS REEL DUR

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 197 -

TEMPS REEL DUR

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 ET LE TEMPS REEL

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 ET LE TEMPS REEL

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 !

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 200 -

100

LINUX ET LE TEMPS REEL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 201 -

LINUX ET LE TEMPS REEL

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 202 -

101

LINUX ET LE TEMPS REEL

Traitement des interruptions et ISR : Linux standard


1x 4x 3x

ISR
Interrupt Interrupt

ISR
Interrupt

ISR

time

Systme Temps Rel dur (RTOS)


<n
ISR
Interrupt Interrupt

OK

JAMAIS
<n
ISR

time

n: dlai maximum
IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 203 -

LINUX ET LE TEMPS REEL

Temps de latence du noyau Linux (Free Electrons) :


Makes the task runnable interrupt latency Interrupt handler duration scheduler latency scheduler duration Interrupt handler Running task Process context

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

LINUX ET LE TEMPS REEL

Traitement des tches priodiques : Idalement start start start m m


tche tche tche

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 205 -

UNE PETITE EXPERIENCE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 206 -

103

UNE PETITE EXPERIENCE


#include #include #include #include #include <stdio.h> <stdlib.h> <fcntl.h> <unistd.h> <asm/io.h>

#define LPT 0x378 int ioperm(); int main(int argc, char **argv) { setuid(0); if (ioperm(LPT, 1, 1) < 0) { perror("ioperm()"); exit(-1); }

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 207 -

UNE PETITE EXPERIENCE


while(1) { outb(0x01, LPT); usleep(50000); outb(0x00, LPT); usleep(50000); } return(0); }

Programme square (fichier C square.c)

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 208 -

104

UNE PETITE EXPERIENCE

Gnration d'un signal carr sous Linux non charg


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 209 -

UNE PETITE EXPERIENCE

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 :

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 210 -

105

UNE PETITE EXPERIENCE

Gnration d'un signal carr sous Linux charg


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 211 -

UNE PETITE EXPERIENCE

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

LINUX ET LES NORMES POSIX

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

LINUX ET LES NORMES POSIX

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

LINUX ET LES NORMES POSIX

Le standard POSIX est divis en plusieurs sous-standards :

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 215 -

LINUX ET LES NORMES POSIX

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 ET LES NORMES POSIX

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 217 -

EXTENSION TEMPS REEL POUR LINUX

Implmentation du noyau Linux standard : Pas de support du Temps Rel. Sparation entre le matriel et les processus Linux. ...

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 218 -

109

EXTENSION TEMPS REEL POUR LINUX

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 219 -

EXTENSION TEMPS REEL POUR LINUX

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 220 -

110

EXTENSION TEMPS REEL POUR LINUX

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 221 -

EXTENSION TEMPS REEL POUR LINUX

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

LINUX ETENDU TEMPS REEL

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

PARTIE 2 : LES OFFRES LINUX TEMPS REEL

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 225 -

LES OFFRES LINUX TEMPS REEL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 226 -

113

LINUX TEMPS REEL COMMERCIAL

Montavista Professional Lineo-Metrowerks-Motorola/Creation Suite for Linux LynuxWorks/BlueCat RT TimeSys/Linux RTOS Professional or Standard Edition

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 227 -

LINUX TEMPS REEL OPEN SOURCE

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

TEMPS REEL COMMERCIAL

Il y a toujours les solutions TR commerciales non Linux : VxWorks pSOS QNX LynxOS C/OS II

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 230 -

115

QNX

Solution commerciale TR non Linux de QNX Systems : http://www.qnx.com 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)

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 234 -

117

XENOMAI

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 235 -

XENOMAI

Xenomai est srement la solution Temps Rel dur sous Linux la plus prometteuse. Elle est privilgier

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 236 -

118

PARTIE 3 : LINUX TEMPS REEL MOU : PREEMPT-RT

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

Patch Preempt Kernel. Patch Low Latency.

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 243 -

MISE EN UVRE DE PREEMPT-RT

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 244 -

122

MISE EN UVRE DE PREEMPT-RT

Dcompression des sources du noyau vanilla :


$ tar -xvjf linux-2.6.33.9.tar.bz2

Rcupration des sources de PREEMPT-RT :


$ wget ftp://ftp.kernel.org/pub/linux/kernel/projects/rt/patch2.6.33.9-rt31.bz2

Dcompression des sources de PREEMPT-RT :


$ bzip2 -d patch-2.6.33.9-rt31.bz2

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 245 -

MISE EN UVRE DE PREEMPT-RT

Application du patch PREEMPT-RT aux sources du noyau vanilla :


$ cd $ cd linux-2.6.33.9 $ patch -p1 < ../patch-2.6.33.9-rt31 patching file arch/arm/include/asm/sched_clock.h patching file arch/arm/include/asm/system.h patching file virt/kvm/kvm_main.c

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 246 -

123

MISE EN UVRE DE PREEMPT-RT

Configuration du noyau. On laissera par dfaut la configuration PREEMPT-RT :


$ cd $ cd linux-2.6.33.9 $ make i386_defconfig

On validera PREEMPT-RT :
$ make gconfig

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 247 -

MISE EN UVRE DE PREEMPT-RT

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 248 -

124

MISE EN UVRE DE PREEMPT-RT

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 249 -

MISE EN UVRE DE PREEMPT-RT

Compilation du noyau PREEMPT-RT :


$ make -j 4

Compilation des modules :


$ make modules

Installation du noyau PREEMPT-RT et des modules :


$ # # # # su cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.33.9-rt31 cp System.map /boot/System.map-2.6.33.9-rt31 cp .config /boot/config-2.6.33.9-rt31 make modules_install

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 250 -

125

MISE EN UVRE DE PREEMPT-RT

Gnration du fichier RAM Disk pour le noyau PREEMPT-RT :


# /sbin/new-kernel-pkg --package kernel --mkinitrd -depmod --install 2.6.33.9-rt31 # exit $

On a au final 4 nouveaux fichiers dans le rpertoire /boot/ :


$ ls /boot/*rt* /boot/config-2.6.33.9-rt31 /boot/System.map-2.6.33.9-rt31 /boot/initrd-2.6.33.9-rt31.img /boot/vmlinuz-2.6.33.9-rt31

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 251 -

MISE EN UVRE DE PREEMPT-RT

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

On pourra enfin vrifier la version du noyau :


$ uname -r 2.6.33.9-rt31

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 252 -

126

MESURES DE TEMPS DE LATENCE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 253 -

MESURES DE TEMPS DE LATENCE

On pourra utiliser les outils de la suite rt-tests :


$ cd $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms /rt-tests.git $ cd rt-tests $ make $ su # make install

Outil hackbench : charge du noyau Linux :


$ hackbench

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

MESURES DE TEMPS DE LATENCE

On pourra utiliser loutil stress (http://weather.ou.edu/~apw/projects/stress) :


$ stress -c 20 -i 20 &

Exemple de stress du noyau Linux. Script load lanc en tant super utilisateur :
#!/bin/bash stress -c 20 -i 20 & ping f localhost &

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 255 -

MESURES DE TEMPS DE LATENCE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 256 -

128

MESURES DE TEMPS DE LATENCE


Fichier C square.c :
#include #include #include #include #include #include #include #include <stdio.h> <stdlib.h> <fcntl.h> <unistd.h> <sys/io.h> <sys/time.h> <string.h> <sched.h>

#define LPT 0x378 extern int ioperm();

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 257 -

MESURES DE TEMPS DE LATENCE


int main(int argc, char **argv) { int nibl = 0x01, loop = 1; struct timeval tv; struct timezone tz; time_t told=0, t=0; if (ioperm(LPT, 1, 1) < 0) { perror("ioperm()"); exit(-1); }

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 258 -

129

MESURES DE TEMPS DE LATENCE


while (1) { outb (nibl, LPT); nibl = ~nibl; usleep (20000); gettimeofday (&tv, &tz); told = t; t = (tv.tv_sec * 1000000) + tv.tv_usec; } return(0); }

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 259 -

MESURES DE TEMPS DE LATENCE

Linux PREEMPT-RT non charg


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 260 -

130

MESURES DE TEMPS DE LATENCE

Linux PREEMPT-RT non charg (zoom)


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 261 -

MESURES DE TEMPS DE LATENCE

Linux PREEMPT-RT charg


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 262 -

131

MESURES DE TEMPS DE LATENCE

Linux PREEMPT-RT charg (zoom)


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 263 -

MESURES DE TEMPS DE LATENCE

Linux vanilla charg


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 264 -

132

MESURES DE TEMPS DE LATENCE

Outil PREEMPT-RT cyclictest :

Linux non charg :


# cyclictest -n -p 99 -i 1000 policy: fifo: loadavg: 1.31 0.71 0.27 1/223 2054 T: 0 ( 2029) P:99 I:1000 C: 30161 Min: 7 Act: 10 Avg: 13 Max: 45

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 265 -

PARTIE 4 : LINUX TEMPS REEL DUR : XENOMAI

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 267 -

MISE EN UVRE DE XENOMAI

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 268 -

134

MISE EN UVRE DE XENOMAI

Dcompression des sources du noyau vanilla :


$ tar -xvjf linux-2.6.37.tar.bz2

Rcupration des sources de Xenomai :


$ wget http://download.gna.org/xenomai/stable/xenomai2.5.6.tar.bz2

Dcompression des sources de Xenomai :


$ tar -xvjf xenomai-2.5.6.tar.bz2

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 269 -

MISE EN UVRE DE XENOMAI

Application du patch Adeos aux sources du noyau vanilla :


$ cd $ cd xenomai-2.5.6 $ ./scripts/prepare-kernel.sh --arch=x86 \ --adeos=`pwd`/ksrc/arch/x86/patches/adeos-ipipe-2.6.37x86-2.9-00.patch \ --linux=`pwd`/../linux-2.6.37 patching file arch/x86/Kconfig patching file arch/x86/include/asm/apic.h patching file arch/x86/include/asm/apicdef.h patching file arch/x86/include/asm/entry_arch.h patching file arch/x86/include/asm/hw_irq.h

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 270 -

135

MISE EN UVRE DE XENOMAI

Configuration du noyau. On laissera par dfaut la configuration Xenomai :


$ cd $ cd linux-2.6.37 $ make i386_defconfig

On validera Xenomai :
$ make gconfig

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 271 -

MISE EN UVRE DE XENOMAI

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 272 -

136

MISE EN UVRE DE XENOMAI

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 273 -

MISE EN UVRE DE XENOMAI

Dfinition de lEXTRAVERSION :
$ cd $ cd linux-2.6.37 $ emacs Makefile

LEXTRAVERSION :
EXTRAVERSION =

devient :
EXTRAVERSION = -xenomai

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 274 -

137

MISE EN UVRE DE XENOMAI

Compilation du noyau Xenomai :


$ make -j 4

Compilation des modules :


$ make modules

Installation du noyau Xenomai et des modules :


$ # # # # su cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.37-xenomai cp System.map /boot/System.map-2.6.37-xenomai cp .config /boot/config-2.6.37-xenomai make modules_install

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 275 -

MISE EN UVRE DE XENOMAI

Gnration du fichier RAM Disk pour le noyau Xenomai :


# /sbin/new-kernel-pkg --package kernel --mkinitrd -depmod --install 2.6.37-xenomai # exit $

On a au final 4 nouveaux fichiers dans le rpertoire /boot/ :


$ ls /boot/*xenomai* /boot/config-2.6.37-xenomai /boot/System.map-2.6.37-xenomai /boot/initrd-2.6.37-xenomai.img /boot/vmlinuz-2.6.37-xenomai

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 276 -

138

MISE EN UVRE DE XENOMAI

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 277 -

MISE EN UVRE DE XENOMAI

On pourra enfin vrifier la version du noyau :


$ uname -r 2.6.37-xenomai

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 278 -

139

MESURES DE TEMPS DE LATENCE

On pourra utiliser les outils de Xenomai :


$ $ $ $ $ cd cd xenomai-2.5.6 ./configure --enable-x86-sep --host=i686-linux make su

# make install

Outil cyclictest : mesure du temps de latence sur des threads priodiques :


# /usr/xenomai/bin/cyclictest -n -p 99 -i 1000

Outil latency : mesure du temps de latence :


# /usr/xenomai/bin/latency -t0 -p 1000 IT331 : Les systmes embarqus. Linux pour lembarqu

pk/enseirb/2013 v8

- 279 -

MESURES DE TEMPS DE LATENCE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 280 -

140

MESURES DE TEMPS DE LATENCE

Linux Xenomai non charg


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 281 -

MESURES DE TEMPS DE LATENCE

Linux Xenomai non charg (zoom)


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 282 -

141

MESURES DE TEMPS DE LATENCE

Linux Xenomai charg


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 283 -

MESURES DE TEMPS DE LATENCE

Linux Xenomai charg (zoom)


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 284 -

142

MESURES DE TEMPS DE LATENCE

Linux vanilla charg


IT331 : Les systmes embarqus. Linux pour lembarqu
pk/enseirb/2013 v8

- 285 -

MESURES DE TEMPS DE LATENCE

Outil Xenomai cyclictest :

Linux non charg :


# /usr/xenomai/bin/cyclictest -n -p 99 -i 1000 1.00 0.57 0.28 3/185 2261 T: 0 ( 2241) P:99 I: 1000000 C: 38 Min: 15 Act: 26 Avg: 20 Max: 31

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 286 -

143

MESURES DE TEMPS DE LATENCE

Outil Xenomai latency. Linux non charg :

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 287 -

MESURES DE TEMPS DE LATENCE

Outil Xenomai latency. Linux charg :

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 288 -

144

PARTIE 5 : BILAN

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 289 -

LE CHOIX D'UN LINUX TEMPS REEL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 290 -

145

LE CHOIX D'UN LINUX TEMPS REEL


Ractivit Linux standard 2.6 et suprieur PREEMPT-RT qq 10-100 s Montavista TimeSys BlueCat RT Montavista Xenomai, RTAI Temps Rel mou Non Temps Rel qq 10-100 ms

Temps Rel dur

qq 10 s

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 291 -

LE CHOIX D'UN LINUX TEMPS REEL


1s 100 ms Noyau Linux 2.4 10 ms 1 ms 100 s 10 s 1 s Programme en assembleur cod la main Logique cble Analogique 100 ns 10 ns 1 ns

Noyau Linux 2.6 et suprieur Noyau Linux 2.6 et suprieur -rt RTOS (TR dur)

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 292 -

146

LE CHOIX D'UN LINUX TEMPS REEL

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 293 -

LE CHOIX D'UN LINUX TEMPS REEL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 294 -

147

LE CHOIX D'UN LINUX TEMPS REEL


SIMPLE Linux standard 2.6 et suprieur PREEMPT-RT Montavista TimeSys BlueCat RT Xenomai, RTAI
Application de patch au noyau Linux standard Installation de modules Linux spcifiques API spcifique ou POSIX Application de patch au noyau Linux standard API Linux standard

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 296 -

148

PARTIE 1 : INTRODUCTION

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 300 -

150

PARTIE 2 : LES OUTILS POUR LA MISE AU POINT D'UN SYSTEME EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 301 -

INTRODUCTION

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 303 -

LOSCILLOSCOPE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 312 -

156

LE MONITEUR ROM

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 315 -

POINT DARRET

Code image in memory: before instruction n-1 instruction n instruction n+1 .


Want Wantto toset set breakpoint breakpointhere here

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 316 -

158

EXEMPLE DE MONITEUR
Moniteur Buffalo pour le microcontrleur 68HC11 :

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

TRACES TEMPS REEL

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 333 -

TRACES TEMPS REEL


Example Exampleof ofReal RealTime TimeTrace Tracefrom fromHP64700 HP64700emulator emulator

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 334 -

167

TRACES TEMPS REEL


The Theuser userinterface interfacesoftware softwarehas hasaccess accessto tothe thelinker linkersymbol symboltable table Can Canintersperse intersperseC Cor orC++ C++source sourcelines lineswith withassembly assemblylanguage languageexecution execution

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 343 -

INTRODUCTION

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 344 -

172

DEBUG PAR LE JTAG

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 345 -

DEBUG PAR LE JTAG


Clock in JTAG in JTAG out

Program Counter - PC

Status Bus Interface

Register R2

Processor ProcessorCore Core

Register Rn

SPECIAL REGISTER SET

Data Bus Interface

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 346 -

Addr Bus Interface

Register R1

JTAG Control State Machine

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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) !

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 350 -

175

SIMULATEUR

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 352 -

176

LE CHOIX DES OUTILS

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 353 -

LE CHOIX DES OUTILS

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

LE CHOIX DES OUTILS


Fonctionnalit Event triggers Overlay RAM Points darrt hard Points darrt complexes Time stamps Accs non intrusif Cot Emulateur ICE BDM ROM Moniteur Analyseur logique ROM Emulateur

Oui Oui Oui Oui Oui Oui Trs cher

Certains Non Certains Non Non Oui Bon march

Non Non Non Non Non Non Bon march

Oui Non Non Oui Oui Oui Cher

Non Oui Certains Non Non Non Bon march

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 355 -

LE CHOIX DES OUTILS


Fonctionnalit Debug au niveau source Tlchargement code Pas pas Points darrt Display/modifs registres Regarder variables Traces TR Emulateur ICE BDM ROM Moniteur Analyseur logique ROM Emulateur

Oui Oui Oui Oui Oui Oui Oui

Oui Oui Oui Oui Oui Oui Certains

Oui Oui Oui Oui Oui Oui Non

Certains Non Non Non Oui Oui Oui

Oui Oui Oui Oui Oui Oui Non

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 356 -

178

PARTIE 3 : LA MISE AU POINT MATERIELLE D'UN SYSTEME EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 357 -

ENVIRONNEMENT DE DEVELOPPEMENT

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

Liaison srie, USB liaison rseau Ethernet + JTAG, ICE

target

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 361 -

ENVIRONNEMENT DE DEVELOPPEMENT
Source Listing Source Listing Create User Library (optional) Librarian

C or C++ Source File

C or C++ Compiler

Assembly Source File

Assembler

Relocatable Object Module

User Library

Include Files

Library Directory Listing Linker Command File

Device Programmer Absolute Object Module Linker Relocatable Object Module

Target Development System

Link Map

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 363 -

TRUCS ET ASTUCES POUR UNE BONNE MISE AU POINT. AVANT DE COMMENCER

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

ETRE IMPLIQUE DANS LA CONCEPTION

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 367 -

AVOIR UNE COPIE DES DOCUMENTS

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 368 -

184

ETRE SUR QUE LE MATERIEL MARCHE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 371 -

REGARDER CE QUE L'ON A CONCU

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)

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 372 -

186

TRUCS ET ASTUCES POUR UNE BONNE MISE AU POINT. DANS L'ACTION

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 379 -

PARTIE 4 : LA MISE AU POINT LOGICIELLE D'UN SYSTEME EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 383 -

CLASSES DE STOCKAGE

La classe de stockage d'une variable peut tre :

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 384 -

192

CLASSES DE STOCKAGE

La classe de stockage d'une variable peut tre :

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 385 -

CLASSES DE STOCKAGE

La classe de stockage d'une variable peut tre :

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 386 -

193

CLASSES DE STOCKAGE

La classe de stockage d'une variable peut tre :

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 387 -

MODIFICATEURS D'ACCES

Il existe 2 modificateurs d'accs une variable :

const :

const int a=10;

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 388 -

194

MODIFICATEUR D'ACCES VOLATILE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 389 -

VOLATILE : MAUVAISE PROGRAMMATION

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 390 -

195

VOLATILE : MAUVAISE PROGRAMMATION


unsigned char * ptr = (unsigned char *) 0x1234;

// Wait for register to become non-zero while (*ptr == 0) ; // Do something else

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 391 -

VOLATILE : MAUVAISE PROGRAMMATION

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

VOLATILE : BONNE PROGRAMMATION


volatile unsigned char 0x1234; * ptr = (volatile unsigned char *)

Le code assembleur gnr est alors :


loop mov mov bz ptr, #0x1234 a, @ptr loop

On a alors le comportement attendu !

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 393 -

PARTIE 5 : EXEMPLE ILLUSTRE : MISE AU POINT LOGICIELLE D'UN SYSTEME LINUX EMBARQUE

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 394 -

197

LINUX EMBARQUE : LES ETAPES

1. Dveloppement du bootloader. 2. Portage du noyau Linux. 3. Dveloppement des drivers spcifiques. 4. Dveloppement de l'application finale. 5. Intgration du tout.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 395 -

L'ENVIRONNEMENT

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 396 -

198

LE SYSTEME HOTE OU HOST

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 397 -

LE SYSTEME CIBLE OU TARGET

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 398 -

199

TELECHARGEMENT DANS LA CIBLE

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 DEVELOPPEMENT CROISE

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 400 -

200

ENVIRONNEMENT DE DEVELOPPEMENT CROISE

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.

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 405 -

DEVELOPPEMENT DES DRIVERS

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 408 -

204

REFERENCES BIBLIOGRAPHIQUES

Linux embarqu. P. Ficheux, E. Bnard. Editions Eyrolles. Version 4 revue et corrige ! LA REFERENCE !

Embedded Linux. J. Lombardo. Editions New Riders.

Embedded Linux. C. Hollabaugh. Editions Addison Wesley

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 411 -

REFERENCES BIBLIOGRAPHIQUES

Embedded Systems. Firmware Demystified. E. Sutter. Editions CMP Books

The Art of Designing embedded Systems. J. Ganssle. Editions Butterworth-Heinemann

Embedded Systems Design. A S. Berger. Editions CMP Books

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 412 -

206

REFERENCES BIBLIOGRAPHIQUES

Embedded Systems Handbook. R. Zurawski and al. Editions CRC Press

Designing Embedded Hardware. J. Catsoulis. Editions O'Reilly

Embedded Systems Architecture. T. Noergaard. Editions Newnes

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 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

Embedded Linux system development course. Free Electrons.


http://free-electrons.com/doc/training/embedded-linux/

IT331 : Les systmes embarqus. Linux pour lembarqu


pk/enseirb/2013 v8

- 414 -

207