1 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Introduction à Linux embarqué.

Slides:



Advertisements
Présentations similaires
L’Intéroperabilité. Sommaire  Définition  Développer l’intéroperabilité  Les différents degrés d’opérabilité  La nécessité des normes  Sources.
Advertisements

CHAftITREI ARCHITECTURE de BASE. Modèle de Von Neumann Langage d’assemblage1 John Von Neumann est à l'origine d'un modèle de machine universelle de traitement.
1 Logiciels Libres Planète en fête 6-7 Juillet 2007.
1 Des Logiciels Libres à Linux embarqué Thomas Petazzoni Mardi 1er décembre 2009.
Composants Matériels de l'Ordinateur Plan du cours : Ordinateurs et applications Types d'ordinateurs Représentation binaires des données Composants et.
1 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Introduction à Linux embarqué.
Présentation du système GNU/ LINUX Journée des Logiciels Libres - 10 Décembre 2006.
1 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Introduction à Linux embarqué.
Logiciels Libres quels enjeux pour l'ingénieur ? Thomas Petazzoni.
Présentation de Scribe Votre nouvelle organisation du Réseau Informatique Pédagogique.
Présentation LabPlus v3. Solution novatrice en Technologies de l’information Solution novatrice en Technologies de l’information Application pour la Gestion.
25/09/2016DRT du CRDP de l'académie de Lyon1 OCSInventory Expression du besoin Présentation OCS Démonstrations des fonctionnalités de base Déploiement.
RMLL 2008 Isis-FISH/Gesi Benjamin Poussin Code Lutin
1 Gestion Electronique de documents (GED) ✔ Définition Efficacité d'une entreprise dépend de la capacité à traiter et consulter les informations qu'elle.
Le moniteur Le clavier L'unité centrale (l'ordinateur proprement dit) Qui sont des périphériques DEFINITIONS DE BASE.
L’évolution du SI. Introduction De nombreux éléments peuvent amener une organisation à faire évoluer son système d’information : Modification des besoins.
La mise en réseau des ordinateurs à l'école Sources : Educnet christian.caleca.free.fr.
1. 2 Boite à outils Qt ● Boite à outils C++ pour le développement multi-plateforme d'application en environnement graphique (GUI) – des fonctions GUI.
Système d’exploitation: Principe IFT6800 – E 2008 Pierre Poulin.
Acquisition Rapide Multivoies
Les commandes externes
appareil de mesure (pHmètre P310 Chauvin-Arnoux) Pierre DIEUMEGARD,
La technologie des mémoires
Linux et les Logiciels Libres dans le domaine de l'embarqué
Présenté par M. Anis DIALLO
Utilisation de Windows
Ecriture collaborative d’une dissertation en classe
Fedora 26 Quelles nouveautés ? License CC-BY-SA.
Collecte de données CAPI
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Formation Classe Inversée
Les composants informatiques
Javadoc et débogueur Semaine 03 Version A16.
Virtualisation d’applications mobiles dans un réseau de Cloudlets
Système d’exploitation Windows XP
Installation des OS par réseaux (PXE)
Piloter un robot mbot à distance avec retour vidéo
Tableau de bord des risques
Série CTI 2500® E/S Compact.
Présentation Linux Mint « 18.2 Sonya »
Démarche de conception. Démarche didactique.
Ubuntu + Mobile Loïc Minier 11/09/
Documentation technique (Linux)
Notion De Gestion De Bases De Données
Direction commerciale
Présentation de la carte graphique
Sfaihi Yassine Rabai Fatma Aissaoui Walid
Migration de l’architecture classique vers le cloud privé
Programmation Android Première application Android
Assembleur, Compilateur et Éditeur de Liens
Le logiciel de calcul de Reynaers
LLAGONNE Vincent MAUPIN Nicolas FERNANDEZ Quentin
Module 13 : Implémentation de la protection contre les sinistres
Architecture matérielle des ordinateurs
Utiliser PowerPoint dans le cadre des TPE
Déploiement Windows 10 Forum du CEG 2017 Polyvalence Qualité
18 octobre 2007 Fonctionnement d’un ordinateur Achat d’un ordinateur
CAS AFPA Sprint n°1.
Présenté par M. Anis DIALLO
Réalisé Par : Ahmed Ben Dahmen Slimen Ouni Chahed Ben Slama
Serveurs d’applications
Les collectivités locales et l’e-Education
Les grandes inventions
ENSEIGNER L’ALGORITHMIQUE ET LA PROGRAMMATION AU COLLÈGE
La gestion des pilotes de périphériques
Les différents modes de démarrage de Windows
Groupe de travail « Gestion des données de l’université »
Backup des Postes de Travail
Objectifs personnels Mettre les élèves en situation de création
Les données structurées et leur traitement
Transcription de la présentation:

