Cet ouvrage fait partie de la bibliothèque YouScribe
Obtenez un accès à la bibliothèque pour le lire en ligne
En savoir plus

Projet de fin d'études Technology Strategy Engineering

De
64 pages
Niveau: Supérieures

  • mémoire


Projet de fin d'études Technology & Strategy Engineering Sujet : Plateforme Linux & Combi Instrument. 1 Février 2010 - 3 Juillet 2010 Société : Technology & Strategy Engineering 4 avenue de la Paix 67000 Strasbourg Établissement : INSA Strasbourg 24 Boulevard de la Victoire 67000 Strasbourg Professeur référent : M. Boyer Bertrand Responsable : M. Roth Matthieu Étudiant : M. Heinrich Yannick

  • plateforme linux

  • présentation de gnu

  • choix de la plateforme gnu

  • linux

  • librairie sdl

  • code d'essai sdl - fractale de mandelbrot

  • naviguer dans les sources du noyau

  • busybox shell


Voir plus Voir moins
Projet de fin d’études Technology & Strategy Engineering
Sujet :Plateforme Linux & Combi Instrument.
1 Février 2010 - 3 Juillet 2010
Société : Technology & Strategy Engineering 4 avenue de la Paix 67000 Strasbourg
Établissement : INSA Strasbourg 24 Boulevard de la Victoire 67000 Strasbourg
Professeur référent : M. Boyer Bertrand Responsable : M. Roth Matthieu Étudiant : M. Heinrich Yannick
1
Cahiers des charges
1. CAHIERS DES CHARGES
Recherche et étude des différentes plate-formes Linux existantes sur le marché. Connexion d’un écran tactile à la plate-forme Linux choisie. Ajout d’une connexion CAN à la plate-forme. Réalisation éventuelle d’une carte regroupant l’ensemble des composants. Développement du software nécessaire en langage C. Connexion de la plate-forme au système lève-vitres rétroviseurs de T&S. Archivage des différentes versions de SW dans un logiciel de gestion de configuration de type SVN. Possibilité d’ajout d’un chip GPS ou d’autres fonctionnalités si le temps restant le permet.
1
Résumé
Le stage s’est déroulé au sein du laboratoire de recherche et développement de la société Technology & Strategy Enginee-ring. Le sujet portait sur la réalisation d’une plate-forme d’instrumentation à l’aide d’une carte embarquée GNU/Linux et un écran AMOLED tactile. Le développement incluait la réalisation du pilote pour le noyau Linux et le développement d’un PCB pouvant accueillir l’écran et son alimentation. La carte principale provient de la société ARMADEUS Systems et est articulée autour d’un processeur Freescale iMX27 avec une architecture ARM9. L’intégration d’un noyau Linux de génération 2.6 et d’un shell BusyBox s’est réalisé avec la suite Buildroot et les sources fournies. La conception du PCB a été réalisé sous le logiciel KICAD. Le développement des applicatifs s’est 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 2 3 4 5 6
7
Table des matières
1. CAHIERS DES CHARGES
Cahiers des charges Introduction Remerciements Présentation de l’entreprise 4.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Le groupe Technology & Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Quelques chiffres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Particularité de la division Engineering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Présentation du sujet 5.1 Le laboratoire de R & D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Projet Combi instrument & plateforme linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Cahiers des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Cycle de développement et organisation dans le temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Outils mis à disposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Du processeur au noyau 6.1 Rôle d’un système d’exploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Adressage mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Représentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.2 Mode réel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.3 Mode protégé et segmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.4 Pagination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.5 Le mode noyau et le mode utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Lancement d’un système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4 Présentation de GNU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5 Présentation de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5.1 Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6 Un couple gagnant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 Linux et la mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8 Naviguer dans les sources du Noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9 Les pilotes sous Linux 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10 Le framebuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Réalisation 7.1 Choix de la plateforme GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1 Carte retenue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Présentation de l’architecture ARM (32 bits) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Composants logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3.1 Sur l’ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 3 4 5 5 5 6 6 7 7 7 7 8 8 11 11 13 13 13 13 15 16 16 17 18 18 19 19 20 22 22 23 23 23 26 26 26 1
8
A
B
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 Parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Schéma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.6.3 Routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.6.4 Soudure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Conclusion
The GNU General Public Licence A.1 Preamble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Terms and conditions for copying, distribution and modification . . . . . . . . . . . . . . . . . . . . . . . A.3 Appendix : How to Apply These Terms to Your New Programs . . . . . . . . . . . . . . . . . . . . . . . .
Code sources B.1 Module Noyau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2 Code d’essai SDL - Fractale de MandelBrot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.3 Ajout de la librairie CWIID dans buildroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.3.1 libcwiid.mk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.3.2 configure_.patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.3.3 mak _ pa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . efile in. tch . . .
45
51 51 51 54
56 56 58 60 60 61 61
2
2Introduction
2. INTRODUCTION
Le monde de l’électronique ne cesse d’envahir notre quotidien : récepteurs GPS dans nos voitures, baladeurs audio et vidéo de dernières générations, appareils photos numériques, robots Wi-fi[1][2]... un trait d’union relie tout ce petit monde : l’univers des systèmes embarqués. Depuis l’AGC[3] du programme Apollo à l’hélicoptère télécommandé de la société Parot [4], 40 ans se sont écoulés et ont permis une véritable démocratisation des systèmes intelligents.
Ce déploiement fut possible grâce à l’intégration constante des puces électroniques et l’évolution en parallèle des concepts et des langages informatiques. On peut s’abstenir de coder en assembleur pour gérer la pagination et passer à des langages haut - niveau comme le Pascal, Ada voire même C++ pour réaliser ses propres noyaux et systèmes d’exploitation. L’arrivée d’outils libres de droits comme GNU, BSD ou Linux ont offert à tous la possibilité de développer des systèmes autonomes à moindres frais sans s’écarter des standards de l’industrie.
De nombreuses entreprises de différents 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 système GNU.
De nos jours, il n’est plus nécessaire d’être un génie de l’électronique et de l’informatique pour utiliser une caméra sur son ordinateur, il suffit de disposer du pilote adéquat. Mais comment ce pilote est il réalisé et comment est il intégrer au coeur du système d’exploitation de nos machines ? Ces deux questions nous amène au sujet de mon projet de fin d’étude : Comment relier le monde de l’électronique et de l’informatique au coeur d’un système d’exploitation existant ?
J’ai été amener à couvrir de nombreuses thématiques pour la réalisation de ce projet. Du côté de l’informatique embar-quée, la recherche partait de la préemption au protocole VGA en passant par les nombreux outils de compilation et gestions de dépendances utilisés dans le monde libre. Pour la partie électronique, j’ai été confronté aux problèmes de routage, d’ali-mentation, de connexion de bus dont les solutions nécessitaient de nombreuses investigations. C’est avec un très grand intérêt que j’ai mené ce projet et c’est avec plaisir que je vous présente le résultat de mon travail.
3