CAPTRONIC 130403. Linux sur ARM. Toulouse 3 avril 2013. Éric Bénard. Organisé par



Documents pareils
Naissance d'un REPTAR

Systèmes Embarqués Libres

Linux embarqué: une alternative à Windows CE?

Construction et sécurisation d'un système Linux embarqué. Frédéric AIME

Comment travailler avec les logiciels Open Source

Systèmes embarqués D.Rossier

Détection de pollution maritime avec GNU/Linux. Eric Bénard - eric@eukrea.com - 08 juillet 2010

Tutorial uclinux ARM7 Development Starter Kit. Pragmatec Produits et services dédiés aux systèmes embarqués. uclinux - Mise en oeuvre

Installation et prise en main

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Présentation des intervenants. Pourquoi cette conférence? Logiciel libre : notions essentielles. Le logiciel libre pour les projets industriels

ST50 Projet de fin d études Noyau Linux et multi-processeur pour une plateforme embarquée

Plan de la conférence. Virtualization. Définition. Historique. Technique. Abstraction matérielle

MI03 TP. Objectifs du TP 1ère séance. 2ème séance. Construction d'un système linux embarqué complet

Virtualisation open source État de l'art

Utilisation de matériels industriels avec des outils de virtualisation open source. Open Source dans le monde industriel

machine cible machine hôte architecture cible différente de la machine hôte

Les avantages de la virtualisation sont multiples. On peut citer:

Diagrammes de Package, de déploiement et de composants UML

VMWARE VSPHERE ESXI INSTALLATION

Virtualisation sous Linux L'age de raison. Daniel Veillard

Département de génie électrique. ELE784 - Ordinateurs et programmation système. Laboratoire #1

Parallels Transporter Lisez-moi

Windows 2000: W2K: Architecture. Introduction. W2K: amélioration du noyau. Gamme windows W2K pro: configuration.

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Environnements de développement (intégrés)

Notice d Installation et d utilisation d une liaison Bluetooth avec un PDA ipaq.

Systèmes de gestion de code source

Développement d une carte à processeur linux

Installation de Premium-RH

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Créer. Deuxième partie II. Ajouts d utilisateurs. Formation à Linux Embarqué. Résolution DNS. mot de passe

Formation à Linux Embarqué. Jérôme Pouiller

Guide pratique de CSPM, l'outil de suivi des performances du système Version française du Complete System Performance Monitor HOWTO

Guide d installation JMap 5.0

Exigences système Edition & Imprimeries de labeur

Projet de fin d études Technology & Strategy Engineering

Linux 1: Présentation

Outils de développement collaboratif

Linux pour l embarqué. 1 Module E4 : Systèmes temps-réel Audrey Marchand

DEPLOIEMENT MICROSOFT WINDOWS

Mise en œuvre d une solution de virtualisation

Session 8: Android File System

ClariLog - Asset View Suite

Virtualisation de serveurs Solutions Open Source

Configuration Matérielle et Logicielle AGORA V2

[DEVELOPPEMENT SUR LA CIBLE 2440] 19 avril 2010

Chapitre 01 Généralités

Travailler à l'ensimag avec son matériel personnel

À propos de Parallels Desktop 9 pour Mac

Grid 5000 : Administration d une infrastructure distribuée et développement d outils de déploiement et d isolation réseau

Windows 7, Configuration

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

D. Déploiement par le réseau

Manuel d utilisation. Logiciel (Device Monitor) Pour les systèmes d imagerie numérique. Configuration requise Description générale

Procédure d installation pour WinEUR PROCÉDURE D INSTALLATION POUR WINEUR. Copyright GIT SA 2015 Page 1/16

Guide d utilisation de l utilitaire Intel One Boot Flash Update

Exigences système Edition & Imprimeries de labeur

Facility Touch Client. SAUTER EY-TC505F110 Logiciel Facility Touch Client Mise en service. Manuel D /26 D D

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Découverte des Logiciels Libres. Gilles Dequen

Tsoft et Groupe Eyrolles, 2005, ISBN :

Solutions de Virtualisation du poste de travail. ViewSonic vous présente le poste de travail virtuel du futur

Configuration système requise

Qu est ce qu un un serveur?

