Systèmes Embarqués Libres

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

Naissance d'un REPTAR

Compilation croisée sous Linux et Windows

Systèmes embarqués D.Rossier

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

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

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

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

Linux embarqué: une alternative à Windows CE?

[DEVELOPPEMENT SUR LA CIBLE 2440] 19 avril 2010

Session 8: Android File System

Comment travailler avec les logiciels Open Source

UBUNTU Administration d'un système Linux (4ième édition)

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

Robot WIFIBOT Lab V4. Lab V4.

Catalogue des stages Ercom 2013

phidget_v1.odt - Système embarqué sous Linux - rev.139 PHIDGET SBC (SINGLE BOARD COMPUTER)

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

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

PROCÉDURE D'INSTALLATION

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

Installation et prise en main

DOCKER MEETUP. Christophe Labouisse

Installation software

FOG : Free Open-Source Ghost. Solution libre de clonage et de déploiement de systèmes d'exploitation.

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

PIC EVAL Dev Board PIC18F97J60

-1 - Postes de travail graphiques

Qu est ce qu un un serveur?

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

Robot WIFIBOT Lab V3. 4 roues motrices

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

JaZUp manuel de l'utilisateur v2.4

Installation d'un FreeNAS (v0.684b du 30/03/2007) pour sauvegarder les données d'un ZEServer

Raspberry pi : Développer une petite application web sur Raspberry

Développement d une carte à processeur linux

Programmation C. Apprendre à développer des programmes simples dans le langage C

Cloner un disque dur

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

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

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

Année Universitaire ième année IMAC Mardi 6 janvier Cloud computing Travaux Pratiques

Manuel de System Monitor

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

D. Déploiement par le réseau

Rappels d architecture

Personnes ressources Tice. Académie de Rouen

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

Virtualisation de serveur grâce à Linux-

WGW PBX. Guide de démarrage rapide

Architecture matérielle des systèmes informatiques

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

UBUNTU. Administration d un système Linux. 4 ième édition. Nouvelle édition. Luc DEMARET Sébastien ROHAUT

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

Virtualisation de serveurs Solutions Open Source

Démarrage à partir du réseau

Aide-Mémoire unix. 9 février 2009

[ Rencontres Mondiales du Logiciel Libre 2011 Lundi 11 juillet 2011 ] Introduction à l'open Hardware Auteur : Dr Ir Robert Viseur

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

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

Ce qu'il faut savoir: L'outil de sauvegarde Bacula, peut exploiter 3 moyens différents:

Virtualisation open source État de l'art

Thème 3 Conception et vérification d architectures de systèmes sur puce

Openmoko, free your phone!

Il est courant de souhaiter conserver à

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

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Virtualisation sous Linux L'age de raison. Daniel Veillard

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

Note Technique : Sauvegarder un NAS ND16000 ou ND26000 sur un disque dur externe USB ou esata

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Plan de cette matinée

Performance et usage. La différence NETGEAR - R7000. Streaming HD illimitée

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

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

INFO-F-404 : Techniques avancées de systèmes d exploitation

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

L intelligence intégrée et connectée au cœur de vos projets. Dossier de presse

Hétérogénéité pour atteindre une consommation énergétique proportionnelle dans les clouds

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

Simple Database Monitoring - SDBM Guide de l'usager

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

Configuration système requise pour les grandes et moyennes entreprises

Windows Server Chapitre 1: Découvrir Windows Server 2008

VMWARE VSPHERE ESXI INSTALLATION

Systèmes informatiques

Mac OS X en entreprise

Sauvegardes par Internet avec Rsync

Atelier Pivoting KHOULOUD GATTOUSSI (RT3) ASMA LAHBIB (RT3) KHAOULA BLEL (RT3) KARIMA MAALAOUI (RT3)

Administration UNIX. Le réseau

Serveur de sauvegardes incrémental

NEWS La communication, clé de la réussite. Communiqué. Comités de standardisation SOMMAIRE. Rencontres lors des conférences

Un ordinateur, c est quoi?

Prototypage électronique

PLATE-FORME DE CLOUD COMPUTING SLAPOS. Intégration d applications

Architecture des calculateurs

Transcription:

Systèmes Embarqués Libres Djalal Harouni tixxdz@opendz.org Pr. Mohamed Benmohammed Laboratoire Informatique LIRE, Université Mentouri Constantine Sofware Freedom Day 2011 Algeria. 1