1 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Introduction à Linux embarqué Thomas Petazzoni Free Electrons

2 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Intervenant Thomas Petazzoni Ingénieur Linux embarqué chez Free Electrons Spécialisé Linux embarqué : services de développement et formation Impliqué dans la communauté Développeur Buildroot Fondateur et membre CA de Toulibre Membre CA de l'April Créateur et animateur de l'Agenda du Libre Co-auteur de MapOSMatic.org

3 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Embedded Linux Conference Europe LA conference Linux embarqué pour les techniciens Jeudi et vendredi à Grenoble Des dizaines de conférences 80 € pour les hackers

4 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Embarqué ? Un système embarqué peut être défini comme un système électronique et informatique autonome, qui est dédié à une tâche bien précise. Ses ressources disponibles sont généralement limitées. Cette limitation est généralement d'ordre spatial (taille limitée) et énergétique (consommation restreinte). Wikipédia,

5 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Embarqué ? Une définition assez générale Recouvre des systèmes de types très différents Frontière floue avec les systèmes « classiques » Produits de grande consommation Routeurs personnels, lecteurs de DVD, appareils photos numériques, GPS, camescopes, téléphones, micro-onde, four Produits industriels Commande de robot, alarmes, systèmes de surveillance, contrôle de machines, voiture, avion, satellite

6 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Embarqué ?

7 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Linux embarqué Le monde du Logiciel Libre offre toute une palette d'outils pour le développement de systèmes embarqués Avantages Réutilisation de composants existants pour le système de base, permet de se focaliser sur sa valeur ajoutée Composants de bonne qualité, pour certains Contrôle complet sur les composants, modifications sans contraintes Support de la communauté: tutoriels, listes Faible coût, et notamment pas de royalties par unité vendue Potentiellement moins de problèmes juridiques Accès plus facile aux logiciels et outils

8 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Linux Embarqué Parts de marchés actuelles des OS embarqués OS propriétaire: 39% Linux embarqué gratuit: 29% Linux embarqué avec support commercial: 11% OS maison: 7% Pas d'OS: 11% Pour les projets futurs Linux embarqué gratuit: 71% Linux embarqué avec support commercial: 16% OS propriétaire: 12% OS maison: 1% Source: Venture Development Corp, octobre 2007

9 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Linux Embarqué GPS: Tomtom et Garmin Routeurs personnels: Linksys PDA: Zaurus, Nokia N8x0 Téléviseurs, camescopes, lecteurs de DVDs, etc: Sony Téléphone: Motorola, OpenMoko Machines industrielles Et plein d'autres usages que l'on imagine même pas...

10 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Ça fonctionne avec Linux, mais à quoi ça sert ?

11 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. À traire les vaches !

12 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Architecture de base Matériel Bootloader Noyau Linux Bibliothèque standard C Bibliothèque Application Outils