Chapitre 1 Retour en arrière

Windows Server Chapitre 1: Découvrir Windows Server 2008

Mode d emploi pour lire des livres numériques

Les tablettes. Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

WINDOWS Remote Desktop & Application publishing facile!

Guide de l'utilisateur de l'application mobile

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

Compilation croisée sous Linux et Windows

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Manuel d utilisation Logiciel (Communications Utility)

A Libre Ouvert. Médiathèque Jacques Ellul. le

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

Serveur de travail collaboratif Michaël Hoste -

Traitement de données

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Hyper-V chez PSA. Stéphane CHOVET Spécialise Windows/Hyper-V

Parallels Desktop 5 Switch to Mac - Lisez-moi

Virtualisation Vserver et OpenVz en entreprise

À propos de Parallels Desktop 10 pour Mac

Retrospect 7.7 Addendum au Guide d'utilisation

Windows 8 Installation et configuration

Openmoko, free your phone!

Virtual Box Mettez un PC dans votre... PC

Installation software

1. Installation standard sur un serveur dédié

Annexe : La Programmation Informatique

PG208, Projet n 3 : Serveur HTTP évolué

Symantec Backup Exec.cloud

EN Télécom & Réseau S Utiliser VMWARE

IV- Comment fonctionne un ordinateur?

Linux embarqué Retour d expérience et temps réel. Denis Coupvent-Desgraviers

Transcription:

Linux sur ARM Toulouse 3 avril 2013 Éric Bénard Organisé par

Présentation générale Principe de base d'un projet embarqué Une cible : Architecture CPU spécifique (ARM, x86, PPC...) Carte électronique comportant des périphériques adaptés à l'application Système d'exploitation, drivers & applications Un poste de développement : En général un PC sous Linux Compilation croisée : Générer sur le poste de développement des binaires qui pourront être exécutés sur la cible 4 / 42

Logiciels libres? Libre = licence offrant les 4 libertés suivantes : Exécuter le programme Étudier le fonctionnement du programme Redistribuer des copies du programme (don ou vente) Améliorer le programme et publier ses améliorations Exemples de licences libres : Domaine public, BSD, GPL (CopyLeft) Respecter les licences : gpl-violations.org/faq/ Liens : http://www.fsf.org/ http://www.opensource.org/ 5 / 42

Avantages / inconvénients Base existante importante : réduit le besoin de réinventer la roue Communauté dynamique : code validé et corrigé en cas de problème mais quelle version choisir? Diversité des projets : choix important mais risque de s'y perdre Support via la communauté : efficace mais aucune garantie d'obtenir une réponse Risques juridiques surtout dans les pays autorisant les brevets logiciels Coût direct des logiciels nul mais temps d'apprentissage et d'intégration non négligeable 6 / 42

Linux et les autres Configuration minimale : Processeur 32 bits 4 à 8 Mo de RAM 4 à 8 Mo de Flash Alternatives libres : Sur les micro contrôleurs : FreeRTOS, ecos, RTEMS Et bien d'autres : http://en.wikipedia.org/wiki/list_of_operating_systems#embedded Liens : http://www.rtems.com/ http://www.freertos.org/ http://ecos.sourceware.org/ 7 / 42

Cibles possibles Toutes celles supportés par les outils GNU Alpha, ARM, AVR, Blackfin, h8, hppa, x86, ia64, m32, m68k, mips, powerpc, sh, s390, sparc, xtensa... MMU ou pas uclinux : m68k, blackfin, ARM Aujourd'hui intégré au noyau «mainline» 32 ou 64 bits Suffisamment de RAM et de Flash 8 / 42

Etapes Outils de compilation croisée (toolchain) Binaire ou compilé Bootloader Initialisation bas niveau du hard + debug + chargement du noyau Noyau Linux Interface hard applications Distribution embarquée (ou pas) Librairie C, librairies complémentaires, applications... 9 / 42

Compilation croisée outils natifs PC (x86 x86) (make, as, gcc...) permettent de compiler des outils de compilation croisée (x86 cible) (as, gcc...) les 2 outils partagent les mêmes sources, seule change leur configuration! Difficulté : ne pas mélanger les 2 ce qui peut s'avérer compliqué selon les sources à compiler paramètres en dur dans les Makefile par exemple 10 / 42