Systèmes Embarqués Libres Durant cette présentation on va voir les principes des systèmes embarqués et comment les logiciels et les outils libres et Open Source peuvent être utilisés pour construire et réaliser ces systèmes. Les aspects les plus techniques seront détaillés durant l'atelier 'Systèmes Embarqués Libres'. 2

Plan Introduction Systèmes Embarqués Outils Libres Création du système embarqué Test et exécution Conclusion 3

Introduction Le concept d un système embarqué: C est un système numérique dédié à une ou quelques tâches bien précises [1]. Les interfaces I/O tel que le clavier et l écran peuvent être absentes, de ce fait on peut dire que c est un système autonome. Ce n est pas un PC (ou presque un PC). Les caractéristiques: Ils utilisent des microprocesseurs ou microcontrôleurs à basse consommation d énergie. Certain systèmes embarqués doivent répondre a des contraintes de temps réels [1], de ce fait on peut les appeler systèmes temps réels. Le logiciel des systèmes embarqués peut être appelé firmware. Ce firmware est généralement stocké dans une mémoire morte (ROM, PROM, EPROM etc.) 4

Introduction L intérêt: Consommation énergétique faible. Réduction des coûts par l utilisation seulement du matériel nécessaire. Peut répondre mieux au contraintes temporels d une tâche, car le système doit se focaliser que sur cette tâche. Exemple de systèmes embarqués: Console de jeux, télévision, four a micro-ondes, robots Disque dur, imprimante, photocopieur, téléphonie, routeur, pare-feu. Fusée, missile, sonde spatiale, matériel médical, GPS Processeur pour systèmes embarqués: ARM (Advanced RISC Machine): une architecture destinée aux systèmes embarqués tel que: iphone, série Nokia, console de jeux etc. MIPS (Microprocessor without Interlocked Pipeline Stages): une architecture RISC utilisée dans les modems, télévisions, consoles de jeux etc. (Il y a une dizaine de processeurs destinés aux systèmes embarqués). 5

Plan Introduction Systèmes Embarqués Outils Libres Création du système embarqué Test et exécution Conclusion 6

Systèmes Embarqués Exemples de systèmes embarqués: Sharp Zaurus SL-5500 PDA Linux [2] TomTom GPS [3] 7

Systèmes Embarqués Quelques systèmes embarqués basés sur un kernel Linux [4]: Android Un système embarqué pour les téléphones, développé maintenant par Google [5]. UcLinux Linux pour les microcontrôleurs ne disposant pas de MMU [6]. Utilisé pour les petits systèmes embarqués. Openmoko : un système embarqué pour les téléphones [7]. OpenWrt : un système GNU/Linux pour les routeurs [8]. 8

Systèmes Embarqués Architecture d'android [9]. 9

Plan Introduction Systèmes Embarqués Outils Libres Création du système embarqué Test et exécution Conclusion 10

Outils libres - Linux Linux est un système libre développé sous licence GPL [4] [10]. Intérêt pour le monde embarqué: Code stable et de bonne qualité. Contrôle total sur le système, aucune contrainte, la possibilité de modifier n'importe quelle partie du système. Support de plusieurs architecture et protocoles réseaux. tix@x64_k:linux $ ls arch/ arm blackfin frv hexagon m32r microblaze mn10300 parisc s390 sh tile unicore32 alpha avr32 cris h8300 ia64 m68k mips openrisc powerpc score sparc um x86 xtensa tix@x64_k:linux $ make kernelversion 3.2.0-rc2 11

Outils libres Outils de compilation et de génération de code: Cross-compilation toolchain: c'est la suite utilisée pour la génération du code sur une machine X pour qu'il soit exécuté sur une autre machine d'une architecture Y. On utilise le compilateur GCC [11] qui supporte plusieurs langages et plusieurs architectures. Pour produire du code pour une autre architecture on utilise l'option '--target' On a besoin aussi de la suite binutils [12] qui regroupe le GNU assembleur, on aura besoin aussi de la suite Autools pour configurer les programmes et générer les Makefiles. C library: l'interface entre le kernel et les applications. Glibc: GNU C Library [13]. uclibc: C library pour les systèmes embarqués [14]. dietlibc: C library pour les systèmes embarqués [15]. 12