13 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Matériel pour l'embarqué Le matériel des systèmes embarqués est souvent différent de celui d'un système classique Architecture processeur différente. Souvent ARM, MIPS ou PowerPC. x86 est aussi utilisé. Stockage sur mémoire Flash, de type NOR ou NAND, de capacité souvent relativement réduite (quelques Mo à quelques centaines de Mo) Capacité mémoire réduite (quelques Mo à quelques dizaines de Mo) De nombreux bus d'interconnexion peu courants sur le desktop: I2C, SPI, SSP, CAN, etc. Cartes de développement à partir d'une centaine d'Euros Souvent utilisées comme base pour le design final de la carte qui sera utilisée

14 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Exemples Picotux 100 ARM7 55 Mhz, Netsilicon NS Mo de Flash 8 Mo de RAM Ethernet 5 GPIO Série OpenMoko ARM 920T 400 Mhz, Samsung 2442B 2 Mo de Flash NOR 128 Mo de RAM 256 Mo de Flash NAND Touchscreen 640x480, Bluetooth, GSM, série, GPS, son, deux boutons, Wifi, USB, etc.

15 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Exemples Carte Calao Systems USB A 9263 Processeur Atmel AT91SAM9263 à 180 Mhz 64 Mo de RAM 256 Mo de NAND Ethernet Série/JTAG/alim sur USB USB host et device Plein de cartes d'extension Fabricant sur Grenoble! ~ 150 € Carte Armadeus APF27 Processeur Freescale iMX Mo de RAM 256 Mo de NAND Ethernet Série USB host FPGA !

16 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Émulation Qemu permet l'émulation de nombreuses architectures CPU X86, bien sûr, mais aussi PowerPC, ARM, MIPS, SPARC, etc. Commande: qemu-system-ARCH Émulation complète: processeur, mémoire et périphériques Pour chaque architecture, plusieurs plateformes sont proposées Pour ARM: Integrator, Versatile, PDA Sharp, Nokia N8x0, Gumstix, etc. qemu-system-arm -M ? Idéal pour commencer à bricoler autour de Linux embarqué, même si le contact avec le matériel est plus « fun » Web:

17 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Besoins minimaux Un processeur supporté par le compilateur gcc et le noyau Linux Processeur 32 bit Les processeurs sans MMU sont également supportés, au travers du projet uClinux Quelques mega-octets de RAM, à partir de 4 Mo, 8 Mo sont nécessaires pour pouvoir faire vraiment quelque chose. Quelques mega-octets de stockage, à partir de 2 Mo, 4 Mo pour faire vraiment quelque chose. Linux n'est donc pas fait pour les petits micro-contrôleurs qui ne possèdent que quelques dizaines ou centaines de Ko de Flash et de RAM Sur le métal, pas d'OS Systèmes réduits, type FreeRTOS, RTEMS, etc.

18 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Chaîne de cross-compilation L'outil indispensable pour le développement embarqué sur des architectures non-x86. Contient des outils S'exécutant sur une machine hôte (la machine du développeur, généralement x86) Générant/manipulant du code pour machine cible (généralement non x86) « Outils binaires » Binutils Ld, as, nm, readelf, objdump, etc. Bibliothèque standard C glibc, uClibc ou eglibc Compilateur C/C++ gcc Bibliothèques mathématiques gmp, mpfr Débogueur gdb

19 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Chaîne de cross-compilation À la main Implique de configurer et compiler tous les éléments dans le bon ordre Les architectures non-x86 ne sont pas toujours parfaitement fonctionnelles dans une version stable de binutils ou gcc, besoin d'appliquer des patches Pré-compilées Solution la plus simple Code Sourcery est un fournisseur réputé, sous contrat avec ARM et MIPS Génération avec des scripts Crosstool-ng, Buildroot,

20 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Bootloader Sur PC : LILO ou Grub Le BIOS fait une bonne partie du travail et met à disposition du bootloader des routines pour le chargement de données depuis le disque Sur les architectures embarquées, pas de BIOS Le bootloader doit tout faire, y compris l'initialisation du contrôleur mémoire Lors de la mise sous tension, le CPU commence l'exécution à une adresse fixée Le design matériel fait en sorte qu'une partie de la Flash soit mappée à cette adresse Le point d'entrée du bootloader est stocké à cette adresse dans la Flash: il prend le contrôle du matériel dès sa mise sous tension Parfois un bootloader de premier niveau de petite taille

