Mise à jour : 12-Fév-2009

| Présentation et documents | Livres | Portails et magazines | Linux embarqué commercial | Montavista | LinuxWorks/BlueCat | RedHat/embedded | Linux embarqué libre | LRP | ELKS | Tom's Boot Root | Small Linux | PeeWee Linux | µClinux | Temps Réel | RTLinux | RTAI | eCos | TimeSys | Outils | Liens |
| µClinux/68K | µClinux/ColdFire | µClinux/NIOS | µClinux/NIOS II | µClinux/Microblaze | µClinux/Samsung | µClinux/H8S | µClinux/V850 | µClinux/Blackfin |
| Porter Linux | Linux/x86 | Linux/68K | Linux/PPC | Linux/sans MMU | Linux/StrongARM/XScale | Linux/Alpha | Linux/SuperH | Linux/IA-64 | Linux/MIPS | Linux/SPARC | Hardware |
Cette page contient des informations spécifiques à Linux embarqué et au problème du portage de Linux sur une carte électronique. C'est le complément de la page générale consacrée aux systèmes embarqués.
Le panorama et les tendances du marché Linux embarqué. Une enquête de linuxdevices.com. L'enquête complète ici.
Vous trouverez ici un certain nombre d'informations sur ce sujet :
Voici une liste de livres traitant des systèmes embarqués et des systèmes Temps Réel. La plupart sont en anglais.
TOP 5:
Codification :
***** 12/02/09 Design
our own embedded Linux Control Centre on a PC. H. H. Skovgaard. Editions Elektor.
2008. Dans un contexte domotique, ce livre présente comment construire
un système Linux embarqué à l'aide d'un vieux PC de récupération.
La distribution choisie est DSL (Damn Small Linux). L'auteur y rajoute un
serveur web, une base de données et un moteur PHP. Grâce à
un module électronique fait maison connecté sur le port parallèle
du PC et avec une webcam, l'auteur montre pas à pas comment construire
son système domotique contrôlé à distance par le
web. Ce livre est très bien fait et facile d'accès. Des annexes
abondantes fournissent tous les schémas électroniques et les
sources logiciels pour refaire le système. Bravo !
***** 20/04/07 Embedded
Linux Primer. A Practical Real-World Approach. C. Hallinan. Editions Prentice
Hall. 2007. Un livre sur Linux embarqué qui reprend les mêmes
thèmes que ses prédécesseurs : introduction, première
expérience Linux embarqué, les processeurs pour Linux embarqué,
le noyau Linux, l'initialisation du noyau, le processus d'initialisation du
système, les bootlooaders, les drivers, les systèmes de fichiers,
busybox, l'environnement de développement croisé, les outils
de développement, les outils de debug, le portage de Linux, le Temps
Réel. Ce livre contient néanmoins une contribution très
originale sur certains aspects non traités par d'autres : le processus
de boot du noyau à travers les fichiers sources, un exemple de portage
du noyau Linux sur une carte cible en montrant quels fichiers sources sont
à modifier, les techniques de debug du noyau Linux via kgdb et les
techniques de debug des applications Linux embarqué. C'est vraiment
l'originalité de ce livre, ce qui en fait au final un excellent livre
à posséder !
23/08/06 Embedded Linux System Design and Development. P. Raghavan,
A. Lad, S. Neelakandan. Editions Auerbach Publications. 2006. Vraiment un
livre exceptionnel sur Linux embarqué qui traite d'un domaine peu publié
: le portage de Linux. Après une introduction sur Linux embarqué
et sur l'architecture de Linux, un exemple de portage de Linux embarqué
sur une carte MIPS est décrit en détail. Un excellent chapitre
sur la mémoire FLASH, MTD et JFFS2 est proposé. Un chapitre
décrit l'écriture de drivers sur la carte MPIS : Ethernet, I2C,
USB, timers... Un chapitre est consacré au portage d''applications
sous Linux embarqué. Le temps réel sous Linux est aussi traité
ainsi que l'API POSIX et ses IPC. Le debugging est passé en revue ainsi
que le profiling. Les environnements graphiques pour Linux embarqué
sont décrits dans un chapitre. Enfin, µClinux est très
bien présenté. Il est à noter qu'en appendice, il est
décrit comment réduire le temps de boot du noyau Linux. Ce livre
est une perle et bien écrit. A s'acheter absolument !
Linux embarqué. P.
Ficheux. Editions Eyrolles. 2002, 2006 revue et complétée.
Tout sur Linux (Temps Réel) embarqué. Fait par un bordelais.
LA BIBLE. A ACHETER ABSOLUMENT ! Les annexes
en ligne du livre de Pierre
* 01/07/06 Linux Robotics.
D. Newman. Editions Mac Graw Hill. 2006. C'est un livre qui est sensé
montrer l'usage de Linux dans la robotique. En fait, il en est rien ! L'auteur
parle de matériel, de fer à souder, de composants électroniques,
de programmation mais point de Linux hormis le citer en introduction. Les
programmes sont écrits en Java. Sur 290 pages, il n'y a que 150 pages
réelles, le reste étant du code source Java. Rien de très
linuxien là-dedans ! A fuire !
***** Building Embedded
Linux Systems. K. Yaghmour (créateur du projet ADEOS).Editions O' Reilly.
2003. Là aussi, tout sur Linux embarqué. Un chapitre exceptionnel
sur la mise en place d'un environnement de compilation croisé tant
au niveau de la configuration du compilateur gcc mais aussi de l'organisation
d'un projet Linux embarqué. Un très bon chapitre sur les systèmes
de fichiers (MTD, JFFS2, CRAMFS...) et sur les bootloaders et notamment U-Boot
! Une très bonne vue du processus de création d'un système
Linux embarqué. Complète a merveille le livre de Pierre.A ACHETER
ABSOLUMENT ! Le site
du livre. On pourra notamment télécharger une fiche
d'identification d'un système Linux embarqué. Les annexes
du livre
* 16/12/03 Practical Linux
Programming.A. Khan. Editions Charles River Media. 2002. Un livre qui se veut
très général sur le développement sous Linux et
Linux embarqué. Un mélange de genres : de SQL à la programmation
socket en passant par les CGI. Trop superficiel. A éviter. Revue
de presse de Linux Journal
*** 10/10/03
Linux for Embedded and Real-time Applications. D. Abbott. Editions Newnes.
2003. Un livre moyen sur Linux embarqué. La première partie
définit et explique en quoi consiste Linux embarqué. Un chapitre
d'introduction sur le Temps Réel est proposé qui est ni plus
ni moins celui écrit par Jean Labrosse sur µC/OS II ! Néanmoins,
une bonne présentation du Temps Réel sous Linux et un chapitre
de mise en oeuvre de RTAI sont proposés. On pourra apprécier
en annexe la description de l'API RTAI et de l'API threads POSIX. Sur le CDROM
fourni, on trouvera une version électronique du livre
**** Embedded Linux.
J. Lombardo. Editions New Riders. 2001. Présentation de Linux embarqué.
Etude et construction d'un Linux embarqué à la main, avec PeeWeeLinux,
BlueCat. Présentation de ELW
(Embedded Linux Workshop). Mise en oeuvre d'une mémoire DOC avec ELW.
Le site du
livre. La revue
du livre par linuxdevices.com
** 12/05/06 Open-Source
Robotics and Process control Cookbook. L. Edwards. Editions Newnes. 2005.
Un livre à mi-chemin entre les systèmes embarqués et
Linux. Une présentation sur les microcontrôleurs (Atmel AVR)
est donnée ainsi que la mise en oeuvre d'équipements électroniques
dans un contexte robotique. Un exemple concret de mise en oeuvre de Linux
embarqué sur une carte SBC x86 est ensuite décrit. Enfin, le
chiffrement est abordé. Un livre un peu fourre tout. Assez moyen