Outils libres Bootloaders: X-loader [16]: Un petit bootloader (first stage) qui va initialiser la mémoire et les périphiriques et charger U-boot (second stage). Chaque architecture peut avoir son propre chargeur. U-boot (Universal Boot Loader) [17]: Un bootloader (second stage) qui va initialiser le hardware et charger le kernel. Il est sous licence GPL. Il supporte plusieurs architectures: PPC, ARM, MIPS, X86,... Il permet de charger le kernel à partir d un disque, mémoire flash, réseau en utilisant le protocole TFTP. 13

Outils libres BusyBox [18]: Un outil open source qui regroupe plusieurs outils standards des systèmes de type Unix. C'est un seul programme compilé statiquement, destiné aux systèmes embarqués, pour gagner en mémoire et espace disque. Il est utilisé sur plusieurs routeurs, téléphones IP, NAS (Network attached Storage) etc. Pour exécuter une commande: tix@x64_k:linux$ /bin/busybox ls Quelques outils inclus: awk cat chmod copy dd dmesg echo grep egrep fgrep gzip kill ls mkdir mount umount pidof ping mv rm vi ash... 14

Outils libres Buildroot [19]: Buildroot est un ensemble de Makefiles et de patches. Il permet l'automatisation du processus de génération des outils de cross-compilation. Il permet de créer des systèmes embarqués utilisant un kernel Linux plus facilement: image kernel, bootloader... etc. Il supporte plusieurs architectures: PPC, ARM, MIPS, X86 15

Outils libres Qemu outil d'émulation et de virtualisation [20][21]: C'est un émulateur et aussi un logiciel de virtualisation Open Source. Il permet d'émuler plusieurs architectures et processeurs tel que les architectures utilisées dans les systèmes embarqués: x86, PowerPC, ARM, Sparc, MIPS... On peut l'utiliser sur un PC x86 pour le développement d'applications et le test de systèmes embarqués destinés à une autre architecture tel que les processeurs ARM. En simulant un processeur ARM, Qemu vas utiliser un mécanisme de traduction de code ASM. 16

Outils libres Résumé GNU/Linux pour PC et pour l'embarqué: PC: Grub (bootloader) Kernel qui inclut plusieurs options (driver et protocols). GNU C Library. Shared libraries. Embarqué: U-boot (X-loader?) Kernel léger (le necessaire). Uclibc: library C optimisé pour les systèmes embarqués. Shared libraries. Outils de commande: shell, ssh, ls, sudo, su, wget, gcc... Serveur Xorg, Browser, multimedia... etc Busybox: outil qui regroupe plusieurs programmes. Interface graphique? 17

Plan Introduction Systèmes Embarqués Outils Libres Création du système embarqué Test et exécution Conclusion 18

Création du système embarqué La création d'un système embarqué passe par plusieurs étapes [22] : 1. Identification du matériel, de l'architecture utilisée et des différents composants du système. 2. Préparation de l'environnement. 3. Cross compilation toolchain. 4. Configuration et compilation du kernel Linux. 5. Construction du système de fichiers et installation du kernel. 6. Configuration et installation du bootloader. 19

Création du système embarqué 1) Identification du matériel et de l'architecture du circuit intégré. Exemple d'une carte mère Beagle Board [23] utilisée beaucoup plus pour le développement embarqué: TI OMAP3530 multicore processor: incluant un processeur ARM Cortex-A8 core basé sur l'architecture ARMv7. 256MB RAM and Nand flash memory. MicroSD connector. Ethernet 10/100 Mb port.... 20

Création du système embarqué 1) Identification du matériel et de l'architecture du circuit intégré. Beagle Board [24] (pour le développement): Beagle Board (Taille 78,7 x 76,2 mm Alimentation 5V) 21

Création du système embarqué 3) Cross toolchain: GNU Toolchain: GNU Make, GNU Compiler Collection (GCC), GNU Binutils (assembler and linker), GNU Debugger (GDB), GNU C Library... GMP library: les opérations arithmétiques (integer, float numbers) [25]. MPFR library: calculer les nombres à virgule flottante en précision arbitraire [26]. MPC library: pour calculer les nombres complexes à virgule flottante [27]. Linux kernel headers [4]. GNU Toolchain utilise généralement trois définitions: Build plateform: la machine où on va compiler le code. Host plateform: la machine où on va exécuter le code compilé. Target plateform: le type du code produit. Ces définition vont prendre la valeur d'un Target Triplet: cpu-vendor-os. 22