21 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Bootloader: U-Boot Il existe de nombreux bootloaders pour les architectures non-x86, certains plus ou moins spécifiques à certaines architectures ou plateformes Le bootloader libre le plus utilisé est Das U-Boot Il supporte un grand nombre d'architectures, est aisément configurable et modifiable Fonctionnalités de base Téléchargement du noyau et du système de fichiers par le réseau (protocole TFTP) Protection, effacement et écriture sur la Flash Exécution du noyau Outils de diagnostics: lecture/écriture mémoire, test de périphériques, etc.

22 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Noyau Linux Composant essentiel d'un système embarqué Les éléments de base du système: gestion des processus, de la mémoire, systèmes de fichiers, protocoles réseau, etc. Contient les pilotes pour la plupart des périphériques Le noyau distingue trois niveaux pour le support du matériel embarqué L'architecture: ARM, MIPS, PowerPC Le processeur: Samsung SC2442 par ex. La machine: OpenMoko Freerunner

23 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Noyau Linux Le noyau est le plus souvent porté sur une carte par le vendeur de celle-ci, sinon il faut s'adresser à une société spécialisée, ou mettre les mains dans le camboui. Un fichier de configuration est fourni pour chaque machine, il est personnalisable Après compilation, le noyau c'est Une image binaire (le noyau lui-même), le plus souvent compressée, d'une taille de ~600 Ko à plusieurs Mo. C'est cette image qui est chargée et exécutée par le bootloader Optionnellement des modules noyau

24 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Bibliothèque standard C La bibliothèque de base qui s'intercale entre d'un coté toutes les autres bibliothèques et applications et d'un autre coté le noyau Elle fait partie de la chaîne de cross-compilation Trois solutions GNU Libc, la version standard utilisée sur tous les systèmes desktop/serveur. Fonctionnalités complètes, mais grosse. uClibc, une ré-écriture complète d'une libc plus simple, optimisée pour la taille et configurable en fonctionnalités eglibc, une reprise de la GNU Libc ajoutant plus de flexibilité au niveau de la configuration Avec la libc sur un système embarqué, on a déjà une API de programmation “riche” pour des applications non-graphiques Threads, IPC, entrées-sorties, réseau, etc.

25 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Busybox Besoin d'un ensemble d'outils de base pour la cible cp, ls, mv, mkdir, rm, tar, mknod, wget, grep, sed et tous les autres Une solution: utiliser les outils GNU classiques fileutils, coreutils, tar, wget, etc. Inconvénient: beaucoup d'outils, pas conçus pour l'embarqué Une meilleure solution: Busybox Tous les outils dans un seul programme binaire Des outils aux fonctionnalités réduites... et à taille réduite Extrêmement configurable Des liens symboliques pour les utiliser comme d'habitude Utilisé dans de très nombreux de produits du marché

26 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Bibliothèques graphiques Des solutions graphiques de bas niveau Le framebuffer géré par le noyau Linux DirectFB, qui offre une interface de programmation plus abordable X.org Kdrive, un serveur X simplifié Nano-X Les solutions graphiques de plus haut niveau Qt, peut fonctionner directement sur le framebuffer du noyau ou au-dessus d'un serveur X Gtk, peut fonctionner au-dessus de DirectFB ou d'un serveur X WxEmbedded, au-dessus de X, DirectFB ou Nano-X