Outils de compilation croisée Commerciaux Windriver, Mentor, TimeSys, Montavista... Gratuits Mentor Sourcery (existe une version «lite» gratuite) Linaro : http://sourcery.mentor.com/public/gnu_toolchain/ https://wiki.linaro.org/workinggroups/toolchain/using Compilé manuellement pas à pas Générés par des outils tels que : Générateur de toolchain : Crosstool-ng Frameworks de compilation croisée : Buildroot, PTXDist, OpenEmbedded... 11 / 42

Bootloader Fonctions de base : Bonus : Initialiser les PLL, la SDRAM, les GPIO, Charger le noyau Linux (depuis la flash en général), Exécuter le noyau Linux, Console série pour mise au point, configuration, Chargement par une liaison ethernet, Gestion des flashs (programmation, effacement), Gestion de périphériques (ex : I2C, SPI, etc...) USB : device (DFU, console) ou host (mass storage) 12 / 42

Les forces en présence Les 2 plus connus : U-boot : «das Universal Bootloader», initialement pour PPC, maintenant, supporte : arm, avr32, blackfin, x86, m68k, microblaze, mips, nios2, ppc, sh, sparc. Pas d'irq, pas de MMU : relativement facile à adapter et très pratique pour le débug et la mise au point RedBoot : issu de ecos, Base OS temps réel : IRQ + MMU Peu de périphériques supportés, moins pratique pour le debug, organisation des sources compliquée Liens : http://www.denx.de/wiki/u-boot/webhome http://www.cygwin.com/redboot/ http://elinux.org/bootloader 13 / 42

La nouvelle vague Barebox : Le meilleur de u-boot et de Linux L'esprit de u-boot avec les concepts de Linux Supporte : Driver model Menuconfig Shell Système de fichiers Device tree De nombreux ARM, blackfin, MIPS, Nios2, PPC, x86 Liens : http://barebox.org/ 14 / 42

Configuration de Barebox 15 / 42

Adapter le bootloader à son électronique Choisir le bon bootloader : niveau de support du processeur sélectionné niveau de support des périphériques qui présentent un intérêt au niveau du bootloader A partir du support d'une carte de référence : Adapter les réglages PLL, RAM, IOMUX Partir d'une configuration minimaliste (console série, support flash) puis ajouter les périphériques Prévoir un moyen de «récupérer» sa carte : JTAG, BootROM série / USB, etc... 16 / 42