Création du système embarqué 3) Cross toolchain: L'architecture du CPU sera: arm. CPU endianness (ordre des octets): little-endian. L'architecture ou la spécification ARM sera: ARMv4... ARMv7 ABI (Application Binary Interface) pour les architectures ARM: La valeur de l'abi sera EABI (Embedded ABI) pour les ARMv4t et plus. Le Target Triplet (cpu-vendor-os) pour notre cible: armv7a-none-linux-gnueabi ou armv7a-none-linux-uclibceabi 23

Création du système embarqué 3) Cross toolchain: Exemple d'architectures de processeur ARM: armv4, armv4t, armv5,.., armv7, armv7-a, armv7-m... Exemple d'architectures processeur ARM, d'abi et de Target Triplet [28]: Processor Endianess ABI Target Triplet Generic ARM Little OABI arm-unknown-linux-uclibc Generic ARM v5 Little EABI armv5l-unknown-linux-uclibceabi Generic ARM v5 Big EABI armv5b-unknown-linux-uclibceabi Generic ARM v7a Little EABI armv7a-unknown-linux-uclibceabi Generic ARM Little EABI arm-unknown-linux-uclibceabi Generic ARM Little EABI arm-unknown-linux-gnueabi 24

Création du système embarqué Cross toolchain: voici les étapes pour générer le cross compiler. Il faut utiliser les mêmes options lors de la configuration: '--with-sysroot', '--prefix'... Configurer et compiler la suite GNU Binutils pour avoir un assembleur et un lieur pour le code ARM produit. binutils $./configure target=arm-linux && make ensuite il faut l installer. Pour compiler GCC on a besoin d'installer les fichiers: Linux Kernel headers. kernel $ make mrproper && make ARCH=arm headers_check... 25

Création du système embarqué 3) Cross toolchain: Configurer, compiler et installer les bibliothèques: GMP, MPFR et MPC. Configurer et compiler GCC de façon statique et minimale avec le support du langage C seulement et sans le support des threads. Cette opération va permettre de compiler une bibliothèque C (GNU libc ou uclibc...), qui va ensuite être utilisée pour compiler le Cross Compiler final. gcc-src $./configure --target=arm-none-linux disable-threads --enable-languages=c... && make && make install Configurer et compiler la bibliothèque C: uclibc ou GNU Libc... Configurer et recompiler GCC le Cross Compiler final avec support des threads... en utilisant la bibliothèque C compilée. 26

Création du système embarqué 3) Cross toolchain: Crosstool-NG [29]: Un ensemble d'outils et de scripts qui permettent d'automatiser la procédure de génération de la cross toolchain. Il supporte différentes architectures. Utilise un menu de configuration comme celui du kernel Linux. Supporte uclibc, glibc, eglibc... 27

Création du système embarqué 4) Configuration et compilation du kernel: Utiliser linux-omap git branch [30]. Utiliser un kernel modifié ou un kernel par défaut avec un fichier de configuration: linux/arch/arm/configs/omap2plus_defconfig linux $ make ARCH=arm omap2plus_defconfig linux $ make ARCH=arm help (pour voir les configurations par défaut) Configurer le kernel selon l'architecture et le matériel disponible: linux $ make mrproper (supprime.config sinon: 'make clean') linux $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi menuconfig Compiler et produire l'image du kernel avec les modules: linux $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi uimage modules linux $ make INSTALL_MOD_PATH=${SYSROOT} modules_install 28

Création du système embarqué 4) Configuration et compilation du kernel: 29

Création du système embarqué 5) Le système de fichiers: Utiliser un système de fichier adapté aux systèmes embarqués tel que: SquashFS: système de fichier compressé en lecture seul. JFFS2 (Journalling Flash File System). On peut aussi utiliser d'autres types: ext2, ext3 etc. Généralement deux partitions ou plus: La première partition va contenir les deux stages du bootloader et l'image du kernel. Les partitions suivantes vont contenir le système de fichiers. 30

