Vous êtes sur la page 1sur 64

Projet de n dtudes

Technology & Strategy Engineering


Sujet : Plateforme Linux & Combi Instrument.
1 Fvrier 2010 - 3 Juillet 2010
Socit :
Technology & Strategy Engineering
4 avenue de la Paix
67000 Strasbourg
tablissement :
INSA Strasbourg
24 Boulevard de la Victoire
67000 Strasbourg
Professeur rfrent : M. Boyer Bertrand
Responsable : M. Roth Matthieu
tudiant : M. Heinrich Yannick
1. CAHIERS DES CHARGES
1 Cahiers des charges
Recherche et tude des diffrentes plate-formes Linux existantes sur le march.
Connexion dun cran tactile la plate-forme Linux choisie.
Ajout dune connexion CAN la plate-forme.
Ralisation ventuelle dune carte regroupant lensemble des composants.
Dveloppement du software ncessaire en langage C.
Connexion de la plate-forme au systme lve-vitres rtroviseurs de T&S.
Archivage des diffrentes versions de SW dans un logiciel de gestion de conguration de type SVN.
Possibilit dajout dun chip GPS ou dautres fonctionnalits si le temps restant le permet.
1
Rsum
Le stage sest droul au sein du laboratoire de recherche et dveloppement de la socit Technology & Strategy Enginee-
ring. Le sujet portait sur la ralisation dune plate-forme dinstrumentation laide dune carte embarque GNU/Linux et
un cran AMOLED tactile. Le dveloppement incluait la ralisation du pilote pour le noyau Linux et le dveloppement
dun PCB pouvant accueillir lcran et son alimentation. La carte principale provient de la socit ARMADEUS Systems
et est articule autour dun processeur Freescale iMX27 avec une architecture ARM9. Lintgration dun noyau Linux de
gnration 2.6 et dun shell BusyBox sest ralis avec la suite Buildroot et les sources fournies. La conception du PCB a
t ralis sous le logiciel KICAD. Le dveloppement des applicatifs sest bas sur la librairie SDL et a t programmer en C.
My training session took place in the research & development laboratory of the Technology & Strategy Engineering society.
The subject dealed with the conception of an instrumentation platform with an GNU/Linux embedded board and an AMO-
LED touchscreen. The development covered the software part by the conception of a Linux driver and the hardware part by
the design of an PCB hosting the screen and its power supply. The main board was bought to the ARMADEUS Systems
society and is based on a iMX27 Freescale processor with an ARM9 architecture. The integration of a 2.6 Linux kernel and
a Busybox shell was made with the Buildroot toolchain and the source codes provided by the supplyer. The PCB design was
made with KICAD. The applications was developed using the SDL library in the C language.
1. CAHIERS DES CHARGES
Table des matires
1 Cahiers des charges 1
2 Introduction 3
3 Remerciements 4
4 Prsentation de lentreprise 5
4.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2 Le groupe Technology & Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3 Quelques chiffres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3.1 Particularit de la division Engineering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 Prsentation du sujet 7
5.1 Le laboratoire de R & D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.2 Projet Combi instrument & plateforme linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.2.1 Cahiers des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.3 Cycle de dveloppement et organisation dans le temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.4 Outils mis disposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
6 Du processeur au noyau 11
6.1 Rle dun systme dexploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6.2 Adressage mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2.1 Reprsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2.2 Mode rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2.3 Mode protg et segmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
6.2.4 Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.2.5 Le mode noyau et le mode utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.3 Lancement dun systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.4 Prsentation de GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.5 Prsentation de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.5.1 Dveloppement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6.6 Un couple gagnant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.7 Linux et la mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.8 Naviguer dans les sources du Noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.9 Les pilotes sous Linux 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.10 Le framebuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7 Ralisation 23
7.1 Choix de la plateforme GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.1.1 Carte retenue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7.2 Prsentation de larchitecture ARM (32 bits) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.3 Composants logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.3.1 Sur lordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1
1. CAHIERS DES CHARGES
7.3.2 Buildroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.3.3 Sur la carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.4 Interfaces avec la carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.5 cran AMOLED Tactile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.5.1 Interface RGB Parallle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.5.2 Interface SPI "3-wire" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.5.3 criture du pilote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.5.4 Alimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.6 Conception de la carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.6.1 Contraintes de routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.6.2 Schma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.6.3 Routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.6.4 Soudure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8 Conclusion 45
A The GNU General Public Licence 51
A.1 Preamble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
A.2 Terms and conditions for copying, distribution and modication . . . . . . . . . . . . . . . . . . . . . . . 51
A.3 Appendix : How to Apply These Terms to Your New Programs . . . . . . . . . . . . . . . . . . . . . . . . 54
B Code sources 56
B.1 Module Noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
B.2 Code dessai SDL - Fractale de MandelBrot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
B.3 Ajout de la librairie CWIID dans buildroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
B.3.1 libcwiid.mk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
B.3.2 congure_.patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
B.3.3 makele_in.patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2
2. INTRODUCTION
2 Introduction
Le monde de llectronique ne cesse denvahir notre quotidien : rcepteurs GPS dans nos voitures, baladeurs audio et
vido de dernires gnrations, appareils photos numriques, robots Wi-[1][2]... un trait dunion relie tout ce petit monde :
lunivers des systmes embarqus.
Depuis lAGC[3] du programme Apollo lhlicoptre tlcommand de la socit Parot [4], 40 ans se sont couls et ont
permis une vritable dmocratisation des systmes intelligents.
Ce dploiement fut possible grce lintgration constante des puces lectroniques et lvolution en parallle des concepts
et des langages informatiques. On peut sabstenir de coder en assembleur pour grer la pagination et passer des langages
haut - niveau comme le Pascal, Ada voire mme C++ pour raliser ses propres noyaux et systmes dexploitation.
Larrive doutils libres de droits comme GNU, BSD ou Linux ont offert tous la possibilit de dvelopper des systmes
autonomes moindres frais sans scarter des standards de lindustrie.
De nombreuses entreprises de diffrents secteur basent leur travail sur ces outils : des lecteurs DVD, des baladeurs, des
robots domestiques, des motos, des voitures, des routeurs ... tous ces produits sont susceptibles de contenir un noyau embar-
qu du type Linux ou un mini systme GNU.
De nos jours, il nest plus ncessaire dtre un gnie de llectronique et de linformatique pour utiliser une camra sur
son ordinateur, il suft de disposer du pilote adquat. Mais comment ce pilote est il ralis et comment est il intgrer au
coeur du systme dexploitation de nos machines ?
Ces deux questions nous amne au sujet de mon projet de n dtude : Comment relier le monde de llectronique et de
linformatique au coeur dun systme dexploitation existant ?
Jai t amener couvrir de nombreuses thmatiques pour la ralisation de ce projet. Du ct de linformatique embar-
que, la recherche partait de la premption au protocole VGA en passant par les nombreux outils de compilation et gestions
de dpendances utiliss dans le monde libre. Pour la partie lectronique, jai t confront aux problmes de routage, dali-
mentation, de connexion de bus dont les solutions ncessitaient de nombreuses investigations.
Cest avec un trs grand intrt que jai men ce projet et cest avec plaisir que je vous prsente le rsultat de mon travail.
3
3. REMERCIEMENTS
3 Remerciements
Je voudrais tout dabord remercier lquipe enseignante de lINSA Strasbourg de mavoir transmis le bagage ncessaire
la ralisation dun projet comme celui-ci et pour lencadrement de tous les sujets proposs durant cette dernire anne.
Je remercie M. Mathieu Roth, responsable du laboratoire R & D, pour son aide, son encadrement et pour lexprience quil
a volontirement partage.
Je remercie ensuite M. Jrmie Huss, responsable du dpartement Engineering et M. Frdric Bonnet, responsable du d-
partement Holding, de la conance et de la libert de travail quils mont accordes pendant tout la dure de mon PFE.
Je souhaite remercier M. Pascal Tourenne,M. Pascal Prim et M. Patrice Paulus pour le temps quils mont accord et leur
intrt mon sujet.
Je voudrais galement saluer M. Thomas Caucigh, Mlle lodie Poulain, M. Alexandre Carrier, M. Vercruysse Pierre-Alain,
M. Johan Clauss et M. Loc Bailleau, stagiaires au laboratoire R & D pour leur aide volontaire et leur amiti quils ont
exprime pendant ces six mois.
Je suis galement reconnaissant du travail ralis notre gard par Mme Sylvia Pradillon lors des cours dAllemand du
mardi et du jeudi matin.
Je remercie galement tous les employs de TS Engineering, TS Holding, TS Informations Technologies pour leur accueil
chaleureux et leur sympathie lors de mon passage au sein du groupe TS.
4
4. PRSENTATION DE LENTREPRISE
4 Prsentation de lentreprise
4.1 Historique
Une premire socit,Beratta, avait t fonde par les dirigeants de chacune des entits avant dtre rachete par un des
leaders du conseil : le groupe Altran.
Prfrant une indpendance nancire et dcisionnelle, ils crent la socit Technology & Strategy en 2008 avec une quipe
issue la fois dAltran et de Beratta. La socit retrouve une structure plus "familiale" et sa division en trois parties rpartie
au mieux les comptences.
La maison mre de la socit se situe sur lavenue de la paix Strasbourg et depuis peu une liale sest cre dans la rgion
parisienne.
4.2 Le groupe Technology & Strategy
Le nom "Technology & Strategy" regroupe implicitement trois entits distinctes (cf Fig. 1) :
Technology & Strategy Engineering centre sur les mtiers de lingnierie des systmes embarqus majoritairement
dans le monde des transports (automobile, ferroviaire, aronautique) et aussi le domaine de lnergie.
Technology & Strategy Information Technologies focalise sur les technologies de linformation dans les solutions
collaboratives sur le Web (organisation de projets, aide la dcision, plate-forme de gestions de contenus).
Technology & Strategy Holding qui assure les fonctions de gestions pour les deux autres socits (ressources hu-
maines, administration centralise, aspects nanciers et gestion du personnel).
FIGURE 1 Le groupe Technology & Strategy
5
4.3. QUELQUES CHIFFRES 4. PRSENTATION DE LENTREPRISE
La famille TS compte depuis peu une nouvelle division nomme RheinBrcke Consulting concentre sur le conseil en
milieu franco-allemand. Elle recherche des comptences bilingues par approche directe.
FIGURE 2 Logos de la socit RheinBrucke Consulting.
4.3 Quelques chiffres
Le groupe Technology & Strategy reprsente aujourdhui [5] :
plus dune centaine de collaborateurs avec lobjectif de doubler leffectif n 2011.
un groupe solide avec 3 entits bien distinctes.
une croissance rgulire du nombre de clients depuis 2008.
un chiffre daffaire cumul de 6,5 M deuros en 2009.
4.3.1 Particularit de la division Engineering
Cette division est une socit sur le Rhin : elle ralise 80% de son activit outre Rhin et travaille pour des grands noms
de lindustrie automobile comme lquipementier Bosch ou divers constructeur comme BMW. Lentit engineering est ga-
lement la plus grande en termes de cration de valeurs et du nombre de collaborateurs.
FIGURE 3 La zone dactivit vue par la socit
Elle possde galement un laboratoire de recherche et dveloppement qui permet lentreprise dacqurir des comptences
sur des projets dactualits, offrir une vitrine des savoirs faires lentreprise et former ses futurs collaborateurs.
6
5. PRSENTATION DU SUJET
5 Prsentation du sujet
5.1 Le laboratoire de R & D
Le laboratoire de la socit comptait 5 projets technologiques et un projet de dtude de march durant le mme laps
de temps. Ils sorganisait autour dun thme commun : lautomobile.Ils devaient se rencontrer lors des phases terminales (cf
Fig. 4).
FIGURE 4 Les projets du laboratoire en 2010
5.2 Projet Combi instrument & plateforme linux
Lintitul ofciel du sujet est le suivant :
An de continuer son dveloppement dans le secteur des Systmes Embarqus Automobiles, le laboratoire Engineering
de T&S souhaite dvelopper un tableau de bord tactile sur une plate-forme Linux embarqu.
Outre la possibilit dafcher la vitesse sous diffrentes formes, le combi tactile devra galement permettre denregistrer
et de reprsenter diffrentes mesures comme lacclration, la distance de freinage ou le temps au tour dans le cas de me-
sures sur circuit.
De plus, des fonctions de diagnostique embarques doivent galement tre possible.
5.2.1 Cahiers des charges
Le cahier des charges se dcompose comme suit :
Recherche et tude des diffrentes plate-formes Linux existantes sur le march.
Connexion dun cran tactile la plate-forme Linux choisie.
7
5.3. CYCLE DE DVELOPPEMENT ET ORGANISATION DANS LE TEMPS 5. PRSENTATION DU SUJET
Ajout dune connexion CAN la plate-forme.
Ralisation ventuelle dune carte regroupant lensemble des composants.
Dveloppement du software ncessaire en langage C.
Connexion de la plate-forme au systme lve-vitres rtroviseurs de T&S.
Archivage des diffrentes versions de SW dans un logiciel de gestion de conguration de type SVN.
Possibilit dajout dun chip GPS ou dautres fonctionnalits si le temps restant le permet.
5.3 Cycle de dveloppement et organisation dans le temps
Le processus de dveloppement devait suivre le processus du cycle en V :
FIGURE 5 Le cycle en V
Ce cycle hirarchis minimise la perte de temps et les erreurs de conceptions en n de projet. Dans notre cas, le cahier des
charges rpondait largement lanalyse des besoins et la partie spcications correspondait une recherche documentaire.
La majeur partie du travail sest situe sur les phases de spcications et de conceptions.
Jtais responsable de la planication des tches sur lensemble du stage et de lorganisation de mon temps sur la semaine.
De mme, le choix des outils de travail et les orientations techniques relevaient de ma propre responsabilit. Jai pu ainsi
mimmerger plus rapidement sur le fond de ma problmatique sans me heurter demble un environnement inconnu.
Le projet ncessitait plusieurs travaux distincts en informatique, lectronique et en recherche documentaire. Le travail a
t rparti sur les 6 mois de stage laide dun diagramme de Gantt. (cf. pages suivantes)
5.4 Outils mis disposition
Mon principal environnement de travail comportait les lments suivants :
Station de travail sous environnement GNU/Linux > 2.6.
Un dpt subversion sur un serveur de lentreprise accessible en dehors du rseau interne.
Une station de soudure, 3 alimentations stabilises, un oscilloscope et un multimtre.
Possibilit de commande de composants auprs des entreprises Farnell, Dahms et Radio Spare.
Accs internet et IRC.
8
Documentation
Ln x
SDL
Ot
Armade s
Routage
Schmatq e
Chox de composants
PCB
Chox de 'mprme r
Envoe
So d re
Vrcaton de a carte
Programmation
Liaison SPl<->AMOLED
Pilote pour le contrlleur HX5116
Lason SPI
Geston des paramtres s ppmentares
Cong raton de 'cran dans FrameB her
Test et mes res des frq ences
Teste s r cran
lnterface SDL
Heo word
Horoge SDL +SDL_ttf
Concepton de 'nterface
lnterface t
Heo Word Ot
Fentre avance montrant es paramtres
Interface gnrae
Lason CAN
Rdacton de rapport
2010, Tr 2 2010, Tr 3
fvr. mars avr ma | n | . aot
Nom Travail
TPE Nom Demarre Termine Travail Duree Latitude Cot Assigne Etat d'avancement (%)
1 Documentation fevr. 1 juil. 30 130j 0 0
1.1 Ln x fvr. 1 | . 30 130| 0 0
1.2 SDL fvr. 1 | . 30 130| 0 0
1.3 Ot fvr. 1 | . 30 130| 0 0
1.4 Armade s fvr. 1 | . 30 130| 0 0
2 Routage fevr. 1 avril 27 62j 68j 0 0
2.1 Schmatq e fvr. 1 mars 3 23| 57| 0 0
2.2 Chox de composants mars 4 mars 8 3| 58| 0 0
2.3 PCB mars 9 avr 8 23| 56| 0 0
2.4 Chox de 'mprme r avr 9 avr 12 2| 58| 0 0
2.5 Envoe avr 13 avr 21 7| 57| 0 0
2.6 So d re avr 22 avr 26 3| 58| 0 0
2.7 Vrcaton de a carte avr 27 avr 27 1| 58| 0 0
3 Programmation fevr. 1 avril 30 65j 65j 0 0
3.1 Liaison SPl<->AMOLED fevr. 1 avril 30 65j 65j 0 0
3.1.1 Pilote pour le contrlleur HX5116 fevr. 1 avril 30 65j 65j 0 0
3.1.1.1 Lason SPI fvr. 1 mars 4 24| 106| 0 0
3.1.1.2 Geston des paramtres s ppmentares avr 28 avr 30 3| 65| 0 0
3.1.2 Cong raton de 'cran dans FrameB her fvr. 1 fvr. 3 3| 127| 0 0
3.1.3 Test et mes res des frq ences fvr. 1 fvr. 2 2| 128| 0 0
3.1.4 Teste s r cran fvr. 1 fvr. 4 4| 126| 0 0
4 lnterface SDL avril 28 mai 11 10j 58j 0 0
4.1 Heo word avr 28 avr 28 1| 57| 0 0
4.2 Horoge SDL +SDL_ttf avr 29 avr 30 2| 56| 0 0
4.3 Concepton de 'nterface ma 3 ma 11 7| 58| 0 0
5 lnterface t fevr. 1 fevr. 11 9j 121j 0 0
5.1 Heo Word Ot fvr. 1 fvr. 1 1| 121| 0 0
5.2 Fentre avance montrant es paramtres fvr. 2 fvr. 2 1| 121| 0 0
5.3 Interface gnrae fvr. 3 fvr. 11 7| 121| 0 0
6 Lason CAN fvr. 1 fvr. 3 3| 127| 0 0
7 Rdacton de rapport fvr. 1 | . 30 130| 0 0
6. DU PROCESSEUR AU NOYAU
6 Du processeur au noyau
Cette partie se veut tre une transition avant dentrer techniquement dans le sujet. Elle rsume les notions ncessaires
la comprhension de la problmatique et la justication des diffrents choix techniques. Lvolution des architectures de
ces puces a faonn les mthodes de conception des systmes dexploitations et des noyaux informatiques concernant les
fonctions vitales (gestion de la mmoire, commutation de contexte pour des systmes multi-tches,...). Les diffrences aux
niveaux suprieurs ne relvent que de choix stratgiques moins dpendants de llectronique et du processeur (organisation
des pilotes de priphriques, systmes de chiers, ...).
6.1 Rle dun systme dexploitation
Que ce soit au travail, dans notre voiture ou sur notre tlphone portable, nous sommes tous les jours confronts des
systmes dexploitations. Ils ralisent le lien entre lutilisateur et la partie lectronique du systme.
FIGURE 6 Rle dun systme dexploitation - Source : wikipdia
Son rle est en rgle gnrale de garantir un environnement multi-tches, premptible (il existe des exceptions dans le
monde de lembarqu) et stable pour lutilisateur. On peut le dcomposer en diffrents lments :
Le noyau : Cest la partie centrale du systme qui fait le lien avec les composants lectroniques. Il est compos de
plusieurs sous parties :
Lordonnanceur (cf Fig. 7) : Ce composant gre la premption et la partie multi-tches. laide dun algorithme
dordonnancement (Round Robin, Dead Monotics Analysis,etc..) il attribut un temps dexcution chaque proces-
sus au dtriment de tous les autres. Sa vitesse dexcution donne lillusion que tous les processus fonctionnent en
mme temps.
La gestion de la mmoire vive/virtuelle (cf Fig. 8) : La mmoire est le second lment le plus important aprs le
processeur. Chaque programme y est charg puis excut des adresses bien prcises. Cette partie veille ce que
aucun processus nempite sur une zone non permise ou dj utilise. Elle se charge galement de sauvegarder des
donnes non utilises en zone dchange si le systme manque de mmoire vive.
Ce composant est li un composant matriel le gestionnaire de mmoire virtuelle (MMU en anglais) et nest pas
toujours prsent dans certains systmes embarqus.
Gestion des pilotes : il offre une architecture et une API pour organiser les pilotes de priphriques.
Le systme de chier : il sert organiser les chiers et dossiers sur les disques de masses.
Gestion du rseau : permet de grer les protocoles rseau et de communications.
Le shell (interface utilisateur) : Il correspond la frontire sur laquelle lutilisateur peut communiquer ses instructions
au noyau. Dans les systmes actuels, on naccdent plus directement au shell, une interface graphique se charge de
11
6.1. RLE DUN SYSTME DEXPLOITATION 6. DU PROCESSEUR AU NOYAU
FIGURE 7 Lordonnanceur dun noyau - Source : wikipdia
FIGURE 8 La gestion de la mmoire au sein dun noyau Source : wikipdia
faire la liaison.
La conception dun programme de gestion des ressources est intimement lie larchitecture et outils proposs par les
processeurs. Les puces des premiers ordinateurs ne proposaient pas de systmes de protection de la mmoire ou des niveaux
de privilges. Cest lvolution du matriel qui a permit lapparition de programmes plus stables et qui a trac la voie au
dveloppement de systmes dexploitation. Lvolution la plus importante concerne la gestion de la mmoire vive.
12
6.2. ADRESSAGE MMOIRE 6. DU PROCESSEUR AU NOYAU
6.2 Adressage mmoire
6.2.1 Reprsentation
La mmoire peut tre souvent reprsente avec par un empilement doctets formant une zone rectangulaire. Chacun de
ses octets est adress depuis une origine correspondant lune des extrmits (cf Fig. 9).
FIGURE 9 Reprsentation de la mmoire
6.2.2 Mode rel
Avec les premiers processeurs, on pouvait adresser au maximum 64 Ko de mmoire. On se servait dadresses de 16 bits
pour organiser les programmes dans la mmoire : chaque adresse logique (une adresse manipule par le programmeur et par
les registres du processeurs) correspondait une adresse physique (adresse relle dune cellule mmoire dans la RAM). Il
fallait allouer la bonne zone chaque variable utilise en se souciant de ne pas grignoter une partie dj occupe.
Il faut attendre lapparition des premires puces ddies la gestion de la mmoire (MMU) pour amliorer la stabilit et la
puissance des systmes.
6.2.3 Mode protg et segmentation
La segmentation est le premier systme de protection mmoire activable ds que le processeur passe en mode protg.
On divise la RAM en diffrentes cloisons nommes segments auxquelles on attribut un type (code, segment, pile en lec-
ture/criture/excution) et un niveau de privilges. Si on se penche sur la famille x86, on retrouve ds le 386 des registres
ddis la navigation dans les segments de code, de pile et de donnes.
On se sert dun registre de 16 bits appel slecteur que lon multiplie par 16 pour pointer un segment et dun autre registre
appel offset pour se dplacer lintrieur de celui-ci. Ce mcanisme permet une traduction dadresse logique en adresse
physique.
Les informations de chacun des segments sont stockes dans un descripteur et chaque descripteur est stock en mmoire
dans la table des descripteurs.
Les niveaux de privilges permettent dinstaurer une hirarchie empchant un segment de faible privilge daccder
des segments de plus haut privilge.
13
6.2. ADRESSAGE MMOIRE 6. DU PROCESSEUR AU NOYAU
FIGURE 10 Adressage en mode protg
FIGURE 11 Reprsentation de la mmoire
14
6.2. ADRESSAGE MMOIRE 6. DU PROCESSEUR AU NOYAU
6.2.4 Pagination
Elle permet lutilisation dune mmoire virtuelle qui offre les avantages suivants :
Utilisation dune zone de swap sur le disque dur lorsque la limite de la Mmoire est atteinte.
Associer chaque processus son propre espace dadressage.
Facilite lallocation ou la dsallocation.
Ce mcanisme de protection sajoute juste aprs celui de la segmentation : ladresse obtenue en sortie de lunit de segmen-
tation nest plus une adresse physique mais un adresse linaire (virtuelle). On navigue alors dans deux espaces mmoires
spars par la MMU, un virtuel et un rel. Chacun de ces espaces est dcoup en zones (soit de 4ko ou de 4Mo) appeles
page pour lespace virtuel et cadre pour lespace physique. La MMU fait correspondre les pages et les cadres entre eux.
FIGURE 12 Reprsentation de la mmoire pagine
Le mcanisme de traduction se base sur des tables de pages, stockes dans un rpertoire de page, un peu comme lon
stocke des numros de tlphone dans un rpertoire tlphonique. Chaque rpertoire peut adresser au maximum 4 Go de
RAM. Ces structures sont stockes en mmoire physique. De mme, on peut attribuer des privilges pour grer la scurit.
FIGURE 13 Mcanisme simpli de la pagination
Il arrive que la translation dadresse choue et la MMU lve alors une interruption pour signaler un dfaut de page. Cela
peut se manifester galement par une adresse physique sur le zone dchange du disque dur et il faut demander au processeur
de recopier cette page dans la RAM si il reste de la place. Dans le cas chant, une page victime sera choisie pour tre son
15
6.3. LANCEMENT DUN SYSTME 6. DU PROCESSEUR AU NOYAU
tour stocke dans le swap.
6.2.5 Le mode noyau et le mode utilisateur
Chaque tche excute par le processeur possde galement des niveaux de privilges qui sont analyss pour savoir
quelles zones mmoires elle peut accder. Cest lOS de dnir les structures ncessaires la segmentation et la pagina-
tion pour sparer la RAM en deux zones distinctes : lespace noyau et lespace utilisateurs.
Dans lespace noyau, nous allons trouver les codes permettant dcrire sur un disque, de communiquer avec un priphrique,
de tuer une tche, dafcher un pixel lcran,etc ... Ces tches doivent avoir accs toute la mmoire pour grer lensemble
du systme. linverse, nous ne souhaitons pas que les tches provenant de lespace utilisateur puissent corrompre une
zone mmoire utilise pour crire sur un disque ou pour grer un niveau de tension dun priphrique. Cependant, on peut
communiquer dun espace lautre via les appels systmes, un mcanisme qui permet, via une interruption de passer dun
code utilisateur un code noyau.
FIGURE 14 Vision schmatique dun noyau monolithique modulaire - Source : wikipdia
6.3 Lancement dun systme
Le noyau et le shell ne sont pas les deux seuls composants logiciels ncessaires lutilisation dun systme. On peut
prendre lexemple dun ordinateur pour comprendre. Le noyau de votre systme dexploitation est le plus souvent un chier
stock sur votre disque dur. Mais cest galement le noyau qui permet votre systme de lire et dexcuter un chier sur
un disque dur. On se retrouve devant le problme de loeuf et de la poule. Il nous faut donc un composant intermdiaire qui
charge le noyau en mmoire, lexcute et qui lui passe la main.
Sur nos ordinateurs personnels, le dmarrage du systme suit lordre suivant :
1. On alimente lordinateur
2. Un programme POST sexcute (Power On Self Test) et vrie quil ny a pas de problme dalimentation lectrique.
3. Le BIOS met en place un systme minimal dentres sorties vers les diffrents priphriques et cherche un secteur de
dmarrage valide, le charge en mmoire et lexcute.
4. Le segment de dmarrage contient un bootloader qui charge et excute le noyau en mmoire.
une certaine poque, il tait ncessaire dinsrer une disquette pour dmarrer un systme. Sur le premier secteur de
disque du support se trouvait ce fameux bout de code qui chargeait le systme en mmoire laide de routines fournis par le
BIOS.
16
6.4. PRSENTATION DE GNU 6. DU PROCESSEUR AU NOYAU
Sur des plate-formes embarques, on retrouve le plus souvent le bootloader ou encore appel bootstrap. Le terme dsigne
littralement un chausse-pied ou lanneau situ en haut des bottes permettant de les chausser plus facilement.
Lcriture dun chargeur de dmarrage est relative au processeur (la premire adresse excute au dmarrage varie selon les
puces). Sur les PC x86, on peut citer les plus usits dans le monde de GNU comme Lilo, Grub ou SysLinux.
(a) Grub (b) Lilo
(c) SysLinux
FIGURE 15 Diffrents chargeurs de dmarrage sous GNU/BSD
6.4 Prsentation de GNU
En 1984, en chercheur en intelligence du laboratoire du MIT, Richard Matthew Stallman (RMS), se lance dans la ralisa-
tion dun systme dexploitation libre de droits. Son initiative cherche faire renatre la philosophie des premiers instants de
linformatique o le logiciel ntait que la cerise sur le gteau offert par les industriels aprs lacquisition de leurs machines
onreuses. GNU est un anagramme rcursif signiant "Gnus Not Unix" pour rappeler quil est un systme trs proche de
Unix et en mme temps un systme indpendant de toute pression industrielle de la part de AT&T, socit cratrice de UNIX.
FIGURE 16 Logo de GNU - Source : wikipdia
17
6.5. PRSENTATION DE LINUX 6. DU PROCESSEUR AU NOYAU
RMS est aussi lorigine de la licence public gnrale (GPL) qui interdit toute fermeture de code source dun logiciel
ou dun driv publi sous GPL. Cette notion est galement appele "gauche dauteur" ou "copyleft" en rfrence au "droit
dauteur" ou copyright.
En 1990, le devient sufsamment abouti mais il manque une pice essentielle au puzzle : le noyau. Cest ce moment
quintervient un jeune tudiant nlandais.
6.5 Prsentation de Linux
En 1991, Linus Torvalds, lve en informatique luniversit de Helsinki, travaillait grer la commutation des tches
en mode protg sur son PC compatible 80386. Il se met en tte de crer un vritable systme dexploitation et un noyau
plus performants que ceux quil tudie en classe (Minix). Le 5 octobre 1991, il publie sur le serveur Usenet ddi Minix
la version 0.0.1 de Linux. Convaincu par RMS de publier son code sous la licence GPL, Linus permit au monde entier de
disposer de son travail et dy contribuer. Le noyau Linux devient le noyau le plus utilis avec GNU.
FIGURE 17 Tux la mascotte de Linux - Source : wikipdia
Depuis sa version 1.2, (la version actuelle en dveloppement est la 2.6.) Linux est un noyau monolithique modulaire,
entirement paramtrable et ouvert sur les standards industriels. Le code est entirement cod en C (aucune partie en C++).
Il a t conu pour utilis le compilateur GCC dont il utilise beaucoup de macros non standards. Le noyau ne compilera pas
avec un nimporte quel compilateur ANSI C.
Le minimum ncessaire pour le faire fonctionner est un processeur 32 bits avec ou sans bloc MMU.
6.5.1 Dveloppement
Le dveloppement de Linux est supervis par une hirarchie prcise au sein de la communaut, le haut de celle - ci tant
toujours reprsent par Linus Torvalds.
Les publications de codes se font au travers des branches de dveloppement qui intgrent les changements majeurs et les
nouvelles fonctionnalits. Au bout dun certain temps, si une branche de dveloppement est assez mature (cf Fig. 18), elle
devient une base pour la prochaine version stable. Une branche stable du noyau est publie tous les deux ou trois ans. Les
branches peuvent tre identies par leur numro de version :
Le numro de branche est pair pour les versions stables. Exemple : 1.0, 2.0, 2.4.
Il est impair pour les branches de dveloppement. Exemple : 2.1 , 2.5.
Les publications mineurs se voient attribuer un ou des numros supplmentaires. Exemple : 2.2.22, 2.5.9.
18
6.6. UN COUPLE GAGNANT 6. DU PROCESSEUR AU NOYAU
FIGURE 18 Cycle de dveloppement - Source : Association Free-Electrons
6.6 Un couple gagnant
Les parts de march de GNU/Linux ne cessent de monter en tant qu OS de station de travail, mais reste encore minori-
taire (0,80 % en avril 2010). Cependant, il est de plus en plus utilis dans le monde de lembarqu (26 % en 2008).
Le succs dans le monde des systmes intelligents peut sexpliquer dun point de vue marketing :
Le code de GNU et de Linux sont mis disposition sans frais.
Les outils ncessaires leur mise en place et utilisation sont galement libres de droits.
Une communaut bnvole et gigantesque, toujours en activit autour d Internet. (Le dveloppement de Fedora 9 est
estim 10,2 milliards de dollars de $)
Les avantages sont avant tout techniques :
Linux est certi POSIX.
Linux fonctionne sur plus de 20 architectures diffrentes.
Un grand nombre de librairies et de composants compatibles GNU existent sur la toile avec un code ouvert.
La similarit du systme avec UNIX est un atout pour les dveloppeurs.
Des versions allges permettent de lutiliser sur des systmes non dots de MMU (CLinux) (Un seul processus est
lanc sans commutation de contexte).
La modularit du noyau permet de ladapter au ressources de la machine. On peut faire tourner un noyau, GNU et un
serveur graphique sur des machines avec 8 Mo de mmoire vive et 50 Mo de capacit de disque.
Possibilit de support Temps Rel.
Existence de distributions prtes lemploi suivant lusage : Tlphone, serveur, routeur ...
6.7 Linux et la mmoire
Les mcanismes de segmentation et de pagination peuvent se retrouver difcile grer dune architecture une autre. Le
support de la segmentation sur une architecture RISC est limit, contrairement la pagination. Ces deux mcanismes offrent
des possibilits similaires, Linux ne supporte donc que la segmentation au minimum. Tous les processeurs auront le mme
adressage logique avec un nombre limit de segments uniquement enregistr dans la table globale des segments. On aura :
Les segments du Noyau (Code et Donnes en Ring 0)
Les segments de donnes utilisateurs (Code et Donnes en Ring 3)
Un TSS par coeur. Le TSS (Task Segment State) est une structure qui permet de sauvegarder le contexte lors des
interruptions ou des commutations de tches
Un segment pour une table locale des descripteurs de segments. Cette LDT ne contiendra quun descripteur nul et est
commune tous les processus
4 Segments pour le code et les donnes du BIOS (ou chargeur de dmarrage).
La pagination est implmente avec un rpertoire principale contenant les autres rpertoires de pages.
19
6.8. NAVIGUER DANS LES SOURCES DU NOYAU 6. DU PROCESSEUR AU NOYAU
FIGURE 19 Segmentation sous Linux
FIGURE 20 Pagination sous Linux
6.8 Naviguer dans les sources du Noyau
Les diffrents rpertoires du noyau sont rpertoris dans le tableau de la gure 21.
Le rpertoire contenant la documentation se rvle trs important dans le cadre de lembarqu puisquil nexiste aucune
documentation spcialise pour une autre architecture que x86. Lensemble des procdures pour initialiser les ports SPI ou
I
2
C restent des spcicits du monde de lembarqu et les seules informations se trouvent le dossier source du noyau.
En dehors du dossier /arch, relatif larchitecture du CPU, le reste du code doit tre portable. Cette compatibilit se base sur
des macros et des fonctions qui cre une interface pour les parties propres au processeur :
Problme dendianness
Accs aux ports E/S en mmoire
LAPI pour le DMA
LAPI interne du noyau est en constante volution et il nest pas rare quun pilote ncessite une rcriture aprs la
publication dune nouvelle version non majeure. La partie suivante parle de ce point plus en dtail.
20
6.8. NAVIGUER DANS LES SOURCES DU NOYAU 6. DU PROCESSEUR AU NOYAU
arch/ Code dpendant de larchitecture
COPYING Conditions de copie de Linux (GNU GPL)
CREDITS Contributeurs principaux de Linux
crypto/ Bibliothques de cryptographie
Documentation/ Documentation du noyau.
drivers/ Pilotes de priphriques (drivers/usb/, etc.)
fs/ Systmes de chier (fs/ext3/, etc.)
include/ Enttes du noyau
include/asm<arch> Enttes dpendant de larchitecture
include/linux Enttes du coeur du noyau Linux
init/ Initialisation de Linux (contient main.c)
ipc/ Code utilis pour la communication entre processus
kernel/ Coeur du noyau Linux
lib/ Bibliothques diverses (zlib, crc32...)
MAINTAINERS Responsables de parties du noyau
Makele Makele principal (dnit arch et version)
mm/ Code de la gestion mmoire
net/ Support rseau (protocole uniquement)
README Introduction et instructions de compilation
REPORTINGBUGS Instructions pour le rapport de bogues
scripts/ Scripts utiliss en interne ou en externe
security/ Implmentations du modle de scurit (selinux...)
sound/ Support du son et pilotes
usr/ Utilitaires
FIGURE 21 Les diffrents dossiers du noyau et le type de code quils contiennent
FIGURE 22 Taille des diffrents rpertoires - Source : Association Free Electrons
21
6.9. LES PILOTES SOUS LINUX 2.6 6. DU PROCESSEUR AU NOYAU
6.9 Les pilotes sous Linux 2.6
Les pilotes sont le plus souvent crit sous forme de modules. Ce sont des petits bout de code que lon peut charger dy-
namiquement pendant lexcution du systme ou compiler statiquement dans le noyau. Pour chacun de ses modules, il faut
dnir une licence pour son code : GPL, Dual BSD/GPL, DUAL MPL/GPL ou Propritaire. Cette licence va dterminer le
comportement de son code avec les autre modules disponibles. Si un module est propritaire, il naura pas le droit dinteragir
avec un autre module. Cest pourquoi la plupart des modules et des pilotes sont publis sous licence libre ou open source.
La gestion des priphriques a grandement volue depuis les premires versions. Cette politique oblige souvent le code
tre rcrit, mais du fait de louverture du code, il est assez ais de faire la transition. Si lon prends lexemple de lAPI USB,
elle a chang trois fois et est devenue l implmentation la plus rapide du protocole. Sous Windows XP, elle a galement
chang trois fois, mais du fait de la fermeture du code, il a t ncessaire de garder une rtro compatibilit pour les pilotes
binaires. Ces oprations sont un cot en dveloppement, scurit, stabilit et performance.
On peut galement crire un pilote en espace utilisateur. Cela prsente lavantage de pouvoir utiliser nimporte quel langage
et assure de ne pas crer derreur critique dans la mmoire noyau. Il nest pas rare de voir des systme de gestions de pri-
phriques utiliser les deux espaces : une partie noyau et une partie utilisateur qui communiquent entre eux (On peut citer le
fameux serveur graphique X Window)
Il existe 3 types de pilotes diffrents :
Pilotes de caractres : communication avec le matriel via un ux de caractre. (Clavier, souris, port srie, consoles)
Pilotes de blocs : communication avec le matriel via des blocs de donnes. (Disques durs, systme de chiers, etc...)
Pilotes Rseaux : communication avec le matriel via un protocole de communication
Des pilotes utilisant le modle uni.
Chacun de ses priphriques se trouve en espace noyau. Il est courant de crer un lien avec lespace utilisateur ( au moyen
des dossier /proc et /sys). Il apparat comme un chier dans larborescence sur lequel les oprations dcriture et de lecture
se font comme avec nimporte quelle autre chier. Ces actions sont dnies dans le module laide dune structure et de
pointeurs de fonctions.
6.10 Le framebuffer
Ce composant permet de dialoguer directement avec la mmoire vido. Il permet de saffranchir de systme de fen-
trage plus lourd comme le serveur X. Cest un atout majeur dans le monde de lembarqu puisque lon peut intgrer un
vritable systme graphique avec une consommation de ressources amoindrie. Cest ce composant que lon peut retrouver
au dmarrage de la plupart des "Live CD" GNU/Linux.
FIGURE 23 Dmarrage de knoppix avec framebuffer - Source : Wikipdia [6]
22
7. RALISATION
7 Ralisation
Cette partie prsente les diffrents choix techniques et les outils qui ont t ncessaires la ralisation du projet.
7.1 Choix de la plateforme GNU/Linux
7.1.1 Carte retenue
La solution retenue tait une carte propose conjointement par lassociation franaise et lentreprise ARMADEUS. Les
raisons de ce choix sont les suivantes :
Un support gratuit en franais par mail ou sur IRC [7] en contact direct avec les dveloppeurs.
Une base de donnes techniques complte base sur le moteur de Wikipdia [8].
Schmas des cartes disponibles en open source.
Une utilisation 100% doutils de dveloppement libres.
Un systme avec MMU et FPGA pour une stabilite accrue et volution facilite vers de nouveaux projets.
Un prix infrieur par rapport aux cartes de mmes caractristiques.
Ces points constituent un rel avantage, car il nexiste actuellement aucun ouvrage traitant directement de la ralisation
de pilotes ou de limplmentation de GNU/Linux sur une carte embarque. Les seuls ouvrages existants concernent les
plateformes x86 des PC actuels. La seule manire de se documenter restent les sources de Linux et les codes sources
disponibles sur internet.
Association et compagnie Armadeus
Lassociation ARMADEUS Project est une organisation but non lucrative proposant des solutions embarques bases
sur des logiciels libres conues via lentreprise ARMADEUS Systems. Elle propose des kits de dveloppement bats cots
comprenant :
Une carte "processeur" comprenant :
Un processeur de chez Freescale.
Une mmoire volatile.
Une mmoire non volatile.
Un FPGA de chez Xilinx.
Une carte de dveloppement comprenant divers priphriques connects aux blocs fonctionnels du processeur.
FIGURE 24 Logo de lentreprise Armadeus
23
7.1. CHOIX DE LA PLATEFORME GNU/LINUX 7. RALISATION
Le prix de la carte processeur varie en fonction de la quantit de mmoire et la puissance du processeur. Celui de la carte
de dveloppement change en suivant le nombre de priphriques de communication dj souds et congurs.
Les cartes choisies furent la carte processeur apf27 et la carte de dveloppement APF27DevFull. Les caractristiques sont
prsentes la gure 26.
(a) La carte processeur APF27 (b) La carte processeur APF27DevFull
(c) Les deux cartes assembles
FIGURE 25 Les cartes de dveloppement de lAPF27 et APF27Dev
24
7.1. CHOIX DE LA PLATEFORME GNU/LINUX 7. RALISATION
Carte processeur APF27 [9]
Processeur Freescale i.MX27 (ARM9 @ 400MHz)
FPGA Xilinx Sparant 3A XC3S200A
RAM Mobile DDR, 2 64 MB
FLASH Mobile NAND, 256 MB
Module Processeur [10]
6 x RS232
2 x I2C
3 x SPI
2 x SSI (High speed synchronous serial port)
1 x USB OTG Hi-Speed host
1 x USB Host (Hi-Speed)
1 x USB Host (Full-Speed)
1 x 10/100Mbits Ethernet MAC
2 x SD/MMC
1 x RTC (no battery)
1 x PWM 16bits resolution
6 x Timer 32 bits with input capture/output compare
1 x adjustable Watchdog
1 x LCD controller STN / TFT interface resolution up to 800 x 600 px, 18 bits
1 x MPEG/H.264 codec
1 x CSI (CMOS sensor interface)
Up to 107 total I/O pins multiplexed with most dedicated functions for pin efciency (GPIO)
Carte de dveloppement APF27Dev [10]
One high speed and one full speed USB 2.0 port
Touchscreen controller
One microSD
Audio in/Stereo audio out controller (TSC2101 codec)
2 user leds : one connected to the i.MX27 microprocessor and the other to the FPGA
2 user switches : one connected to the i.MX27 microprocessor and the other to the FPGA
CAN(1) controller
ADC (7 channels, 10 bits) type MAX1027(1)
DAC (2 channels, 10 bits) type MAX5821(1)
RTC with backup battery(1)
HDMI/DVI controller.(1) For DVI usage, an additional HDMI/DVI cable is required
Reset switch
FIGURE 26 Caractristiques de lAPF27 et APF27Dev chez T & S - Le nombre de I/O est relatif au nombre de module activs.
25
7.2. PRSENTATION DE LARCHITECTURE ARM (32 BITS) 7. RALISATION
7.2 Prsentation de larchitecture ARM (32 bits)
ARM est labbrviation de Advanced Risc Machine. Cette architecture a t dveloppe lorigine pour un ordinateur
de la socit ACORN puis est devenue une offre de coeur part entire. La spcicit de lentreprise ARM Ltd est de ne
vendre aucune puce physique mais uniquement les IPs aux diffrents fondeurs ou dveloppeurs.
Les coeurs ARM ont inond le march, notamment dans le domaine de la tlphonie mobile qui utilise de plus en plus
des systmes dexploitations semblables ceux de nos ordinateurs. Nous pouvons citer les drivs de Linux avec Maemo,
Symbian de Nokia ou Android sur le Nexus One de Google/HTC ou dans un autre registre liPhone OS de la marque la
pomme.
LIP la plus connue est lARM7TDI comportant un niveau de pipeline sur 3 tages et une possibilit de bascul le jeu dins-
tructions de 32 16 bits (Mode THUMB), mode utilse pour une conomie de mmoire dans le monde de lembarqu. Son
successeur, le ARM9, passe sur 5 niveaux de pipeline.
ARM Ltd. propose les blocs logiques suivants dans ses processeurs :
MMU : disponible sur les ARM710 et ARM9.
DSP
FPU
Jazelle : une machine virtuelle cable dans le processeur
La majorit des fondeurs proposent des coeurs ARM aujourdhui (Fresscale,Qualcomm,Marvell, Cypress, NXP, STMi-
croelectronics, TI, Samsung, Toshiba..).
7.3 Composants logiciels
Tous les composants cits dans cette partie sont publis sous une licence libre de type GPLv2 ou BSD.
7.3.1 Sur lordinateur
Pour crer des binaires excutables ARM sans utiliser la plateforme (compiler sur la carte prendrait normment de
temps), il faut utiliser une chane de compilation croise. La dmarche suivre pour la construire est la suivante :
1. Rcuprer les enttes du noyau.
2. Rcuprer, congurer et compiler les outils pour la manipulation des binaires de larchitecture embarque (assembleur,
diteur de lien, inspecteur de code et archiveur de code au minimum) et les installer sur la machine.
3. Installer une premire version du compilateur pour "cross compiler" les librairies standards (uClibc).
4. Recongurer et recompiler une version de compilateur avec les librairies cres.
5. Rcuprer les sources du noyau, les congurer et les recompiler.
6. Compiler chaque programme ou librairies avec ses dpendances et les intgrer au futur systme de chiers de la carte.
Ces tapes peuvent se rveler complexe : un simple programme peut recqurir 10 dpendances qui dpendent elles
mmes dautres codes .... Heureusement, il existe des outils spcialiss permettant la gneration de la chane de compilation
croise, mais aussi de modier la plupart des composants du systme nal. Nous pouvons cit LTIB, OpenEmbedded, PTX-
dist,Openwrt ou Buildroot. Cest ce dernier qua choisi ARMADEUS pour travailler sur ses cartes et elle nest pas la seule :
THALES, ATMEL, GUMSTIX sen servent depuis de nombreuses annes, bien avant la sortie dune version stable.
Buildroot OpenEmbedded Openwrt
Avantages volutif,puissant, conguration
graphique,Gneraliste
Gneraliste Cration de paquets
Inconvnients Gourmand en ressources, pas de
paquets
Lourd, conguration avec des -
chiers textes
Lourd, orient IAD
26
7.3. COMPOSANTS LOGICIELS 7. RALISATION
7.3.2 Buildroot
lorigine, cet outil ntait utilis quen interne par les dveloppeur de la librairie uClibc. Depuis 2009, il est devenu
un outil part entire. Sa relative simplicit dutilisation vient du fait quil utilise des outils bien connus de la part de la
communaut GNU et des dveloppeurs du noyau Linux.
FIGURE 27 Interface buildroot sous ncurses.
Il est constitu dun ensemble de Makele et de script shell qui tlchargent, congurent, compilent et intgrent automa-
tiquement les programmes souhaits. Il est assez facile dintgrer ses propres patchs ou librairies en ajoutant ses chiers de
conguration type Makele dans la gestion des dpendances et de la construction.
Une fois la phase de compilation termine, on obtient 3 chiers :
1. Un noyau Linux bootable
2. Une image du systme de chier jffs2
3. Un binaire U-Boot
7.3.3 Sur la carte
Les composants utiliss sur la plateforme sont rpertoris dans le tableau suivant :
Bootloader U-Boot
Noyau Linux
Librarie uClibc
Shell Busybox
Compilateur GCC
Systme de chier jffs2
FIGURE 28 Composants logiciels utiliss sur la carte.
U-Boot : Ce bootloader possde une pile TCP/IP et une couche permettant de asher la mmoire vive. Passer par le
rseau ethernet pour charger les composants reprsente un gain de temps non ngligeable.
Linux : Sa conguration passe par de nombreux patchs mais des modules sont dja prsents pour chaque plate-forme.
27
7.4. INTERFACES AVEC LA CARTE 7. RALISATION
uClibc : Cest une librairie statique fournit pour lutilisateur du systme, lui permettant dutiliser simplement les ap-
pels systmes dnis dans le noyau. Elle prsente lavantage dtre rduite par rapport sa grande soeur la glibc et
sufsante pour les sytmes embarqus.
glibc uClibc
"hello world" 475k 25k
busybox 843k 311k
FIGURE 29 Comparaison de la taille de la glibc et la uClibc en compilation statique
Busybox : Ce programme rimplmente toutes les commandes du systme GNU dans un seul excutable pour cono-
miser de la RAM. Il est trs rpendu dans les produits grands publics (Freebox par exemple).
GCC : (Gnu Compiler Collection ) La collection ofcielle de compilateur GNU. Elle supporte un grand nombre de
langages pour une multitude de plate-formes (dont ARM).
jffs2 : (Journaling Flash File System) Un systme de chier journalis qui rpartie lcriture sur lensemble des cel-
lules de la mmoire ash pour conomiser le matriel. Une compression est ralise pour stocker autant de donnes
que possible.
NAND ash address range Type
0x00000000 - 0x0009FFFF (640KB, incluant la NAND SPL et 384KB
dconomie de mmoire pour les bloc dfectueux)
U-Boot
0x000A0000 - 0x000FFFFF (384KB) Variables denvironnement U-BOOT
0x00100000 - 0x0017FFFF (512KB) FPGA bitle
0x00180000 - 0x0067FFFF (5MB) Image du noyau Linux
0x00680000 - Limite de la FLASH Systme de chiers racine
FIGURE 30 Rpartition des diffrents composants au sein de la RAM de lAPF27
7.4 Interfaces avec la carte
Lentre et la sortie standards de la carte correspondent la liaison srie (ce qui corresponds respectivement au clavier
et lcran sur un ordinateur). La carte mule un terminal la manire dun modem auquel on peut envoyer des ordres via
un cable Null-Modem (Rx Tx crois) avec une conguration 115200 bauds 8N1.
Le transfert de chiers se fait via un protocole driv de FTP depuis le PC jusquen RAM de la carte qui copie les chiers
de manire rsidente sur la mmoire ash.
La communication depuis la machine hte se fera depuis un logiciel de communication vers des modems. Sous Linux,
les plus connus restent Minicom, Kermit et GtkTerm.
7.5 cran AMOLED Tactile
Lcran utilis est un cran P0430WQLB-T de la socit Densitron avec une rsolution en RGB de 480 x 272. Il possde
en plus une interface tactile rsistive dj pose sur lcran :
28
7.5. CRAN AMOLED TACTILE 7. RALISATION
FIGURE 31 Liens entre les diffrentes mmoires
FIGURE 32 Utilisation de la carte sur le rseau
FIGURE 33 cran P0430WQLB-T de la socit Densitron
29
7.5. CRAN AMOLED TACTILE 7. RALISATION
Lavantage par rapport aux technologies matrices actives est un contraste de couleur beaucoup plus nette et , dans la
plupart des cas, une puissance consomme beaucoup plus faible.
Les crans AMOLED possdent comme leurs cousins alphanumriques, une interface de communication standardise avec
laquelle. La puce utilise est un HX5116.
FIGURE 34 Interface de la puce HX5116
7.5.1 Interface RGB Parallle
Cette interface est hrite des premiers moniteurs VGA que les gnrations suivantes nont pas fait disparatre. Ces
appareils utilisaient un canon lectrons qui balayait une grille tricolore an de faire apparaitre les pixels. La projection
partait du bord haut gauche de lcran et descendait ligne par ligne avant de retourner son point de dpart. On se servait de
3 signaux pour grer ces vennements dans le temps et trois signaux analogiques codant la valeur du pixel afch.
FIGURE 35 Les premiers moniteurs RGB
Dans notre cran, on garde le mme principe en ajoutant les lments communs la majorit des composants num-
riques : une horloge, une entre de validation et un bus de donnes parrallle de 24 bits (il est possible dutiliser un bus
srie).
30
7.5. CRAN AMOLED TACTILE 7. RALISATION
FIGURE 36 Interface parallle 480x212 RGB
Le contrleur LCD du microprocesseur ne peut contrler que des crans dont la rsolution RGB est infrieure ou gale
18 bits. Nous relierons les 2 bits de poids faible de chaque couleur la masse, nous laissant encore largement assez de
couleurs pour notre projet.
7.5.2 Interface SPI "3-wire"
Cette interface permet la conguration de lcran et lui spcie linterface utiliser. La particularit de cette interface
est quelle nutilise quun seul l, contrairement la carte embarque qui utilise un bus de deux ls. Aucun problme de
connexion ne se pose si lon ne souhaite communiquer que dans un seul sens. On a trois ls : une horloge, un bus de donns
et une entre dactivation.
Linitialisation de lcran en mode 480 x 272 en mode RGB requiert une trame spcique la mise sous tension de
lcran. Si lon souhaite lire des donnes prsentes en mmoire du contrleur, il faut user dune petite astuce la conception
et la programmation sur le seul bus de communication.
Pour permettre au contrleur de lcran de prendre la main sur le bus, il faut forcer ltat de la pin MOSI ltat haut en
envoyant constamment 0xFF pendant la procdure de rception.
7.5.3 criture du pilote
Choix de la connexion sur la carte
Il faut un bus SPI libre sur la carte pour communiquer avec lcran. Daprs la documentation, la carte possde trois bus
SPI. Nous souhaitions prservez les ports USB et nous avons sacri lun des deux bus grant la connexion une carte MMC
en se basant sur le bus 3. Les informations ncessaires pour congurer les diffrents lments se trouvent dans le dossier
documentation du noyau. Dans notre cas, cest le chier Documentation/spi/spi-summary qui fut dune grande aide.
La procdure est la suivante :
1. Dclarer les ports SPI prsents sur la carte (cette partie tait dj prsente dans les sources fournit par ARMADEUS).
2. Dclarer les priphriques utiliss sur les ports.
3. Indiquer le pilote utiliser.
31
7.5. CRAN AMOLED TACTILE 7. RALISATION
(a) Format des donnes verticale
(b) Format des donnes horizontales
(c) Forme de lhorloge et des donns sur le bus
FIGURE 37 Chronogrammes des diffrents signaux de lcran
32
7.5. CRAN AMOLED TACTILE 7. RALISATION
FIGURE 38 SPI 3 wire
(a) Connexion des bus MOSI et MISO ensemble
(b) mission de de 0xFF sur le bus pendant lenvoie
FIGURE 39 Connexion dun bus SPI 3-wire vers un bus half duplex
Dclaration du priphrique
On dclare le priphrique avec le bout de code suivant :
1
2 static struct spi_board_info spi_board_info[] __initdata = {
3 /
*
....
*
/
4
5 #ifdef CONFIG_LCD_TS_MODULE
6 {
7 .modalias = " l c d _ t s ",
8 .controller_data = &lcd_ts_hw,
9 .max_speed_hz = 8000000, /
*
8MHz
*
/
10 .bus_num = 2, /
*
SPI3
*
/
11 .chip_select = 0,
33
7.5. CRAN AMOLED TACTILE 7. RALISATION
12 .platform_data = &apf27_lcd_ts_config,
13 },
14 #endif /
*
LCD T&S
*
/
15 };
16
17 /
*
....
*
/
18 #ifdef CONFIG_LCD_TS_MODULE
19
20 #define NCSPIN (GPIO_PORTE | 21) /
*
Adresse des PINS utilisees. On se sert des headers
fournit par Motorola
*
/
21 #define RESETPIN (GPIO_PORTE | 19)
22
23
24
25 static int lcd_ts_pins [] ={ /
*
Pins en sortie
*
/
26 (NCSPIN | GPIO_GPIO | GPIO_OUT),
27 (RESETPIN | GPIO_GPIO | GPIO_OUT),
28
29 };
30
31 static int lcd_ts_init(struct spi_device
*
spi){
32
33 gpio_set_value(RESETPIN,1); /
*
Les fonctions gpio_set_value et
mxc_gpio_setup_multiple_pins sont relatif a la pateforme MXC
*
/
34 gpio_set_value(NCSPIN,1);
35 return mxc_gpio_setup_multiple_pins(lcd_ts_pins, ARRAY_SIZE(lcd_ts_pins), "LCD_TS"
);
36
37 }
38
39 static int lcd_ts_exit(struct spi_device
*
spi){
40
41 gpio_set_value(NCSPIN,1);
42 gpio_set_value(RESETPIN,0);
43 mxc_gpio_release_multiple_pins(lcd_ts_pins, ARRAY_SIZE(lcd_ts_pins));
44 return 0;
45
46
47
48 }
49 static int lcd_ts_reset (int value){
50 gpio_set_value(RESETPIN,value);
51 return 0;
52
53
54 }
55 static void lcd_ts_cs(u32 command)
56 {
57 if (command == SPI_CS_DEASSERT)
58 gpio_set_value(NCSPIN, 1);
59 else
60 gpio_set_value(NCSPIN, 0);
61 }
62
63 static struct spi_imx_chip lcd_ts_hw = {
64 .cs_control = lcd_ts_cs,
65 };
66
67 static struct lcd_ts apf27_lcd_ts_config = {
68
69 .init = lcd_ts_init,
70 .exit = lcd_ts_exit,
71 .reset = lcd_ts_reset,
72 .ncspin = (int) NCSPIN,
73 .resetpin = (int) RESETPIN,
74
75 };
76 #endif
Les arguments sont les suivants :
modalias : le nom du module correspondant au pilote.
controller_data : un pointeur vers une structure de contrl propre la plateforme (Chip Select).
34
7.5. CRAN AMOLED TACTILE 7. RALISATION
max_speed_hz : vitesse maximale du bus.
bus_num : bus de communication du processeur (SPI3).
chip_select : prsence dune pin CS.
platform_data : un pointeur sur une structure contenant les adresses des fonctions dinitialisation du priphrique es-
clave.
Ces fonctions dinitialisation se trouvent plus bas dans le code. Elles sont crites suivants les procdures de dmarrage de
lcran trouves dans la datasheet :
FIGURE 40 Squence dallumage de lcran
criture du pilote
Cette section de code se situe au niveau de la communication SPI proprement parl, il ny a plus de conguration
matriel.
Le pilote prend la forme dun module que lon peut appeler et qui est reli au bon priphrique SPI via la structure vue dans
la partie prcdente. On reprends les informations de la plate-forme via une structure :
1
2 struct lcd_ts {
35
7.5. CRAN AMOLED TACTILE 7. RALISATION
3 struct display_device
*
display_dev;
4 struct spi_device
*
spi ;/
*
SPI BUS
*
/
5 int (
*
init)(struct spi_device
*
spi);
6 int (
*
exit)(struct spi_device
*
spi);
7 int (
*
reset)(int value);
8 int ncspin;
9 int resetpin;
10 };
Puis on dnit un driver SPI via une nouvelle structure :
1 static struct spi_driver lcd_ts_driver = {
2 .probe = lcd_ts_probe,
3 .remove = lcd_ts_remove,
4 .shutdown = lcd_ts_shutdown,
5 .suspend = lcd_ts_suspend,
6 .resume = lcd_ts_resume,
7 .driver = {
8 .name = DRIVER_NAME,
9 .owner = THIS_MODULE,
10 },
11 };
Chacun des lments est un pointeur sur une fonction de conguration du priphrique. Toutes les rfrences doivent tre
dnies. Les fonctions shutdown, suspend et resume ne seront pas utilises et ne renverront que 0.
La fonction probe correspond linitialisation du priphrique sur le bus.
1 static int lcd_ts_probe (struct spi_device
*
spi_device){
2
3 printk("LCD SPI Bus Re g i s t r a t i o n \ n");
4 struct lcd_ts
*
lcd_data;
5 int err = -EINVAL;
6 lcd_data = (struct lcd_ts
*
)(spi_device->dev.platform_data);
7 lcd_data->init(spi_device); /
*
Initialise GPIO
*
/
8
9 lcd_data->spi = spi_device;
10
11 lcd_data->spi->mode = SPI_MODE_0;
12 lcd_data->spi->bits_per_word = 8;
13 lcd_data->spi->dev.power.power_state = PMSG_ON;
14 err = spi_setup(lcd_data->spi);
15 printk(" Renvoi e du s e t up %i \ n",err);
16
17 lcd_ts_init_screen(lcd_data);
18 return 0;
19
20 }
Cette fonction appelle la fonction lcd_ts_init_screen qui va transmettre la trame de conguration de lcran conformment
la datasheet (cf Fig.41) :
1 static int lcd_ts_init_screen( struct lcd_ts
*
lcd_ts_dev){
2
3 /
*
gpio_set_value(lcd_ts_dev->resetpin,1);
*
/
4
5 /
*
initial procedure for 24-bit parallel RGB (DE)
*
/
6 lcd_ts_write (lcd_ts_dev, 0x04, 0x23); /
*
set display mode 24-bit parallel RGB (DE)
*
/
7 lcd_ts_write (lcd_ts_dev, 0x05, 0x82); /
*
set display mode
*
/
8 lcd_ts_write (lcd_ts_dev, 0x07, 0x0F); /
*
set driver capability
*
/
9 lcd_ts_write (lcd_ts_dev, 0x34, 0x18); /
*
set display timing
*
/
10 lcd_ts_write (lcd_ts_dev, 0x35, 0x28); /
*
set display timing
*
/
11 lcd_ts_write (lcd_ts_dev, 0x36, 0x16); /
*
set display timing
*
/
12 lcd_ts_write (lcd_ts_dev, 0x37, 0x01); /
*
set display timing
*
/
13 lcd_ts_write (lcd_ts_dev, 0x02, 0x02); /
*
OTP On
*
/
14 lcd_ts_write (lcd_ts_dev, 0x0A, 0x79); /
*
VGHVGL=+/-6V
*
/
15 lcd_ts_write (lcd_ts_dev, 0x09, 0x20); /
*
VGAM1OUT=4.85V
*
/
16 lcd_ts_write (lcd_ts_dev, 0x10, 0x6A); /
*
set R slop
*
/
17 lcd_ts_write (lcd_ts_dev, 0x11, 0x6A); /
*
set G slop
*
/
18 lcd_ts_write (lcd_ts_dev, 0x12, 0x68); /
*
set B slop
*
/
19 lcd_ts_write (lcd_ts_dev, 0x13, 0x00); /
*
set R_0
*
/
20 lcd_ts_write (lcd_ts_dev, 0x14, 0x04); /
*
set R_10
*
/
36
7.5. CRAN AMOLED TACTILE 7. RALISATION
FIGURE 41 Initialisation de lcran dans la documentation
37
7.5. CRAN AMOLED TACTILE 7. RALISATION
21 lcd_ts_write (lcd_ts_dev, 0x15, 0x05); /
*
set R_36
*
/
22 lcd_ts_write (lcd_ts_dev, 0x16, 0x05); /
*
set R_80
*
/
23 lcd_ts_write (lcd_ts_dev, 0x17, 0x04); /
*
set R_124
*
/
24 lcd_ts_write (lcd_ts_dev, 0x18, 0x03); /
*
set R_168
*
/
25 lcd_ts_write (lcd_ts_dev, 0x19, 0x02); /
*
set R_212
*
/
26 lcd_ts_write (lcd_ts_dev, 0x1A, 0x02); /
*
set R_255
*
/
27 lcd_ts_write (lcd_ts_dev, 0x1B, 0x00); /
*
set G_0
*
/
28 lcd_ts_write (lcd_ts_dev, 0x1C, 0x06); /
*
set G_10
*
/
29 lcd_ts_write (lcd_ts_dev, 0x1D, 0x05); /
*
set G_36
*
/
30 lcd_ts_write (lcd_ts_dev, 0x1E, 0x06); /
*
set G_80
*
/
31 lcd_ts_write (lcd_ts_dev, 0x1F, 0x06); /
*
set G_124
*
/
32 lcd_ts_write (lcd_ts_dev, 0x20, 0x05); /
*
set G_168
*
/
33 lcd_ts_write (lcd_ts_dev, 0x21, 0x05); /
*
set G_212
*
/
34 lcd_ts_write (lcd_ts_dev, 0x22, 0x07); /
*
set G_255
*
/
35 lcd_ts_write (lcd_ts_dev, 0x23, 0x00); /
*
set G_0
*
/
36 lcd_ts_write (lcd_ts_dev, 0x24, 0x07); /
*
set B_10
*
/
37 lcd_ts_write (lcd_ts_dev, 0x25, 0x06); /
*
set B_36
*
/
38 lcd_ts_write (lcd_ts_dev, 0x26, 0x07); /
*
set B_80
*
/
39 lcd_ts_write (lcd_ts_dev, 0x27, 0x07); /
*
set B_124
*
/
40 lcd_ts_write (lcd_ts_dev, 0x28, 0x06); /
*
set B_168
*
/
41 lcd_ts_write (lcd_ts_dev, 0x29, 0x04); /
*
set B_212
*
/
42 lcd_ts_write (lcd_ts_dev, 0x2A, 0x07); /
*
set B_255
*
/
43 lcd_ts_write (lcd_ts_dev, 0x06, 0x03); /
*
set display on
*
/
44
45 /
*
gpio_set_value(lcd_ts_dev->resetpin,1);
*
/
46 }
Une fois la communication termine, il faut terminer librer les ressources. Cest le but de la fonction resume :
1 static int lcd_ts_remove(struct spi_device
*
spi_device){
2
3 struct lcd_ts
*
lcd_data ;
4 lcd_data = (struct lcd_ts
*
)(spi_device->dev.platform_data);
5
6 lcd_data->exit(spi_device); /
*
Free GPIO
*
/
7 /
*
Init Sequence
*
/
8 lcd_data->reset(0);
9
10 return 0;
11 }
Nous devons ouvrir notre module lextrieur et proposer des fonctions dinitialisation et de dsallocation du pilote dans
le systme.
1 static int __init lcd_ts_init(void)
2 {
3 printk(" Loadi ng LCD Dr i ve r modul e \ n");
4 int i;
5 i = spi_register_driver(&lcd_ts_driver);
6 printk(" Renvoi e : %i \ n",i);
7 return i;
8
9 }
10
11 static void __exit lcd_ts_exit(void)
12 {
13 printk(" Unl oadi ng LCD Dr i ve r modul e \ n");
14 spi_unregister_driver(&lcd_ts_driver);
15
16
17 }
18
19 module_init(lcd_ts_init);
20 module_exit(lcd_ts_exit);
21
22 MODULE_AUTHOR("HEINRICH Yanni ck <yageek@f r ee . f r >");
23 MODULE_DESCRIPTION("HX5116 AMOLED Dr i ve r ");
24 MODULE_LICENSE("GPL");
Toutes les fonctions sont dclares statiques de manire cloisonner la compilation et ldition de liens aux rfrences de ce
chier.
Le pilote devra tre lanc manuellement ds lidentication sur le shell. On pourra par la suite rendre automatiquement le
lancement du module. La commande pour lancer le module sera : modprobe lcd_ts.
38
7.5. CRAN AMOLED TACTILE 7. RALISATION
Programme Mandel sous SDL
La SDL est une librarie libre trs utilise pour crer des jeux vidos 2D. Son aptitude dialoguer directement avec le
framebuffer linux la rende trs rapide.
Le programme Mandel afche une rprsentation de lensemble de Mandelbrot dans le plan dArgand-Gauss. Son pro-
gramme est dtaill dans les annexes.
FIGURE 42 La fractale de Mandelbrot sur PC avec la librarie SDL
7.5.4 Alimentation
Lcran AMOLED requiert un grand nombre de condensateurs et une alimentation symtrique proche de plus et moins
5V. Il existe des circuits ddis lalimentation de ces crans, bass la plupart du temps sur des pompes de charges, courantes
dans lalimentation de petite puissance. Notre choix sest port sur un contrleur de ON-Semiconductors : le NCP5810D.
Il permet dobtenir une tension symtrique partir dune tension au maximum de 7 V et peut fournir jusqu 1 W de
puissance. La seule complication est lie lunique package propos qui se rvle trs difcile manipuler et souder. Il est
galement prvu de pouvoir se connecter une alimentation extrieure.
39
7.6. CONCEPTION DE LA CARTE 7. RALISATION
FIGURE 43 Prsentation du NCP5810
7.6 Conception de la carte
La conception de la carte sest faite sous deux logiciels diffrents : une premire version fut ralise sur le logiciel Eagle
rachet depuis peu par Farnell (anciennement CADSOFT) et la version nale de la carte fut ralise sous le logiciel libre
Kicad. Ce dernier prsentait lavantage de ne pas avoir de fonctionnalit rduite et la licence dutilisation qui, contrairement
Eagle, permettait de concevoir un produit but commercial.
7.6.1 Contraintes de routage
La carte a t commande auprs de la socit PCB-Pool qui imposait les contraintes de conceptions suivantes en double
face
1
:
Pad/Via Restring 0.2mm
Via/Drill Restring 0.15mm (taille de pastille moins le diamtre de perage), au moins taille de bande de cuivre/taille
entrefer
Vernis pargne 0.075mm (taille de pastille sur couche soude moins taille de pastille sur cs/ss)
Ouvertures (antipads) Multicouches 0.35mm (taille de pastille sur couche interne ngative moins perage)
1. http://www.pcb-pool.com/ppfr/info_technique.html
40
7.6. CONCEPTION DE LA CARTE 7. RALISATION
(a) Logo de eagle (b) Logo de Kicad
FIGURE 44 Les deux logiciels de CAO utiliss
Diamtre minimal des trous : Diamtre de foret = 0.2 mm (8mil)
7.6.2 Schma
Le schmatique de la carte nas pas chang entre les deux versions (cf Fig.45.
7.6.3 Routage
La carte est destine se poser au dessus de la carte de dveloppement laide dentretoises. La conception pris en
compte lemplacement des diffrents connecteurs sur la carte mre.
La premire version de la carte a t ralise sous eagle.
Cette version nas pas t conserve suite un changement de disposition sur la carte GNU/Linux.
La seconde version fut ralise sous Kicad.
7.6.4 Soudure
Le choix de la soudure sest dirig vers les fours refusion du fait de la petite taille des composants utiliss, notamment
le NCP5810 et le connecteur HIROSE pour lcran AMOLED.Le projet arrivant son terme ,je nai pas pu terminer les
vrications et les soudures de la carte, au prot de la partie logicielle qui est totalement acheve.
41
7.6. CONCEPTION DE LA CARTE 7. RALISATION
FIGURE 45 Schmatique de la carte
42
7.6. CONCEPTION DE LA CARTE 7. RALISATION
FIGURE 46 Premire version de la carte
43
7.6. CONCEPTION DE LA CARTE 7. RALISATION
(a) 2D
(b) 3D
FIGURE 47 Seconde version de la carte
44
8. CONCLUSION
8 Conclusion
Ce projet fut une vritable opportunit pour appliquer toutes les connaissances acquises au cours de ma formation
lcole et mes connaissances en informatique. Jai pu comprendre lensemble des concepts utiliss dans les systmes intelli-
gents et tudier cette frontire qui existe entre le monde des informaticiens et celui des lectroniciens. Partir de la ralisation
dune carte et arriver lcriture de son pilote regroupe toutes les notions que linformatique, llectronique et les mathma-
tiques ont engendrs depuis la cration des premiers ordinateurs.
Cest galement un sujet qui me tenait coeur, tant un utilisateur de logiciels issus de la communaut libre et open-source.
La dmocratisation des outils libres dans le monde de lembarqu ne cessent de crotre. Cet engouement sexplique par
des cots logicielles quasiment nulles et de la disposition de milliers dutilitaires pour traiter tous les domaines technolo-
giques actuelles : gomatique, traitement dimage, codeur multimdia, asservissement ,etc. Cest autant de communauts
qui soutiennent et qui dveloppent activement ces programmes, leur garantissant une performance et une abilit proches
voir meilleurs que leur quivalent propritaires. Linvestissement rside uniquement dans la formation et lacquisition des
connaissances ncessaires au dveloppement.
Le succs de GNU/Linux dans lembarqu nest plus dmontrer, en dmontre la multiplication et le succs des entreprises-
associations dispensant des formations ou proposant des cartes lectroniques bas cots (Armadeus, Free-Electrons). Ces
solutions prsentent des rels avantages pour les petites entreprises et les pays en voie de dveloppement. Ce projet fut une
vritable exprience dans la recherche et le dveloppement que jai eu un trs grand plaisir mener.
45
TABLE DES FIGURES TABLE DES FIGURES
Table des gures
1 Le groupe Technology & Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Logos de la socit RheinBrucke Consulting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 La zone dactivit vue par la socit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4 Les projets du laboratoire en 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5 Le cycle en V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
6 Rle dun systme dexploitation - Source : wikipdia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7 Lordonnanceur dun noyau - Source : wikipdia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8 La gestion de la mmoire au sein dun noyau Source : wikipdia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
9 Reprsentation de la mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
10 Adressage en mode protg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
11 Reprsentation de la mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
12 Reprsentation de la mmoire pagine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
13 Mcanisme simpli de la pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
14 Vision schmatique dun noyau monolithique modulaire - Source : wikipdia . . . . . . . . . . . . . . . . . . . . . 16
15 Diffrents chargeurs de dmarrage sous GNU/BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
(a) Grub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
(b) Lilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
(c) SysLinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
16 Logo de GNU - Source : wikipdia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
17 Tux la mascotte de Linux - Source : wikipdia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
18 Cycle de dveloppement - Source : Association Free-Electrons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
19 Segmentation sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
20 Pagination sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
21 Les diffrents dossiers du noyau et le type de code quils contiennent . . . . . . . . . . . . . . . . . . . . . 21
22 Taille des diffrents rpertoires - Source : Association Free Electrons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
23 Dmarrage de knoppix avec framebuffer - Source : Wikipdia [6] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
24 Logo de lentreprise Armadeus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
25 Les cartes de dveloppement de lAPF27 et APF27Dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
(a) La carte processeur APF27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
(b) La carte processeur APF27DevFull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
(c) Les deux cartes assembles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
26 Caractristiques de lAPF27 et APF27Dev chez T & S - Le nombre de I/O est relatif au nombre de module activs. . . . . . . . . . . 25
27 Interface buildroot sous ncurses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
28 Composants logiciels utiliss sur la carte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
29 Comparaison de la taille de la glibc et la uClibc en compilation statique . . . . . . . . . . . . . . . . . . . 28
30 Rpartition des diffrents composants au sein de la RAM de lAPF27 . . . . . . . . . . . . . . . . . . . . 28
31 Liens entre les diffrentes mmoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
32 Utilisation de la carte sur le rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
33 cran P0430WQLB-T de la socit Densitron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
34 Interface de la puce HX5116 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
46
TABLE DES FIGURES TABLE DES FIGURES
35 Les premiers moniteurs RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
36 Interface parallle 480x212 RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
37 Chronogrammes des diffrents signaux de lcran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
(a) Format des donnes verticale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
(b) Format des donnes horizontales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
(c) Forme de lhorloge et des donns sur le bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
38 SPI 3 wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
39 Connexion dun bus SPI 3-wire vers un bus half duplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
(a) Connexion des bus MOSI et MISO ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
(b) mission de de 0xFF sur le bus pendant lenvoie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
40 Squence dallumage de lcran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
41 Initialisation de lcran dans la documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
42 La fractale de Mandelbrot sur PC avec la librarie SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
43 Prsentation du NCP5810 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
44 Les deux logiciels de CAO utiliss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
(a) Logo de eagle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
(b) Logo de Kicad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
45 Schmatique de la carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
46 Premire version de la carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
47 Seconde version de la carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
(a) 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
(b) 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
47
BIBLIOGRAPHIE BIBLIOGRAPHIE
Bibliographie
[1] Nabaztag. http://www.nabaztag.com/fr/index.html.
[2] Tux drod. http://tuxisalive.com/.
[3] WIKIPDIA : Systme embarqu wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le 18-mai-2010].
[4] PARROT : Ar drone. http://ardrone.parrot.com/parrot-ar-drone/fr/comment-ca-marche/
#start.
[5] Site internet de la socit. http://technologyandstrategy.com/fr/groupe/Pages/chiffres.
aspx, 2010.
[6] WIKIPDIA : Framebuffer linux wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le 15-septembre-
2010].
[7] Amadeus PROJECT : Canal irc de lassociation amadeus project - irc://irc.rezosup.org/#Armadeus.
[8] Association ARMADEUS : Wiki de lassociation armadeus - http://www.armadeus.org/.
[9] Armadeus PROJECT : Caractristiques de apf27 - http://www.armadeus.com/wiki/index.php?title=
APF27.
[10] Armadeus SYSTEMS : http://www.armadeus.com/english/products-processor_
boards-apf27.html. http://www.armadeus.com/english/products-processor_
boards-apf27.html.
[11] WIKIPDIA : Liste des noyaux de systmes dexploitation wikipdia, lencyclopdie libre, 2009. [En ligne ; Page
disponible le 4-fvrier-2010].
[12] Julien BOIBESSOT : Linux embarqu pour tous - http://www.unixgarden.com/index.php/embarque/
perles-de-mongueurs-analyse-de-logs-2. Linux Magazine 92, 2009.
[13] Julien BOIBESSOT : Rmll 2008 - systme embarqu avec ajout de priphriques la demande - http://2008.
rmll.info/Systeme-embarque-avec-ajout-de.html. 2008.
[14] Fleur BROSSEAU : Les modules du noyau linux. http://www.unixgarden.com/index.php/
comprendre/les-modules-du-noyau-linux.
[15] CORBET : Porting device drivers to the 2.6 kernel. http://lwn.net/Articles/driver-porting/.
[16] Pierre-Yves DUVAL : Linux embarqu sur apf27. Rapport technique, Centre de physique des particules de Marseille,
2009.
[17] Jean-Michel FRIEDT : Programmation et interfaage dun microcontrleur par usb sous linux : le 68hc908jb8.
http://www.unixgarden.com/index.php/embarque/programmation-et-interfacage-d%
e2%80%99un-microcontroleur-par-usb-sous-linux%c2%a0-le-68hc908jb8.
[18] Xavier GARREAU : Bluetooth, installation et utilisation. http://www.unixgarden.com/index.php/
comprendre/bluetooth-installation-et-utilisation, 2008.
[19] Matthieu KACZMAREK : Elf et virologie informatique. http://vxheavens.com/lib/vmk00.html.
[20] L33CKMA : Le format elf : approche du point de vue dun infecteur. http://l33ckma.tuxfamily.org/?p=
15.
[21] Lyce Henri LORITZ : Les diodes. http://www.ac-nancy-metz.fr/pres-etab/loritz/pre_bac/
ssi/cours/electronique/Diodes/diode.htm.
48
BIBLIOGRAPHIE BIBLIOGRAPHIE
[22] Frdric MORAIN-NICOLIER : Dtection de motifs : exploitation de la
phase (suite de linter-corrlation). http://pixel-shaker.fr/fr/2008/12/
detection-de-motifs-exploitation-de-la-phase-suite-de-linter-correlation/
#toc-localisation-du-motif-dans-limage.
[23] Adaptateur VGA "SYNC-ON-GREEN".
[24] Pier Luc PETITCLERC : Gnu diff & gnu patch : How to apply product patches.
[25] Benjamin ROUX : Ecriture de driver sous linux grce au langage c. http://broux.developpez.com/
articles/c/driver-c-linux/.
[26] Jean-Michel Friedt SIMON GUINOT : rception dimages satellites : utilisation dun systme embarqu. http:
//www.unixgarden.com/index.php/embarque/reception-d%E2%80%99images-satellites%
C2%A0-utilisation-d%E2%80%99un-systeme-embarque.
[27] Javier VALCARCE : Tv video signal generator with arduino. http://www.javiervalcarce.eu/wiki/TV_
Video_Signal_Generator_with_Arduino, April 2009.
[28] WIKIPEDIA : Video graphics array wikipedia, the free encyclopedia, 2010. [Online ; accessed 5-February-2010].
[29] WIKIPEDIA : Gerber le wikipedia, the free encyclopedia, 2010. [Online ; accessed 9-February-2010].
[30] WIKIPEDIA : Flash memory wikipedia, the free encyclopedia, 2010. [Online ; accessed 15-February-2010].
[31] WIKIPEDIA : Types of capacitor wikipedia, the free encyclopedia, 2010. [Online ; accessed 10-February-2010].
[32] WIKIPEDIA : Organic led wikipedia, the free encyclopedia, 2010. [Online ; accessed 26-February-2010].
[33] WIKIPEDIA : Block (data storage) wikipedia, the free encyclopedia, 2009. [Online ; accessed 15-February-2010].
[34] WIKIPDIA : Processeur arm wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le 07-avril-2010].
[35] WIKIPDIA : Noyau de systme dexploitation wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible
le 4-fvrier-2010].
[36] WIKIPDIA : Serial peripheral interface wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le
5-fvrier-2010].
[37] WIKIPDIA : Multitche premptif wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le 11-fvrier-
2010].
[38] WIKIPDIA : Grep wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le 17-fvrier-2010].
[39] WIKIPDIA : Polarisation (optique) wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le 26-fvrier-
2010].
[40] WIKIPDIA : Phase (onde) wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le 26-fvrier-2010].
[41] WIKIPDIA : Champ lectrique wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le 26-fvrier-
2010].
[42] WIKIPDIA : Diode lectroluminescente organique wikipdia, lencyclopdie libre, 2010. [En ligne ; Page dispo-
nible le 26-fvrier-2010].
[43] WIKIPDIA : cran cristaux liquides wikipdia, lencyclopdie libre, 2010. [En ligne ; Page disponible le 26-
fvrier-2010].
[44] WIKIPDIA : Ordonnancement dans les systmes dexploitation wikipdia, lencyclopdie libre, 2010. [En ligne ;
Page disponible le 17-mars-2010].
[45] Lcd controller & driver ics. http://www.tstonramp.com/~pddwebacc/lcd_ics.htm.
[46] Arduino wire library. http://arduino.cc/en/Reference/Wire, 2010.
[47] Le format elf. http://asm-x86.fr/le-format-elf_a8.
[48] Crer un chier elf sans mme gnu/ld. http://www.les-ziboux.rasama.org/elf-without-ld.html.
[49] La gestion de la mmoire. http://www.commentcamarche.net/contents/systemes/memoire.php3.
[50] La mmoire virtuelle. http://cui.unige.ch/~billard/systemeII/cours6.html.
[51] Platform devices and drivers. http://www.mjmwired.net/kernel/Documentation/driver-model/
platform.txt.
49
BIBLIOGRAPHIE BIBLIOGRAPHIE
[52] Overview of linux kernel spi support. http://www.mjmwired.net/kernel/Documentation/spi/
spi-summary.
[53] The linux kernel api. http://www.kernel.org/doc/htmldocs/kernel-api/index.html.
[54] Rgb video out. http://www.eecg.toronto.edu/~tm4/rgbout.html.
[55] Mx2 framebuffer driver. http://www.linux-fbdev.org/HOWTO/index.html.
[56] Le logiciel buildroot. http://buildroot.uclibc.org/.
[57] Crer et lancer une application au format elf partir du systme de chier. http://a.michelizza.free.fr/
pmwiki.php?n=TutoOS.Elf.
[58] Eagle 3d. http://www.matwei.de/doku.php?id=en:eagle3d:eagle3d, 2010.
50
ANNEXE A. THE GNU GENERAL PUBLIC LICENCE
A The GNU General Public Licence
The following is the text of the GNU General Public Licence, under the terms of which this software is distrubuted.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
A.1 Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU
General Public License is intended to guarantee your freedom to share and change free softwareto make sure the software
is free for all its users. This General Public License applies to most of the Free Software Foundations software and to any
other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU
Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to
make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you
receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs ;
and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender
the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you
modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the
rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these
terms so they know their rights.
We protect your rights with two steps : (1) copyright the software, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the software.
Also, for each authors protection and ours, we want to make certain that everyone understands that there is no warranty
for this free software. If the software is modied by someone else and passed on, we want its recipients to know that what
they have is not the original, so that any problems introduced by others will not reect on the original authors reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of
a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have
made it clear that any patent must be licensed for everyones free use or not licensed at all.
The precise terms and conditions for copying, distribution and modication follow.
A.2 Terms and conditions for copying, distribution and modication
0. This License applies to any programor other work which contains a notice placed by the copyright holder saying it may
be distributed under the terms of this General Public License. The Program, below, refers to any such program or
work, and a work based on the Program means either the Program or any derivative work under copyright law : that
is to say, a work containing the Program or a portion of it, either verbatim or with modications and/or translated into
another language. (Hereinafter, translation is included without limitation in the term modication.) Each licensee is
addressed as you.
Activities other than copying, distribution and modication are not covered by this License ; they are outside its scope.
The act of running the Program is not restricted, and the output from the Program is covered only if its contents
51
A.2. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ANNEXE A. THE GNU GENERAL PUBLIC LICENCE
constitute a work based on the Program (independent of having been made by running the Program). Whether that is
true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Programs source code as you receive it, in any medium, provided
that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of
warranty ; keep intact all the notices that refer to this License and to the absence of any warranty ; and give any other
recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection
in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program,
and copy and distribute such modications or work under the terms of Section 1 above, provided that you also meet
all of these conditions :
(a) You must cause the modied les to carry prominent notices stating that you changed the les and the date of
any change.
(b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the
Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this
License.
(c) If the modied program normally reads commands interactively when run, you must cause it, when started
running for such interactive use in the most ordinary way, to print or display an announcement including an
appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty)
and that users may redistribute the program under these conditions, and telling the user how to view a copy of
this License. (Exception : if the Program itself is interactive but does not normally print such an announcement,
your work based on the Program is not required to print an announcement.)
These requirements apply to the modied work as a whole. If identiable sections of that work are not derived from
the Program, and can be reasonably considered independent and separate works in themselves, then this License, and
its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same
sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms
of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part
regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you ; rather,
the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on
the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this
License.
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you also do one of the following :
(a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under
the terms of Sections 1 and 2 above on a medium customarily used for software interchange ; or,
(b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than
your cost of physically performing source distribution, a complete machine-readable copy of the corresponding
source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for
software interchange ; or,
(c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This
alternative is allowed only for noncommercial distribution and only if you received the program in object code
or executable form with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modications to it. For an executable
work, complete source code means all the source code for all modules it contains, plus any associated interface
denition les, plus the scripts used to control compilation and installation of the executable. However, as a special
exception, the source code distributed need not include anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs,
unless that component itself accompanies the executable.
52
A.2. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ANNEXE A. THE GNU GENERAL PUBLIC LICENCE
If distribution of executable or object code is made by offering access to copy from a designated place, then offering
equivalent access to copy the source code from the same place counts as distribution of the source code, even though
third parties are not compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your
rights under this License. However, parties who have received copies, or rights, from you under this License will not
have their licenses terminated so long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission
to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept
this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate
your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the
Program or works based on it.
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a
license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You
may not impose any further restrictions on the recipients exercise of the rights granted herein. You are not responsible
for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to
patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the
conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to
satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence
you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution
of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy
both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the
section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest
validity of any such claims ; this section has the sole purpose of protecting the integrity of the free software distribution
system, which is implemented by public license practices. Many people have made generous contributions to the wide
range of software distributed through that system in reliance on consistent application of that system; it is up to the
author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted
interfaces, the original copyright holder who places the Program under this License may add an explicit geographical
distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to
time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems
or concerns.
Each version is given a distinguishing version number. If the Program species a version number of this License which
applies to it and any later version, you have the option of following the terms and conditions either of that version
or of any later version published by the Free Software Foundation. If the Program does not specify a version number
of this License, you may choose any version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different,
write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to
the Free Software Foundation ; we sometimes make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software
generally.
NO WARRANTY
11. Because the Program is licensed free of charge, there is no warranty for the Program, to the extent permitted
by applicable law. except when otherwise stated in writing the copyright holders and/or other parties provide
53
A.3. APPENDIX : HOW TO APPLY THESE TERMS TO YOUR NEW PROGRAMS ANNEXE A. THE GNU GENERAL PUBLIC LICENCE
the program as is without warranty of any kind, either expressed or implied, including, but not limited to,
the implied warranties of merchantability and tness for a particular purpose. The entire risk as to the quality
and performance of the Program is with you. Should the Program prove defective, you assume the cost of all
necessary servicing, repair or correction.
12. In no event unless required by applicable law or agreed to in writing will any copyright holder, or any other
party who may modify and/or redistribute the program as permitted above, be liable to you for damages,
including any general, special, incidental or consequential damages arising out of the use or inability to use the
program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you
or third parties or a failure of the Program to operate with any other programs), even if such holder or other
party has been advised of the possibility of such damages.
END OF TERMS AND CONDITIONS
A.3 Appendix : How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve
this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source le to most
effectively convey the exclusion of warranty ; and each le should have at least the copyright line and a pointer to where
the full notice is found.
<one line to give the programs name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode :
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type show w.
This is free software, and you are welcome to redistribute it
under certain conditions; type show c for details.
The hypothetical commands show w and show c should show the appropriate parts of the General Public License. Of
course, the commands you use may be called something other than show w and show c ; they could even be mouse-clicks
or menu itemswhatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a copyright disclaimer
for the program, if necessary. Here is a sample ; alter the names :
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
Gnomovision (which makes passes at compilers) written by James Hacker.
54
A.3. APPENDIX : HOW TO APPLY THESE TERMS TO YOUR NEW PROGRAMS ANNEXE A. THE GNU GENERAL PUBLIC LICENCE
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into proprietary programs. If your program is a
subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what
you want to do, use the GNU Library General Public License instead of this License.
55
ANNEXE B. CODE SOURCES
B Code sources
B.1 Module Noyau
1 /
*
2
*
Display Driver for hx5116 controler for AMOLED
3
*
4
*
Copyright (c) 2009 Fabien Marteau - ARMadeus Systems
5
*
6
*
This program is free software; you can redistribute it and/or modify
7
*
it under the terms of the GNU General Public License version 2 as
8
*
published by the Free Software Foundation.
9
*
10
*
/
11
12 #include <linux/module.h>
13 #include <linux/kernel.h>
14 #include <linux/init.h>
15 #include <linux/platform_device.h>
16 #include <linux/mutex.h>
17 #include <linux/fb.h>
18 #include <linux/delay.h>
19
20 #include <linux/display.h>
21 #include <linux/spi/spi.h>
22
23 #include <linux/version.h>
24 #include <mach/imxfb.h> /
*
Backlight machinfo struct is defined here
*
/
25 #include <mach/hardware.h>
26 #include <mach/gpio.h>
27
28 #include <video/LCD_TS.h>
29
30 #define DRIVER_NAME " l c d _ t s "
31 #define DRIVER_VERSION " 0. 1 "
32
33 static int lcd_ts_write(struct lcd_ts
*
lcd_ts_dev,u8 address, u16 data){
34
35 u8 command[2];
36 int ret;
37 /
*
Address
*
/
38 command[0] = (address << 1) | HX5116_SPI_WRITE;
39 command[1] = data;
40 ret = spi_write(lcd_ts_dev->spi, command, 2);
41 if (ret < 0)
42 printk("ERROR: can t wr i t e on hx5116 \ n");
43
44 }
45
46 static int lcd_ts_init_screen( struct lcd_ts
*
lcd_ts_dev){
47
48 /
*
gpio_set_value(lcd_ts_dev->resetpin,1);
*
/
49
50 /
*
initial procedure for 24-bit parallel RGB (DE)
*
/
51 lcd_ts_write (lcd_ts_dev, 0x04, 0x23); /
*
set display mode 24-bit parallel RGB (DE)
*
/
52 lcd_ts_write (lcd_ts_dev, 0x05, 0x82); /
*
set display mode
*
/
53 lcd_ts_write (lcd_ts_dev, 0x07, 0x0F); /
*
set driver capability
*
/
54 lcd_ts_write (lcd_ts_dev, 0x34, 0x18); /
*
set display timing
*
/
55 lcd_ts_write (lcd_ts_dev, 0x35, 0x28); /
*
set display timing
*
/
56 lcd_ts_write (lcd_ts_dev, 0x36, 0x16); /
*
set display timing
*
/
57 lcd_ts_write (lcd_ts_dev, 0x37, 0x01); /
*
set display timing
*
/
58 lcd_ts_write (lcd_ts_dev, 0x02, 0x02); /
*
OTP On
*
/
59 lcd_ts_write (lcd_ts_dev, 0x0A, 0x79); /
*
VGHVGL=+/-6V
*
/
60 lcd_ts_write (lcd_ts_dev, 0x09, 0x20); /
*
VGAM1OUT=4.85V
*
/
61 lcd_ts_write (lcd_ts_dev, 0x10, 0x6A); /
*
set R slop
*
/
62 lcd_ts_write (lcd_ts_dev, 0x11, 0x6A); /
*
set G slop
*
/
63 lcd_ts_write (lcd_ts_dev, 0x12, 0x68); /
*
set B slop
*
/
64 lcd_ts_write (lcd_ts_dev, 0x13, 0x00); /
*
set R_0
*
/
65 lcd_ts_write (lcd_ts_dev, 0x14, 0x04); /
*
set R_10
*
/
56
B.1. MODULE NOYAU ANNEXE B. CODE SOURCES
66 lcd_ts_write (lcd_ts_dev, 0x15, 0x05); /
*
set R_36
*
/
67 lcd_ts_write (lcd_ts_dev, 0x16, 0x05); /
*
set R_80
*
/
68 lcd_ts_write (lcd_ts_dev, 0x17, 0x04); /
*
set R_124
*
/
69 lcd_ts_write (lcd_ts_dev, 0x18, 0x03); /
*
set R_168
*
/
70 lcd_ts_write (lcd_ts_dev, 0x19, 0x02); /
*
set R_212
*
/
71 lcd_ts_write (lcd_ts_dev, 0x1A, 0x02); /
*
set R_255
*
/
72 lcd_ts_write (lcd_ts_dev, 0x1B, 0x00); /
*
set G_0
*
/
73 lcd_ts_write (lcd_ts_dev, 0x1C, 0x06); /
*
set G_10
*
/
74 lcd_ts_write (lcd_ts_dev, 0x1D, 0x05); /
*
set G_36
*
/
75 lcd_ts_write (lcd_ts_dev, 0x1E, 0x06); /
*
set G_80
*
/
76 lcd_ts_write (lcd_ts_dev, 0x1F, 0x06); /
*
set G_124
*
/
77 lcd_ts_write (lcd_ts_dev, 0x20, 0x05); /
*
set G_168
*
/
78 lcd_ts_write (lcd_ts_dev, 0x21, 0x05); /
*
set G_212
*
/
79 lcd_ts_write (lcd_ts_dev, 0x22, 0x07); /
*
set G_255
*
/
80 lcd_ts_write (lcd_ts_dev, 0x23, 0x00); /
*
set G_0
*
/
81 lcd_ts_write (lcd_ts_dev, 0x24, 0x07); /
*
set B_10
*
/
82 lcd_ts_write (lcd_ts_dev, 0x25, 0x06); /
*
set B_36
*
/
83 lcd_ts_write (lcd_ts_dev, 0x26, 0x07); /
*
set B_80
*
/
84 lcd_ts_write (lcd_ts_dev, 0x27, 0x07); /
*
set B_124
*
/
85 lcd_ts_write (lcd_ts_dev, 0x28, 0x06); /
*
set B_168
*
/
86 lcd_ts_write (lcd_ts_dev, 0x29, 0x04); /
*
set B_212
*
/
87 lcd_ts_write (lcd_ts_dev, 0x2A, 0x07); /
*
set B_255
*
/
88 lcd_ts_write (lcd_ts_dev, 0x06, 0x03); /
*
set display on
*
/
89
90 /
*
gpio_set_value(lcd_ts_dev->resetpin,1);
*
/
91 }
92 static int lcd_ts_probe (struct spi_device
*
spi_device){
93
94
95 printk("LCD SPI Bus Re g i s t r a t i o n \ n");
96 struct lcd_ts
*
lcd_data;
97 int err = -EINVAL;
98 lcd_data = (struct lcd_ts
*
)(spi_device->dev.platform_data);
99 lcd_data->init(spi_device); /
*
Initialise GPIO
*
/
100
101 lcd_data->spi = spi_device;
102
103 lcd_data->spi->mode = SPI_MODE_0;
104 lcd_data->spi->bits_per_word = 8;
105 lcd_data->spi->dev.power.power_state = PMSG_ON;
106 err = spi_setup(lcd_data->spi);
107 printk(" Renvoi e du s e t up %i \ n",err);
108
109 lcd_ts_init_screen(lcd_data);
110 return 0;
111
112 }
113
114 static int lcd_ts_remove(struct spi_device
*
spi_device){
115
116 struct lcd_ts
*
lcd_data ;
117 lcd_data = (struct lcd_ts
*
)(spi_device->dev.platform_data);
118
119 lcd_data->exit(spi_device); /
*
Free GPIO
*
/
120 /
*
Init Sequence
*
/
121 lcd_data->reset(0);
122
123 return 0;
124 }
125
126 static int lcd_ts_shutdown(struct spi_device
*
spi_device){
127
128 return 0;
129
130 }
131
132 static int lcd_ts_suspend(struct spi_device
*
spi_device){
133 return 0;
134
135
136 }
137 static int lcd_ts_resume(struct spi_device
*
spi_device){
138
139 return 0;
140
141 }
142 static struct spi_driver lcd_ts_driver = {
57
B.2. CODE DESSAI SDL - FRACTALE DE MANDELBROT ANNEXE B. CODE SOURCES
143 .probe = lcd_ts_probe,
144 .remove = lcd_ts_remove,
145 .shutdown = lcd_ts_shutdown,
146 .suspend = lcd_ts_suspend,
147 .resume = lcd_ts_resume,
148 .driver = {
149 .name = DRIVER_NAME,
150 .owner = THIS_MODULE,
151 },
152 };
153
154
155 static int __init lcd_ts_init(void)
156 {
157 printk(" Loadi ng LCD Dr i ve r modul e \ n");
158 int i;
159 i = spi_register_driver(&lcd_ts_driver);
160 printk(" Renvoi e : %i \ n",i);
161 return i;
162
163 }
164
165 static void __exit lcd_ts_exit(void)
166 {
167 printk(" Unl oadi ng LCD Dr i ve r modul e \ n");
168 spi_unregister_driver(&lcd_ts_driver);
169
170
171 }
172
173 module_init(lcd_ts_init);
174 module_exit(lcd_ts_exit);
175
176 MODULE_AUTHOR("HEINRICH Yanni ck <yageek@f r ee . f r >");
177 MODULE_DESCRIPTION("HX5116 AMOLED Dr i ve r ");
178 MODULE_LICENSE("GPL");
B.2 Code dessai SDL - Fractale de MandelBrot
1 /
*
2 ============================================================================
3 Name : Mandel.c
4 Author : HEINRICH Yannick
5 Version : 1
6 Copyright : GPL
7 Description : Mandelbrot elements C, Ansi-style
8 ============================================================================
9
*
/
10
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include<SDL/SDL.h>
14
15 /
*
16
*
DEFINE
17
*
/
18 #define MAX_ITER 1000
19 #define WIDTH 1024
20 #define HEIGHT 768
21 #define XORIGIN WIDTH/2
22 #define YORIGIN HEIGHT/2
23 /
*
24
*
Variables
25
*
/
26 SDL_Surface
*
ecran;
27 void pause()
28 {
29 int continuer = 1;
30 SDL_Event event;
31
32 while (continuer)
33 {
34 SDL_WaitEvent(&event);
35 switch(event.type)
58
B.2. CODE DESSAI SDL - FRACTALE DE MANDELBROT ANNEXE B. CODE SOURCES
36 {
37 case SDL_QUIT:
38 continuer = 0;
39 }
40 }
41 }
42 void affAxis(SDL_Surface
*
ecran){
43
44 SDL_Rect rect;
45 rect.w = 1;
46 rect.h = 1;
47 int i;
48 /
*
49
*
Vertical AXIS
50
*
/
51 rect.y = YORIGIN;
52 for(i=0;i< WIDTH;i++){
53 rect.x = i;
54 SDL_FillRect(ecran,&rect,SDL_MapRGB(ecran->format,255,0,0));
55 }
56 /
*
57
*
HORIZONTAL AXIS
58
*
/
59 rect.x = XORIGIN;
60 for(i=0;i < HEIGHT;i++){
61 rect.y = i;
62 SDL_FillRect(ecran,&rect,SDL_MapRGB(ecran->format,255,0,0));
63 }
64
65
66 }
67
68 int main(void) {
69 /
*
70
*
SDL INIT
71
*
/
72 if (SDL_Init(SDL_INIT_VIDEO) == -1) // Demarrage de la SDL. Si erreur alors...
73 {
74 fprintf(stderr, " Er r e u r d i n i t i a l i s a t i o n de l a SDL : %s \ n", SDL_GetError());
// Ecriture de lerreur
75 exit(EXIT_FAILURE); // On quitte le programme
76 }
77
78 ecran = SDL_SetVideoMode(WIDTH, HEIGHT, 32, SDL_HWSURFACE);
79 SDL_WM_SetCaption(" Mandel v0 . 1 ",NULL);
80
81 /
*
82
*
SDL Color
83
*
/
84 Uint32 blackcolor = SDL_MapRGB(ecran->format,0,0,0);
85 Uint32 itercolor;
86 SDL_Rect rect;
87 rect.h = 1;
88 rect.w = 1;
89
90 /
*
91
*
Mandelbrot program
92
*
/
93 double xtemp,x,y,xp,yp,factor;
94 int i,j,iter;
95
96 /
*
97
*
Scale Factor
98
*
/
99 factor = 200.0;
100 for(i=0; i< WIDTH;i++){
101 for(j=0;j< HEIGHT;j++){
102 //Start with 0;
103 x=0;
104 y=0;
105 iter=0;
106 xp = (i - XORIGIN)/factor;
107 yp = (j - YORIGIN)/factor;
108 while((x
*
x + y
*
y <= 4) && iter < MAX_ITER){
109 xtemp = x
*
x - y
*
y +xp;
110 y = 2
*
x
*
y + yp;
111 x = xtemp;
59
B.3. AJOUT DE LA LIBRAIRIE CWIID DANS BUILDROOT ANNEXE B. CODE SOURCES
112 iter++;
113 }
114 //printf("Point (%i,%i) - Iterations %i\n",i,j,iter);
115 rect.x = i;
116 rect.y = j;
117 if(iter == MAX_ITER) SDL_FillRect(ecran,&rect,blackcolor);
118 else{
119
120 itercolor = SDL_MapRGB(ecran->format,0,0,iter
*
30);
121 SDL_FillRect(ecran,&rect,itercolor);
122 }
123 }
124 }
125 //affAxis(ecran);
126 SDL_Flip(ecran);
127 pause();
128
129 SDL_Quit();
130
131 return EXIT_SUCCESS;
132 }
B.3 Ajout de la librairie CWIID dans buildroot
Le code suivant prsente le chier makele ncessaire au rajout de la librarie CWIID au sein de la carte embarque, ainsi
que les patchs ncessaires. Elle se base sur la pile ofciel de Linux pour la gestion des protocoles Buettoth (BlueZ).
B.3.1 libcwiid.mk
1 #############################################################
2 #
3 # libcwiid
4 #
5 #############################################################
6 CWIID_VERSION:=0.6.00
7 CWIID_SOURCE:=cwiid-$(CWIID_VERSION).tgz
8 CWIID_SITE:=http://abstrakraft.org/cwiid/downloads
9 CWIID_DIR:=$(BUILD_DIR)/cwiid-$(CWIID_VERSION)
10
11
12 $(DL_DIR)/$(CWIID_SOURCE):
13 $(call DOWNLOAD,$(CWIID_SITE),$(CWIID_SOURCE))
14
15 $(CWIID_DIR)/.source: $(DL_DIR)/$(CWIID_SOURCE)
16 $(ZCAT) $(DL_DIR)/$(CWIID_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
17 touch $@
18
19 $(CWIID_DIR)/.patched: $(CWIID_DIR)/.source
20 toolchain/patch-kernel.sh $(CWIID_DIR) package/libcwiid
*
.patch
21 # $(CONFIG_UPDATE) $(CWIID_DIR)
22 touch $@
23
24 $(CWIID_DIR)/.configured: $(CWIID_DIR)/.patched
25 (cd $(CWIID_DIR); rm -rf config.cache;autoconf; \
26 $(TARGET_CONFIGURE_OPTS) \
27 $(TARGET_CONFIGURE_ARGS) \
28 ./configure \
29 --target=$(GNU_TARGET_NAME)\
30 --host=$(GNU_TARGET_NAME) \
31 --build=$(GNU_HOST_NAME)\
32 --prefix=$(STAGING_DIR)/usr \
33 --sysconfdir=$(STAGING_DIR)/etc \
34 --disable-ldconfig\
35 --without-python ;\
36 )
37
38 touch $@
39
40 $(CWIID_DIR)/.compiled: $(CWIID_DIR)/.configured
41 $(MAKE1) CC=$(TARGET_CC) CC_FOR_BUILD=" $ (HOSTCC) " -C $(CWIID_DIR)
42 touch $@
43
60
B.3. AJOUT DE LA LIBRAIRIE CWIID DANS BUILDROOT ANNEXE B. CODE SOURCES
44 $(STAGING-DIR)/usr/lib/libcwiid.so: $(CWIID_DIR)/.compiled
45 $(MAKE) -C $(CWIID_DIR) install
46 cp -dpf $(STAGING_DIR)/usr/lib/libcwiid
*
.so
*
$(TARGET_DIR)/usr/lib/
47
48 libcwiid cwiid: uclibc $(STAGING-DIR)/usr/lib/libcwiid.so
49
50 libcwiid-clean cwiid-clean:
51 $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(CWIID_DIR) uninstall
52 -$(MAKE) -C $(SDL_DIR) clean
53
54 libcwiid-dirclean cwiid-dirclean:
55 rm -rf $(CWIID_DIR)
56 #############################################################
57 #
58 # Toplevel Makefile options
59 #
60 #############################################################
61 ifeq ($(strip $(BR2_PACKAGE_LIBCWIID)),y)
62 TARGETS+=cwiid
63 endif
B.3.2 congure_.patch
1 --- cwiid-0.6.00.org/configure.ac 2007-08-27 02:27:58.000000000 +0200
2 +++ cwiid-0.6.00/configure.ac 2010-03-01 17:28:00.425401362 +0100
3 @@ -124,11 +124,6 @@ else
4 fi
5 AC_SUBST(LDCONFIG)
6
7 -pkg_modules=" gt k +2.0 >= 2 . 0 . 0 gt hr e ad 2.0 "
8 -PKG_CHECK_MODULES([GTK], [$pkg_modules])
9 -AC_SUBST(GTK_CFLAGS)
10 -AC_SUBST(GTK_LIBS)
11 -
12 AC_OUTPUT(
13 [Makefile]
14 [defs.mak]
15 @@ -137,7 +132,6 @@ AC_OUTPUT(
16 [man/Makefile]
17 [libcwiid/Makefile]
18 [wmdemo/Makefile]
19 - [wmgui/Makefile]
20 [wminput/Makefile]
21 [wminput/plugins/Makefile]
22 [wminput/plugins/ir_ptr/Makefile]
B.3.3 makele_in.patch
1 --- cwiid-0.6.00.org/Makefile.in 2007-07-28 20:47:03.000000000 +0200
2 +++ cwiid-0.6.00/Makefile.in 2010-03-01 17:28:08.337399709 +0100
3 @@ -3,7 +3,7 @@
4 include @top_builddir@/defs.mak
5
6 LIB_DIRS = libcwiid
7 -BIN_DIRS = wmgui wminput lswm
8 +BIN_DIRS = wminput lswm
9 DOC_DIRS = man doc
10 ifdef PYTHON
11 BIND_DIRS = python
61