Adapter le bootloader à son électronique Barebox : U-boot : arch/arm/boards/macarte/macarte.c platform_data : structures configurant les drivers Config :.config généré par : make menuconfig board/macarte/macarte.c Fonctions génériques board_init, dram_init... Config : include/configs/macarte.h (#define XYZ) 17 / 42

Sources : Noyau Linux «mainline» : kernel.org Constructeurs : Freescale, TI, Atmel, ST Tierce parties (Mentor, Timesys...) Doit intégrer le support de nos périphériques Périphériques classiques : mainline en général Périphériques plus complexes : noyaux constructeurs dans le meilleur de cas binaires dans le pire des cas Liens : http://kernel.org/ http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git 18 / 42

Noyau Linux Même base de sources sur votre PC et sur votre cible embarquée : Facilite la mise au point des applications sur PC Toutes les parties génériques du noyau sont validés sur de nombreuses cibles Support d'un grand nombre de périphériques direct Support d'un grand nombre de protocoles et systèmes de fichiers 19 / 42

Noyau Linux Architectures supportées : 28 architectures dans arch Types de périphériques : 106 répertoires dans drivers Systèmes de fichiers : 71 répertoires dans fs Protocoles réseau : 54 répertoires dans net 20 / 42

Configuration du noyau 21 / 42

Adapter le noyau Linux à son électronique A partir d'une configuration proche existante : Configurer les IO (MUX, direction, niveaux par défaut) Partir d'une configuration minimaliste (console série) Ajouter les périphériques l'un après l'autre 2 méthodes selon la version du noyau : En C dans arch/arm/mach-xyz/myboard.c : Enregistrement de structures déclarant et initialisant les drivers En device tree dans arch/arm/boot/dts : Inclure le.dtsi décrivant le SOC utilisé Décrire la manière de laquelle sont utilisés les périphériques 22 / 42

Exemple : board.c static struct physmap_flash_data eukrea_cpuimx27_flash_data = {.width = 2, }; static struct resource eukrea_cpuimx27_flash_resource = {.start = 0xc0000000,.end = 0xc3ffffff,.flags = IORESOURCE_MEM, }; static struct platform_device eukrea_cpuimx27_nor_mtd_device = {.name = "physmap-flash",.id = 0,.dev = {.platform_data = &eukrea_cpuimx27_flash_data, },.num_resources = 1,.resource = &eukrea_cpuimx27_flash_resource, }; static struct platform_device *platform_devices[] initdata = { &eukrea_cpuimx27_nor_mtd_device, };.../... platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 23 / 42

Exemple : SOC Freescale i.mx28 arch/arm/boot/dts/imx28.dtsi : cpus { cpu@0 { compatible = "arm,arm926ejs"; }; }; apb@80000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; reg = <0x80000000 0x80000>; ranges; apbh@80000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; reg = <0x80000000 0x3c900>; ranges;.../... ssp0: ssp@80010000 { #address-cells = <1>; #size-cells = <0>; reg = <0x80010000 0x2000>; interrupts = <96 82>; clocks = <&clks 46>; fsl,ssp-dma-channel = <0>; status = "disabled"; };.../... mmc0_sck_cfg: mmc0-sck-cfg { fsl,pinmux-ids = < 0x20a0 >; fsl,drive-strength = <2>; fsl,pull-up = <0>; }; 24 / 42

Exemple la carte Freescale imx28-evk arch/arm/boot/dts/imx28-evk.dts /include/ "imx28.dtsi".../... / { model = "Freescale i.mx28 Evaluation Kit"; compatible = "fsl,imx28-evk", "fsl,imx28"; memory { reg = <0x40000000 0x08000000>; }; apb@80000000 { apbh@80000000 { ssp0: ssp@80010000 { compatible = "fsl,imx28-mmc"; pinctrl-names = "default"; pinctrl-0 = <&mmc0_8bit_pins_a &mmc0_cd_cfg &mmc0_sck_cfg>; bus-width = <8>; wp-gpios = <&gpio2 12 0>; vmmc-supply = <&reg_vddio_sd0>; status = "okay"; }; http://www.devicetree.org/device_tree_usage Sources Linux : Documentation/devicetree/bindings/ 25 / 42

Installation du noyau En général durant le développement : Sur le PC : Compilation puis copie dans le répertoire tftp Compilation du device tree puis copie dans le répertoire tftp Sur la cible (depuis le bootloader) Chargement par tftp Écriture en flash Autres possibilités : USB device (DFU), Chargement par le port série JTAG, SDCard, Clef USB... 26 / 42

Démarrage du noyau Depuis le bootloader : commande boot Sous barebox : script /env/bin/boot personnalisable Sous u-boot : «scripts» dans des variables d'environnement Paramètres du noyau : (barebox : /env/config) Console série Ecran à utiliser Partitionnement de la flash 256k barebox 128k env 3M kernel - (reste de la flash) rootfs 27 / 42

Distribution embarquée Construite : A la main : Cross Linux From Scratch Avec un générateur : PTX Dist Buildroot OpenEmbedded / Yocto Commerciaux : (Mentor, Windriver, Montavista,...) Liens : http://trac.cross-lfs.org/ http://www.ptxdist.org/ http://www.buildroot.org/ http://www.openembedded.org/ 28 / 42

Buildroot Ensemble de Makefiles et de patches qui permettent de générer un système Capable de compiler le toolchain ou d'en utiliser un binaire Relativement facile à configurer Utilisé par exemple par Google dans son projet de box fibre http://fiber.google.com 29 / 42

OpenEmbedded / Yocto «Framework» de cross compilation Un grand chef : bitbake (écrit en python) Un livre de recettes : openembedded Pour faire un bon repas : le grand chef parcourt le livre de recette, sélectionne celles qui sont au menu, les cuisine, dresse les assiette et les sert au client. Ici le grand chef va même créer ses ustensiles! 30 / 42

Yocto Project? Projet «parapluie» porté par la Linux Foundation Contributions de Intel, Windriver, Mentor, etc... Sert de brique de base à ces sociétés pour construire leurs produits Différents projets associés : Bitbake / OpenEmbedded Core Outils autour d'eclipse (Application Dev Kit) Eglibc, HOB, Matchbox Infrastructure de test, de QA, etc... 31 / 42

OpenEmbedded Des recettes : fichiers.bb Endroit où trouver les sources (http, ftp, git, svn, file ) Comment les extraire Quels sont les patches à appliquer Comment les configurer Comment les compiler Comment les installer Comment les packager Des fichiers de configuration : Machine (architecture, optimisation, périphériques...) Distribution (version, choix parmi les outils...) 32 / 42

OpenEmbedded Bitbake parcourt : les recettes les fichiers de configuration Il génère un arbre de dépendances pour aboutir au résultat demandé et génère les scripts à exécuter pour effectuer chaque tâche Il parcourt cet arbre en exécutant les tâches les unes après les autres 33 / 42

OpenEmbedded Pour créer une image, bitbake va : Compiler les outils nécessaires (make, git ) Compiler les outils de compilation croisée (gcc ) Compiler les librairies et outils demandés dans la recette de l'image ainsi que leurs dépendances (pas forcément toutes installées) Cela peut générer un nombre important de tâches Tant que l'on ne change pas d'architecture ou de version, on capitalise les constructions Le toolchain et les librairies ne seront compilés qu'une fois! Image complète avec QT4 : ~1h30 sur Intel i7 34 / 42

Spécificité de la flash : Systèmes de fichiers Nombre de cycles écriture/effacement limité (10 ~ 100k) FS gérant : Wear leveling (répartition des cycles sur l'ensemble de la flash) La compression (gain d'espace) Adaptés aux flashs : jffs2 : ancien, lent sur les grosses capacités squashfs : compressé et lecture seule yaffs2 : créé pour les flashs NAND Maintenant : UBIFS (développé par Nokia) Le futur : BTRFS... 35 / 42

Installation du rootfs Sur le PC : Dans le répertoire tftp Sur la cible (depuis le bootloader) Chargement par tftp Écriture en flash Autres possibilités : USB device (DFU), Chargement par le port série JTAG, SDCard, Clef USB... 36 / 42

Utilisation du rootfs Monté par le noyau Premier binaire (init) exécuté par le noyau Arborescence unixienne classique Comme sur le PC Commandes standard Dans quelques Mo : Serveur web avec CGI Serveur SSH Démonstrateur QT ( > 40 Mo à lui seul!) 37 / 42

Votre application Ligne de commande ou graphique? Développement : Sdk + éditeur de texte + Makefile + code binaire QT Creator + dessin IHM + code binaire IDE : au choix (Eclipse, Anjuta, Kdevelop, QTCreator ) Debug : «juste» besoin de configurer l'ide pour utiliser les outils de compilation croisée Couche gdb/gdbserver en ligne de commande Utilisable par QTCreator, Eclipse en environnement graphique 38 / 42

QT Creator IDE complet Edition Code Conception IHM Compilation Debug Cross Platform 39 / 42

Récapitulatif, exemple d'application Bootloader Barebox / u-boot Noyau Linux Librairie Graphique QT Busybox GNU Lib C ou uclibc 40 / 42

Merci pour votre attention Questions / Remarques 41 / 42

Mentions légales EUKREA ELECTROMATIQUE SARL au capital de 40 000 - SIRET 477 653 380 00022 APE 3320C RCS Bordeaux 2004 B 0194 - TVA FR07477653380 Organisme de formation enregistré sous le numéro 72 33 06719 33 auprès du Préfet de Région d'aquitaine Eukréa est une marque déposée de Eukréa SARL. ARM est une marque déposée d'arm Limited. Linux est une marque déposée de Linus Torvalds. Windows est une marque déposée de Microsoft Corporation. Toutes les autres marques citées dans ce document appartiennent à leurs détenteurs respectifs. Eukréa s'efforce de fournir des renseignements fiables et actualisés et se réserve le droit de modifier son offre à tout moment. Le contenu de ce document n'est pas contractuel. Copyright Eukréa 2013 - v130403a 42 / 42