Création du système embarqué 6) Configuration bootloader U-boot: Le fichier boot.cmd contient les paramètres de boot. boot.cmd: setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uimage; fatload mmc 0:1 0x81600000 uinitrd; bootm 0x80300000 0x81600000' setenv bootargs console=tty0 console=ttyo2,115200n8 root=/dev/mmcblk0p2 rootwait ro Boot Compiler le fichier boot.cmd en boot.scr avec l'outil mkimage. $ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'boot script' -d boot.cmd boot.scr Copier boot.scr, U-boot, X-loader (ou MLO), uimage et uinitrd dans la partition boot et booter. 31

Création du système embarqué Buildroot peut automatiser la génération de la chaîne de cross compilation et du système embarqué [19]. Utilise un menuconfig comme celui du kernel. Supporte plusieurs architectures. Permet de générer plusieurs composants tel que le système de fichiers et le kernel. 32

Plan Introduction Systèmes Embarqués Outils Libres Création du système embarqué Test et exécution Conclusion 33

Test et exécution Test d'un kernel configuré et compilé pour un processeur ARM: 1) Avec un émulateur libre tel que Qemu Pour l'émulation d'architecture et machine on utilise: qemu-system-arch Pour l'architecture ARM 'qemu-system-arm' linux$ qemu-system-arm -kernel zimage -initrd arm.img Taille du kernel 3MB. 2) Sur une carte mère de type Beagle board avec: un OMAP3530 (ARM Cortex-A8 CPU + TMS320C64x+ DSP ) + SD/MMC + USB + jtag + RS-232 + NAND flash + 265 RAM + Ethernet etc. Taille 78,7 x 76,2 mm Alimentation 5V pour 500 ma. 34

Test et exécution Figure: kernel ARM running under Qemu 35

Plan Introduction Systèmes Embarqués Outils Libres Création du système embarqué Test et exécution Conclusion 36

Conclusion Dans cet présentation nous avons vu les principes des systèmes embarqués. Les Outils libres et Open Sources disponibles qui peuvent être utilisés pour le développement des systèmes embarqués avec une maîtrise totale. La cross compilation des utilitaires nécessaires pour le développement sur d'autres architectures. La compilation de notre propre kernel Linux, qui sera destiné à un matériel informatique bien précis. Les outils libres et Open Source peuvent aider à l'étude des systèmes embarqués d'une façon plus efficace, car le développeur à le contrôle et peut faire des tests et des implémentations au niveau kernel pas seulement au niveau applicatif. 37

Conclusion Documentation: Building Embedded Linux Systems by Karim Yaghmour, Jon Masters, Gilad Ben-Yossef, Philippe Gerum. Embedded Linux Primer: A Practical Real-World Approach (2nd Edition) by Christopher Hallinan. Embedded Linux wiki : http://elinux.org/main_page Open Embedded (Framework pour la construction des systèmes embarqués): http://www.openembedded.org/wiki/main_page Free Electrons : http://free-electrons.com/docs/ 38

Références [1] http://en.wikipedia.org/wiki/embedded_system [2] http://www.linuxfordevices.com/c/a/linux-for-devices-articles/device-profile-sharps- Zaurus-SL5500-Linux-PDA/ [3] http://tomtom.com/ [4] http://www.kernel.org/ [5] http://www.android.com/ [6] http://uclinux.org/ [7] http://www.openmoko.com/ [8] http://openwrt.org/ [9] http://developer.android.com/guide/basics/what-is-android.html [10] http://www.gnu.org/licenses/old-licenses/gpl-2.0.html [11] http://gcc.gnu.org/ [12] http://www.gnu.org/software/binutils/ [13] http://www.gnu.org/software/libc/ [14] http://www.uclibc.org/ [15] http://www.fefe.de/dietlibc/ 39

Références [16] http://gitorious.org/x-load-omap3 [17] http://www.denx.de/wiki/u-boot [18] http://www.busybox.org/ [19] http://buildroot.uclibc.org/ [20] http://qemu.org/ [21] http://fr.wikipedia.org/wiki/virtualisation [22] Building Embedded Linux Systems by Karim Yaghmour, P27. [23] http://beagleboard.org/ [24] http://en.wikipedia.org/wiki/beagleboard [25] http://gmplib.org/ [26] http://www.mpfr.org/ [27] http://www.multiprecision.org/ [28] http://cross-lfs.org/view/clfs-embedded/arm/cross-tools/variables.html [29] http://crosstool-ng.org/ [30] http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap.git 40