On pourra consulter et/ou s'abonner en ligne aux magazines suivants :

Des éditeurs de logiciels proposent des solutions professionnelles clé en main pour construire un Linux embarqué sur différentes cibles :
Montavista propose différentes solutions Linux embarqué en fonction d'un profil métier et des besoin (Java/Linux, GUI pour l'embarqué...) :
Montavista avec sa version professionnelle propose des solutions Linux embarqué (ses kits) pour processeurs :
LinuxWorks propose
sa distribution Linux embarqué BlueCat
pour processeurs :
On peut télécharger BlueCat pour évaluation pour une cible x86
RedHat propose une distribution Linux embarqué :
On trouvera ici des projets Linux embarqué (et en particulier les versions minimales de Linux) tournant généralement sur une disquette avec un processeur Intel. Chaque projet présente ses avantages : orienté réseau, tournant sur processeur Intel 80286 et inférieur...On pourra trouver une comparaison de ces solutions ici en complément des solutions proposées ci-dessous que j'ai pu entièrement testées. Une liste à jour est disponible sur le site linuxembedded.com et en particulier celle concernant les versions minimales de Linux...
Le projet LRP (Linux Router Project) consiste en une version Linux minimale tenant sur une disquette 3'1/2 pour créer une machine (un PC par exemple) routeur IP. La disquette contient toutes les commandes d'administration Linux et en particulier celles d'administration réseau (arp, ifconfig, netstat, route...). La commande spécifique lrcfg permet de configurer l'interface réseau, sauvegarder les partitions /root, /etc sous forme de packages... L'interface réseau est pilotée par le module Linux correspondant qui est chargé au boot. LRP est un très bon produit pour recycler des vieux PC. Il tourne sur processeur Intel 386 et supérieur. LRP n'a pas besoin de disque dur.
Les liens intéressants sur LRP sont :
Le projet Tom's Boot Root consiste en une version Linux minimale tenant sur une disquette 3'1/2 avec toutes les commandes d'administration Linux et de montage de partition. L'interface réseau est automatiquement détectée par le chargement du module Linux correspondant (supporte toutes les cartes 3Com). Le projet Tom's Boot Root est un très bon produit pour se constituer une disquette de secours en cas de crash que l'on nomme autrement de façon plus vulgaire (disquette b... et c... :-) ). Il tourne sur processeur Intel 386 et supérieur et n'a pas besoin de disque dur.
Les liens intéressants sur TBR sont :
Le projet ELKS (Embeddable Linux Kernel Subset) consiste en une version Linux minimale tenant sur une (une disquette de boot et partition /root sur disque dur) ou deux disquettes 3'1/2 (une disquette de boot et une disquette /root). Son intérêt principal est d'utiliser les vieux PC 80286 et inférieurs. ELKS a besoin d'un PC "honnête" pour le crossdéveloppement (génération des disquettes). ELKS étant en version 0.x.x, les outils de développement embarqués sur le PC ELKS sont inexistants. On ne peut donc utiliser que les exécutables générés sur le PC de crossdéveloppement que l'on peut quand même tester sur ce dernier en générant un objet qui va bien. ELKS n'a pas encore intégré les couches réseaux ni l'accès aux ports d'E/S. Le principal intérêt est le challenge d'installer Linux sur un 80286 et inférieur (j'ai pu tester ELKS sur un Amstrad 286). On peut quand même développer une application ELKS et la faire tourner sur le PC qui devient autonome (je pensais réutiliser un vieux 8086 pour piloter mon arrosage...:-) ).
Les liens intéressants sur ELKS sont :
Le projet Small Linux consiste en une version Linux minimale tenant sur deux disquettes 3'1/2 (une disquette de boot et une disquette /root). Small Linux tourne sur processeur Intel 80386 et supérieur et n'a pas besoin de disque dur. 2 Mo de RAM sont nécessaires. Un disque dur externe peut aussi être utilisé. L'accès aux couches réseaux se fait par liaison série par les protocoles SLIP ou PPP ce qui n'est pas forcément l'idéal... Small Linux supporte un client X11, Tiny X (moins de 4 Mo de RAM).
Les liens intéressants sur Small Linux sont :
Le projet PeeWeeLinux permet très facilement à l'aide d'un outil graphique sous curses de construire un Linux From Scratch pour machine avec processeur x86 :
Le projet µClinux (Embedded Linux Microcontroller Project) est le plus intéressant des projets Linux embarqué car très ouvert. C'est une version Linux minimale où l'on a supprimé la partie MMU génant pour un système embarqué et encore plus s'il est Temps Réel. µClinux est activement porté sur différents microcontrôleurs : 68EZ328, ColdFire, ARM...Le premier portage a été fait pour le microcontrôleur 68EZ328 (DragonBall) et un prototype commercial est disponible sous forme d'une barette SIMM : projet µCsimm. Le format choisi n'est pas vraiment fait pour un environnement industriel. Une reprise du projet par l'ENSEIRB est prévue pour réaliser un format de carte industrielle avec inclusion de l'interface Ethernet 10BaseT. Un intérêt évident de µClinux est l'intégration des protocoles Internet ce qui lui assure ainsi la fameuse connectivité Internet (voir le document de l'ENSEIRB sur le sujet).
Les liens intéressants sur µClinux sont :
Le projet µClinux sur ColdFire
![]()
Vous trouverez ci-dessous tout ce qu'il faut pour développer µClinux sur processeur ColdFire :
Le
projet µClinux sur processeur soft Altera NIOS et NIOS II
Le SoC (System on Chip) prend une part de plus en plus importante dans la conception de circuits numériques complexes. Altera propose un IP processeur soft NIOS au travers de son outil Quartus II ainsi que le processeur ARM. Il ne manquait plus qu'un portage de Linux pour avoir une véritable solution de CoDesign. La société Microtronix a réalisé le portage µClinux pour NIOS. Vous trouverez ci-dessous tout ce qu'il faut pour développer µClinux sur processeur NIOS (puis ARM) :
Une deuxième version de softcore NIOS appelée NIOS II a été développée par ALTERA. Le portage de µClinux pour noyau 2.6 existe sous licence GPL avec des restrictions d'utilisation : le fichier de programmation du circuit FPGA n'est utilisable que 20 jours et l'on n'a pas de projet Quartus II correspondant. A télécharger sur le portail niosforum.com sponsorisé par Microtronix et Altera.
Le
portail
niosforum.com

Le projet µClinux sur processeur soft Xilinx
Microblaze
Le SoC (System on Chip) prend une part de plus en plus importante dans la conception de circuits numériques complexes. Xilinx propose un IP processeur soft Microbaze. Vous trouverez ci-dessous tout ce qu'il faut pour développer µClinux sur processeur Microblaze :
Le projet µClinux sur processeur Blackfin
Analog Devices ![]()
Un noyau Temps Réel considérant Linux comme tâche de plus faible priorité. Une solution GPL valable et digne d'intéret. Voici une liste de références sur le sujet :
RTAI (Real Time Application Interface) noyau Temps Réel dérivé de RTLinux où l'on a étoffé l'API (sémaphores...). RTAI est incompatible au niveau de l'API avec RTLinux V3 car dérivé de RLinux V1. Voici une liste de références sur le sujet :
TimeSys propose 2 produits Linux Temps Réel :
Les 2 produits sont basés sur un noyau Linux modifié pour les contraintes Temps Réel :application d’un patch propriétaire de type kpreempt (Montavista) pour rendre le noyau préemptif : temps réel mou
eCOS est un noyau Temps Réel développé par RedHat pour processeurs ARM, Hitachi H8300, Intel x86, MIPS, Matsushita AM3x, Motorola 68k, PowerPC, SuperH, SPARC et NEC V8xx. C'est un projet open source. Voici une liste de références sur le sujet :

Quand on développe sa propre carte électronique SBC (Single Board Computer), on peut se demander s'il est possible de porter Linux dessus. Si sa carte est assez similaire à une carte déjà existante sur laquelle Linux a été portée, il y a de grandes chances que cela soit possible. Le portage est relativement simple et automatisé si l'on a choisi un processeur de la famille x86 avec des outils comme PeeWeeLinux et LFS. Les liens suivants expliquent comment réaliser un portage Linux, comment booter Linux... :
L'intérêt d'utiliser comme cible un processeur x86 est de bénéficier d'un environnement de développement natif (pas d'environnement croisé à installer sur son PC hôte de développement). On pourra utiliser comme cible un PC industriel ou des cartes SBC aux normes PC/104, PC/104+ ou EBX :
Portage Linux cible 68K et carte VME![]()
Portage Linux cible PowerPC Motorola![]()
Portage Linux cible microcontrôleur sans MMU![]()
Portage Linux cible ARM, StrongARM et XScale![]()
Le portage pour ces processeurs est issu du portage de Linux sur PDA :
Portage Linux cible SuperH Hitachi![]()
Portage Linux cible IA-64 Intel![]()

Quand on fait de l'embarqué, on a généralement des contraintes importantes :
On utilise alors des cartees électroniques faites maison ou des cartes industrielles autres qu'une carte mère standard de PC. On pourra s'orienter vers des matériels type cartes SBC pour embarquer Linux :

Voici quelques documents concernant les outils/packages libres pour l'embarqué :
Ci-après une liste d'outils/packages dédiés à l'embarqué (faible empreinte mémoire...) :
BOOTLOADERS LINUX :
BIBLIOTHEQUES LIBC :
EDITEURS DE TEXTE :
SHELLS ET COMMANDES :
CONNECTIVITE IP :
GUI :
AUTRES :

Quelques liens intéressants :