27 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Bibliothèques et outils En théorie, toutes les bibliothèques et tous les outils libres peuvent être cross-compilés et utilisés sur une plateforme embarquée Une fois le système en place, c'est juste du Linux ! En pratique, la cross-compilation n'est pas toujours aisée, car pas prévue par les développeurs originaux Bien qu'étant horribles, les autotools bien utilisés sont la meilleure voie vers un logiciel cross-compilation-aware Des outils plus spécifiquement destinés aux plateformes limitées dropbear à la place d'OpenSSH, BusyBox, Lighttpd ou Boa comme serveur HTTP

28 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Outils de construction Plusieurs approches pour la construction d'un système embarqué À la main Pénible, peu reproductible, difficulté de trouver les bonnes options, d'appliquer les bons patches, etc. Par des outils de construction Buildroot OpenEmbedded PTXdist Par des distributions Gentoo Embedded Debian Embedded

29 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Stockage Les Flash des systèmes embarqués sont généralement des flash brutes Aucun matériel ne s'occupe du « wear leveling », c'est à dire la répartition des écritures Ces flash sont considérées par le noyau comme des MTD, Memory Technology Devices Des systèmes de fichiers spécifiques doivent être utilisés Aujourd'hui: JFFS2, UBIFS Demain: LogFS, AXFS Autres systèmes de fichiers pour l'embarqué: squashfs et cramfs, pour les parties en lecture seule, tmpfs pour les données temporaires

30 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Stockage Noyau Données en lecture seule compressées squashfs, cramfs Données en lecture/écriture jffs2, ubifs Données temp- oraires tmpfs Flash RAM

31 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Gestion de l'énergie CPUfreq Similaire à ce qu'on a sur x86, variation de la fréquence et de la tension d'alimentation du processeur CPUidle Gère les différents niveaux de sommeil d'un processeur Suspend Vers la RAM le plus souvent « Clock framework » Gère l'ensemble des horloges du CPU et connaît quelles horloges sont utilisées par quels périphériques Régulateurs Des CPUs récents intègrent des régulateurs de courant et tension contrôlables par logiciel

32 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Temps réel Une contrainte dans certains systèmes embarqués est la prédictabilité du temps de réponse Capture de données ou réaction suite à un évènement qui doivent avoir lieu dans un temps borné Nécessite un système dit « temps réel » Le temps réel n'a rien à voir avec la performance Les bornes temporelles à garantir peuvent être larges, mais doivent être garanties Un système temps réel est parfois globalement plus lent qu'un système à temps partagé classique

33 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Temps réel et Linux Linux n'est pas conçu à l'origine comme un système temps réel, mais comme un système à temps partagé Objectif: maximiser l'utilisation des ressources pour maximiser le rendement global des applications Deux approches pour apporter le temps réel au noyau Une approche dans le noyau. Objectif: réduire au fur et à mesure les zones pendant lesquelles le noyau ne réagit pas à un évènement extérieur. Linux-rt, patch maintenu par Ingo Molnar et Thomas Gleixner Une approche de co-noyau, où un mini-noyau temps réel se charge de traiter les évènements importants, en garantissant des temps de réponse. Linux tourne en tâche de fond. RTAI, Xenomai

34 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. Déboguage Pour les parties bas-niveau, bootloader et noyau, utilisation du JTAG Bus qui permet de contrôler directement le processeur Besoin d'une sonde qui se connecte à la carte Coté machine de développement, s'utilise en général au travers de gdb (cross-compilé) Pour les applications utilisateur Utilisation de gdbserver sur la machine cible Et d'un gdb cross-compilé sur la machine de développement, qui contrôle l'exécution de l'application à distance grâce à gdbserver

35 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. En savoir plus Supports de formation de Free-Electrons, disponible sous licence libre Intégration de système Linux embarqué Développement de code noyau Livre « Building Embedded Linux Systems », O'Reilly, 2008 Livre « Embedded Linux Primer », Prentice Hall, 2006 Embedded Linux Wiki, Conférences ELC et ELCE, vidéos mises à disposition par Free-Electrons Assez peu de littérature en français Articles dans Linux Magazine Livre « Linux Embarqué » par Pierre Ficheux, un peu obsolète car publié en 2002