"…mais ce serait peut-être l'une des plus grandes opportunités manquées de notre époque si le logiciel libre ne libérait rien d'autre que du code…"

Développement système du noyau et des pilotes GNU/Linux

Posted by patrick sur décembre 11, 2007

Pour le développement système sous GNU/Linux la référence pour moi reste le livre de Pierre Ficheux « Linux Embarqué ». Il a écrit un certain nombre d’articles dans GNU/Linux magazine concernant le développement système sous GNU/Linux. Attention cependant: certains articles sont relativement anciens et méritent d’être largement réactualisés. Ils peuvent néanmoins servir de base pour une introduction et sont intéressants à titre historique.

  • Création d’un serveur PPP sous LINUX (« Septembre 1998. Cet article décrit la mise en place d’un serveur PPP sous LINUX. Ce serveur pourra être accessible depuis n’importe quel système équipé d’un modem et d’un logiciel d’accès à un réseau distant supportant le protocole PPP. Ceci permettra par exemple de créer simplement un BBS (Bulletin Board System) accessible depuis un navigateur standard. Ce type d’accès est très interessant pour donner la possibilité à des utilisateur éloignés d’accèder à un Intranet d’entreprise« )
  • Présentation du protocole UUCP(« Cet article présente l’utilisation et la configuration du protocole UUCP (Unix to Unix CoPy) sur LINUX. UUCP permet de manière très efficace de transférer des fichiers, du courrier électronique ou bien des news.« )
  • Ports séries sous LINUX (« Le but de cet article est la compréhension du fonctionnement des ports séries sous LINUX. L’article abordera également la configuration des ports séries depuis le shell sh ainsi qu’en langage C.« )
  • Multi-threading sous LINUX (« article d’avril 1999 à mettre à jour bien sûr: Cet article est une introduction à la programmation multi-threads sous LINUX. Les exemples de programmation utilisent la bibliothèque LinuxThreads disponible en standard sur la majorité des distributions LINUX…« )
  • Un systeme de transmission vidéo sur TCP/IP(« décembre 1998. Cet article décrit un système de transmission vidéo sur TCP/IP développé sous LINUX à partir d’un boiter de compression vidéo autonome appelé ViewCOM et développé par la société COM One à Bordeaux« )
  • Pilotes de périphériques sous LINUX (« mars 2000 : Cet article est une initiation à l’écriture de pilotes de périphériques (device drivers) sous LINUX. Les concepts généraux présentés dans l’article sont illustrés d’un petit exemple de pilote en mode caractère (char driver). La lecture de l’article demande quelques connaissances en langage C.« )
  • Programmation audio sous LINUX (« janvier 2000: Cet article est une introduction à la réalisation d’applications audios sous LINUX. Nous présenterons successivement la configuration du noyau LINUX pour le support audio, l’utilisation des fichiers spéciaux (devices) utilisés par le noyau et une introduction à la programmation en C de l’API audio de LINUX. Dans une dernière partie, nous présenterons un petit exemple d’application réalisant du streaming audio« )
  • Construction d’un système LINUX embarqué (« septembre 2000 : Le but de cet article est de présenter les différentes étapes de la réalisation d’un système LINUX embarqué (embeddable LINUX). L’article détaille les différents éléments majeurs du système ainsi que les étape de la réduction de l’occupation mémoire et disque. Nous aborderons également quelques techniques pratiques propres à la réalisation de systèmes embarqués. L’article s’appuie sur une réalisation personnelle de l’auteur. Il ne s’agit pas de la présentation de la revue d’un système embarqué de plus mais plutot d’une démarche pédagogique« )
  • Pilotes de périphériques PCI (« juin 2002: Cet article est un introduction à la gestion du bus PCI sous LINUX ainsi qu’à l’écriture de pilotes dédiés aux cartes PCI. C’est également une suite et une mise à jour de l’article Introduction à l’écriture de pilotes de périphériques LINUX paru en mai 2000 dans ce même journal. Même si certains concepts généraux liés aux pilotes et aux modules du noyau sont rappelés dans cet article, sa compréhension nécessite quelques connaissances préalables ou bien la lecture de documents cités dans la bibliographie en fin d’article« )
  • Temps réel sous LINUX (mai 2003, « Cet article a pour but de réaliser un tour d’horizon des solutions temps réel dans l’environnement LINUX. Après une définition du concept de système temps réel, les auteurs
    s’attacheront à décrire les solutions logicielles disponibles ainsi que quelques exemples de résultats obtenus…
    « )
  • Embarquez Linux! (ou Linux everywhere) (septembre 2004, « Le but de cet article est de décrire quelques techniques utilisables pour embarquer une distribution Linux réduite sur divers supports de faible capacité (CompactFlash, Disk On Module ou DoM, clé USB, Disk On Chip ou DoC). Après avoir présenté les différents supports étudiés, nous détaillerons
    une structure de système permettant de garantir une sécurité maximale de l’installation tout en minimisant l’empreinte mémoire
    . »)
  • Programmation de l’API Video4Linux (mars 2005, « Cet article décrit l’interface de programmation Video for Linux (plus communément appelée V4L) destinée à l’utilisation de périphériques de capture vidéo comme les cartes d’acquisition ou les caméras. Outre l’utilisation des pilotes existants, l’article décrit également les bases de l’écriture d’un
    pilote de périphériques V4L (caméra virtuelle) dans le cas des noyaux 2.4 et 2.6.
    ..Le problème du pilotage des périphériques vidéos est assez complexe car il existe une multitude de possibilités tant au niveau du type de périphérique (caméra, carte d’acquisition), des caractéristiques
    de ces périphériques (couleur ou noir et blanc, taille d’image, résolution) de l’architecture matérielle (type de circuit d’acquisition utilisé) ou des modes de connexion (bus PCI, USB, parallèle). Pour simplifier les choses, les développeurs du noyau Linux ont défini une interface appelée Video for Linux (Video4Linux ou V4L
    ). »)
  • Compilation croisée sous Linux et Windows (mars 2005, « Cet article décrit la mis en place d’une chaîne de compilation croisée utilisable dans l’environnement Linux x86 ou bien Windows 2000 et XP. Au cours de ce document nous décrirons des tests réels sur une cible Linux ARM mais les concepts décrits restent valable pour une autre architecture type
    PowerPC ou MIPS.
    ..Dans la série d’articles consacrés aux aspects industriels et embarqués de Linux publiés précédemment, nous avons toujours utilisé un environnement Linux x86. Même si cet environnement est très répandu, il est loin d’être le seul utilisé dans ce type d’application. En effet, d’autres processeurs comme l’ARM ou le PowerPC sont parfois mieux adaptés que l’architecture x86.
    Cependant, la plupart des développeurs utiliseront un PC x86 (Linux ou Windows) comme poste de travail et il est donc nécessaire de mettre en place un chaîne de développement croisée permettant de développer du code non-x86 sur un PC. Dans cet article, nous allons décrire plusieurs solutions open sources disponibles utilisables sur Linux x86. Ne expliquerons également comment mettre en oeuvre certains de ces outils sur plate-forme Windows en utilisant l’environnement d’émulation
    CYGWIN. A titre d’exemple, nous mettrons en place et testerons une chaîne de développement pour cible Linux ARM.
    « )
  • Quelles solutions pour Linux embarqué (décembre 2005, « Le but de cet article est de replacer Linux dans le contexte des systèmes industriels et embarqués. Le précédent article « Introduction aux systèmes embarqués » a permis de définir la terminologie et le champ d’application de cette technologie. De notre côté, nous nous attacherons à expliquer
    brièvement quels sont les avantages de Linux dans cet environnement ainsi que les composants logiciels disponibles (compilateurs, débogueurs, extensions temps-réel, etc.) Nous effectuerons également un tour d’horizon des autres solutions disponibles tout en positionnant
    Linux parmi cette liste et ce en s’aidant de quelques données statistiques. Les références à différents articles, site web ou ouvrages traitant plus précisément des sujets cités sont données en bibliographie.
    La qualification de logiciels libre nécessite de satisfaire à un certain nombre de critères. La liste complète est disponible auprès du site http://www.opensource.org mais nous pouvons retenir trois critères fondamentaux pour le logiciel embarqué:
    • La disponibilité du code source
    • La possibilité de réaliser des travaux dérivés
    • La redistribution sans royalties
    La disponibilité du code source est un critère fondamental car contrairement au logiciel classique (comme le logiciel bureautique), la durée de vie d’un logiciel embarqué est particulièrement longue
    car elle est liée à la durée de vie de l’équipement matériel qui l’héberge. Des contraintes économiques et légales font que certain
    s biens de consommation doivent être maintenus au moins 10 ans. Cette durée est parfois beaucoup plus longue dans le cas de matériel militaire ou
    scientifique. De ce fait il sera nécessaire de faire évoluer ce logiciel sur un matériel considéré comme obsolète et ce indépendamment des aléas économiques comme par exemple la disparition d’un éditeur de logiciel. Certaines licences associés aux logiciels libres (comme la GPL ou la LGPL) imposent la disponibilité du code source « ad vitam aeternam » et ce dernier ne pourra donc être séquestré même pour de sombres raisons légales ou financières.
    La réalisation de travaux dérivés est un avantage compétitif certain. Il paraît absurde de nos jours de développer une bibliothèque de traitement JPEG ou XML. Ce n’était pas forcément le cas il y a encore quelques années, ou bon nombre de petites entreprises , par ignorance ou par obstination, se lançaient dans de coûteux développements sans considérer l’existant déjà disponible à l’époque au travers du logiciel libre (je parle malheureusement en connaissance de cause !). Le problème des

    licences est à considérer avec soin dans le cas du travail dérivé mais cela n’a rien d’insurmontable et des règles simples découlant du bon sens suffisent largement au respect de licences comme la GPL ou la LGPL. La redistribution sans royalties est un atout économique évident dans le cas de la diffusion en masse d’un équipement. Avec le critère de disponibilité du code source (lui-même inspiré par des contraintes économiques) c’est certainement un des principaux arguments motivant l’adoption des logiciels libres en remplacement de solutions propriétaires. »)
  • Busybox « in a nutshell » (novembre 2005, PDF. « Cet article décrit la mise en place rapide d’un système Linux embarqué autour
    d’un noyau 2.6 et du composant libre Busybox (http://www.busybox.net ). Il fait suite aux diverses publications de l’auteur sur ce sujet dont les références sont citées en annexe bibliographique. L’article décrira l’exemple d’un PC x86 mais les concepts sont bien entendu adaptables à d’autres architectures. Le projet buildroot utilisant BusyBox et uClibc sera brièvement présenté en fin d’article sous forme d’un exemple sur architecture ARM9.
    « )
  • Temps réel sous Linux (reloaded) (mars 2006, PDF. Cet article est une mise à jour du dossier Temps réel sous Linux paru en juillet 2003
    dans le numéro 52 de Linux Magazine. Après une définition des concepts liés au temps réel, nous nous attacherons à décrire les solutions Linux disponibles en insistant particulièrement sur le composant XENOMAI 2. La lecture et la mise en application des exemples décrits nécessite une
    bonne connaissance « système » de Linux en particulier sur la compilation du noyau. Les codes source des programmes présentés sont disponibles sur http://pficheux.free.fr/articles/lmf/hs24/realtime/hs24_test.tgz
    )
  • Routeur Wifi sous Linux (mars 2006, PDF. « Cet article décrit la mise en oeuvre d’un routeur WIFI sous Linux et utilisant une architecture
    compatible x86 (VIA C3). Le projet fut démarré en 2003 ce qui explique les choix techniques qui peuvent aujourd’hui paraître quelque peu désuets (noyau 2.4.20, pas de Busybox, etc.). Il est bien évident qu’une architecture plus récente conduirait au même résultat sans pour cela changer réellement la démonstration. Le projet est totalement viable puisque qu’il a conduit à un système utilisé dans un environnement domestique 24h/24H depuis 3 ans sans aucun redémarrage, mise à part les coupures de courant ou quelques évolutions du logiciel »
    )

A voir:

Des articles plus généraux:

  • http://fr.wikipedia.org/wiki/Syst%C3%A8me_temps_r%C3%A9el (« En informatique industrielle, on parle d’un système temps réel lorsque ce système informatique contrôle (ou pilote) un procédé physique à une vitesse adaptée à l’évolution du procédé contrôlé….Les systèmes informatiques temps réel se différencient des autres systèmes informatiques par la prise en compte de contraintes temporelles dont le respect est aussi important que l’exactitude du résultat, autrement dit le système ne doit pas simplement délivrer des résultats exacts, il doit les délivrer dans des délais imposés…« )
  • http://systeme.developpez.com/cours/#C3 (« des cours sur l’architecture, les systèmes embarqués, les systèmes temps réels, les systèmes d’exploitation, les systèmes répartis, les réseaux, le parallèlisme et les grilles de calcul, la sécurité, la compression audi et vidéo, les annuaires LDAP »)

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :