Mise à jour : 12-Jui-2018
- BIENVENUE DANS L'UNIVERS DE
- LINUX EMBARQUE
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.
PRESENTATION
ET DOCUMENTS
Vous trouverez
ici un certain nombre d'informations sur ce sujet :
- Présentation
: GNU/Linux, Systèmes embarqués de N. Ferre
- Manuel
de TP "Linux carte Fox Board LX816" de Sébastien Philippe. Merci
à lui !
- Manuel
de TP "Linux carte Fox Board LX832" de Sébastien Philippe. Merci
à lui !
- Conférence
FOSDEM sur les systèmes embarqués et Linux embarqué
- Présentation
de Linux embarqué de Julien Gaulmin
- Cours
de free-electrons.com (Michael Opdenacker)
- Cours
sur le langage C pour l'embarqué de l'ENSEIRB
- Page récapitulant mes contributions
au journal Linux Magazine
- Présentation
"Linux embarqué : le pari réussi d'une PME bordelaise" à
RTS 2006, 5-7 avril 2006
- Présentation
aux 4èmes Journées de Linux Grenoble 4JLG
- Rapport
de stage sur Linux embarqué de F. Gaspoz
- Rapport
de stage sur Linux et les systèmes embarqués de N. Ferre Version
PDF ici
- Rapport
de stage de Thomas Pettazoni sur buildroot
- Document "Real-Time
Technology in Linux".S.T. Dietrich. Freescale Technology Forum. Orlando
2005
- Document "Building
GNU tool chains for PowerPC target Systems". P. Brownfield. Freescale
Technology Forum. Orlando 2005
- Article "Using
Linux for Real-Time Applications". Armand Marchesin. Merci Armand !
LIVRES
Voici une liste de livres traitant de Linux embarqué que j'ai lus
et dont voici ma revue. La plupart sont en anglais. Ces livres sont disponibles
à la bibliothèque de l'ENSEIRB-MATMECA pour les étudiants
de l'école.
TOP 5 :
-
Linux embarqué. Mise
en place et développement. P. Ficheux
- Embedded Linux System Design and Development.
P. Raghavan, A. Lad, S. Neelakandan
- Building Embedded Linux Systems. K. Yaghmour
- Embedded Linux. J. Lombardo
- Embedded Linux. C. Hollabaugh
- Linux embarqué. Mise en place et développement. P.
Ficheux. Editions Eyrolles. 2017. Cette 5ème édition a
été complètement revue et réécrite. Et
c'est une réussite ! Le livre ne fait plus que 220 pages, plus compact
et plus ciblé. Il se compose d'une présentation sur les systèmes
embarqués et sur Linux et le logiciel libre. Une partie donne des
informations sur l'environnement de développement sous Linux embarqué.
Puis 4 points : construire sa distribution à la main (partie réécrite
en mieux), Buildroot, Yocto et u-boot. Concernant u-boot, c'est dommage
de n'avoir pas continué avec la carte Rapsberry Pi. Enfin une dernière
partie sur la conception d'un objet connecté à l'aide d'une
carte Raspberry Pi Zero. LA BIBLE. A ACHETER ABSOLUMENT !
-
***** 28/03/17
Yocto for Raspberry Pi. J.P. Texier et P. Mabäcker. Editions Packt
Publishing. 2016. Un livre entier sur Yocto pour la carte cible Raspberry
Pi, un build systems pour créer sa distribution Linux embarqué.
Le livre présente Yocto avec clarté et beaucoup de figures,
ce qui est un challenge tellement Yocto est... compliqué. Le livre
présente le projet Yocto, la construction d'une image Pocky pour
RPi, les outils Hob et Toaster, BitBake, Qt, la création de paquetages
RPM et IPK, la mise en oeuvre de SPI et I2C sur RPi par recipes Yocto.
Il y a un excellent chapitre sur la mise en oeuvre sur RPi d'un écran
touchscreen sous Linux et sous Yocto. Enfin, la création d'un projet
domotique avec une carte RPI et Yocto est abordée. Ce livre est vraiment
bien fait pour aller à l'essentiel avec simplicité. A lire
en premier avant d'aborder un livre plus complexe comme le suivant de R.
Streif...
-
**** 16/03/17
Embedded Linux Systems with the Yocto Project. R. Streif. Editions Prentice
Hall. 2016. Un livre entier sur Yocto, un build systems pour créer
sa distribution Linux embarqué. Yocto est difficile à appréhender
contrairement à son concurrent buildroot mais ce livre le détaille
complètement. Il présente Linux pour les systèmes embarqués,
le projet Yocto et son histoire (OpenEmbedded, BitBake, Poky Linux), le
build systems OpenEmbedded, le moteur BitBake. Le chapitre 6 est
intéressant car il présente Linux et Linux embarqué.
Puis on aborde la question de construire sa propre distribution, les recipes
pour les paquetages, les recipes pour le noyau, la construction d'un
BSP, toaster et plus encore le tout en 455 pages. Au final, c'est un livre
exhaustif pour celui qui désire comprendre et utiliser Yocto qui
demande beaucoup d'efforts pour comprendre la bête...
- **** 19/01/16 Linux
embarqué. Comprendre, développer, réussir. G. Blanc.
Editions Pearson. 2011. Un livre général sur Linux embarqué
composé de 4 parties. Les deux premières sont assez générales
sur le Libre et l'embarqué, Linux, les distributions, les licences
ainsi que sur la façon de penser son projet Linux embarqué.
Les deux dernières parties sont plus techniques sur le noyyau Linux
et les modules, l'organisation, le cross développement et sa mise
en oeuvre mais aussi sur le debug, u-boot et bien plus ! Un livre très
didactique où l'on sent l'expérience de l'auteur mais qui
risque de noyer le néophyte devant tant d'informations...
- *** 07/02/12 Smart
Home Automation with Linux. S. Goodwin. Editions Apress. 2010. Un livre
sur la mise en oeuvre de Linux dans le contexte domotique. Une présentation
de X10, C-Bus, Ethernet et IR est réalisée. Différentes
plateformes embarquées sont passées en revue (comme arduino,
NSLU2...). Après l'auteur parle aussi de systèmes multimédia
comme les NAS, de communications (emails, SMS...) de sources publiques de
données (météo...) et d'intégration ! On s'éloigne
au fur et à mesure de la domotique, dommage. Le projet heyu est aussi
abordé. Un livre un peu trop fourre tout !
- ***** 04/11/11 Embedded
Linux Primer. A Practical Real-World Approach. C. Hallinan. Editions Prentice
Hall. 2ème édition. 2011. Deuxième édition encore
plus complète ! 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. Des exemples pris sur la mise en application d'une carte
PowerQUICC 8548E. 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 !
- ***** 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 !
- * 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
PORTAILS
ET MAGAZINES
On pourra consulter les portails sur les systèmes (Temps Réels)
et linux embarqués suivants :
PORTER LINUX
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... :
- Document
: comment compiler et configurer un noyau Linux
- Document
: description du processus de boot de Linux
- Document "Porting
Linux to the M32R processor". H. Takata
- Document
"Custom Linux: A Porting Guide - Porting LinuxPPC to a Custom SBC"
de S. Erlich hébergé par LDP.
Toutes les étapes du portage de Linux sur une carte SBC PowerPC. Très
instructif !
- Article
dans Linux Journal (issue 66 10/99) "Porting Linux to a PowerPC Board"
de H. Zhu and X. Chen. Les étapes du portage Linux sur une carte PowerPC
- Article
dans Linux Journal (issue 33 01/97) "Booting Linux from EPROM" de
D. Bennett. Booter Linux depuis une mémoire EPROM
- Article
dans Linux Magazine "Construction d'un système LINUX embarqué
de P. Ficheux
HARDWARE POUR L'EMBARQUE
Quand on fait de l'embarqué, on a généralement des contraintes
importantes :
- consommation électrique
- robustesse, fiabilité
- encombrement
- ...
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 :
CARTES ARM :
- Cartes SBC ARM d'Eukréa.
Le cogérant est E. Benard, ancien de l'ENSEIRB et actif contributeur
dans le monde du libre et de l'embarqué !
- Cartes SBC ARM de
Kwikbyte
- Cartes SBC ARM de
JKMicro
- Cartes
SBC Armadeus ARM possèdant un circuit FPGA Xilinx Spartan 3. Cette
carte est particulièrement intéressante pour ceux qui veulent
développer un système embarqué en codesign avec un système
SoC !
- Cartes
SBC Raspberry Pi
CARTES X86 :
CARTES AUTRES :
REVENDEURS :
- Revendeur mini-ITX.com.
Toutes les cartes au format mini ITX
- Revendeur Anteor de
cartes mini-ITX et de cartes Lex System (modèles appelés Neo
et Neris...)
- Revendeur itx-france.com
de cartes mini-ITX et de cartes Lex System (modèles appelés
Neo et Neris...)
- Revendeur magma-france.com
de cartes mini-ITX
- Revendeur Silink
OUTILS POUR L'EMBARQUE
Ci-après une liste d'outils/packages dédiés à l'embarqué
(faible empreinte mémoire...) :
BOOTLOADERS LINUX :
BIBLIOTHEQUES LIBC :
EDITEURS DE TEXTE :
- Editeur
e3 tout en un : compatible vi, emacs, wordstar (merci Michel Stempin)
SHELLS ET COMMANDES :
- Shell busybox qui
fournit la quasi totalité des commandes de base (cat, cp, mv, ls, cd, mount…)
CONNECTIVITE IP :
- Serveur Web boa
- Serveur
Web boa avecPHP
- Client
NTP ntpclient
- Serveur
SSH Dropbear
- Login TinyLogin
permettant de se logguer sur le système et faire la maintenance des utilisateurs.
Il utilise les shadow password
- Client/serveur
DHCP udhcp
AUTRES :
- Driver MTD pour mémoire
FLASH
- Outil
LXR de navigation Web à travers les fichiers sources de Linux
- Projet
LTP. Suite de tests d'un système Linux
-
LINUX
EMBARQUE COMMERCIAL
Des éditeurs de logiciels proposent des solutions professionnelles clé
en main pour construire un Linux embarqué sur différentes cibles.
Montavista
LinuxWorks
LINUX
EMBARQUE LIBRE
Linux embarqué sans MMU :
Le
projet µClinux
Une des premières version de Linux embarqué, 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...
Vous trouverez ici un certain nombre d'informations sur µClinux :
- Site officiel de
µClinux (site non commercial). On pourra télécharger µClinux
ici
- Site The µClinux
Directory
- Présentation du
projet µClinux de l'ENSEIRB. Article paru dans Linux Magazine de février
2002
- Présentation de
la mise en oeuvre de SNMP sous Linux et µClinux de l'ENSEIRB. Article
paru dans Linux Magazine de octobre 2002
- HOWTO use MTD/JFFS2
under µClinux
- HOWTO
extend the NET-SNMP agent for embedded systems
- HOWTO
Beginner uClinux and Linux for the Motorola M5272C3
µClinux sur 68K
µClinux sur ColdFire
µClinux sur NIOS II
-
Portage
de µClinux sur NIOS II
sans MMU
- Portage de Xenomai sur NIOS II
sans MMU
- Wiki
Altera
-
-
-
µClinux sur Hitachi H8S
µClinux sur Blackfin Analog Devices
Linux embarqué avec MMU :
Linux sur NIOS II
Linux sur Microblaze
-
Portage
de Linux sur Microblaze
avec MMU (plus de portage maintenu de µClinux
pour MicroBlaze sans MMU)
- Portage de PREEMPT-RT sur
MicroBlaze avec MMU
- Site de Xilinx
- Page SoC
Linux sur x86
- Portage de Linux sur x86
- Script mklibs.sh (à renommer
en mklibs.sh) de DEBIAN permettant de recopier automatiquement les bibliothèques
sous /lib en fonction des exécutables d'un répertoire donné
(utilise ldd)
- Projet Linux
From Scratch
Linux sur 68K et carte VME
Linux sur PowerPC
Linux sur ARM
Linux sur Alpha DEC
Linux sur IA-64 Intel
Linux sur MIPS
Linux sur SPARC
-
Page
officielle de Xenomai
- Page
Xenomai du projet Armadeus
- Page
Xenomai de Denx
- Page
Compiling and Running Xenomai on AMCC PPC 440GX "Taishan" Board de Denx
RTAI
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 :