Travaux Pratiques Systèmes embarqués ENSPS 3A et MASTER



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

Systèmes embarqués D.Rossier

Tutoriel Création d une source Cydia et compilation des packages sous Linux

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

L informatique en BCPST

Unix/Linux I. 1 ere année DUT. Université marne la vallée

1 Mesure de la performance d un système temps réel : la gigue

Administration de Parc Informatique TP07 : Installation de Linux Debian

La mémoire. Un ordinateur. L'octet. Le bit

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

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

Lutter contre les virus et les attaques... 15

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

TP1 - Prise en main de l environnement Unix.

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

Systèmes informatiques

Commandes Linux. Gestion des fichiers et des répertoires. Gestion des droits. Gestion des imprimantes. Formation Use-IT

Systèmes Embarqués Libres

1 Démarrage de Marionnet

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

ndv access point : Utilisation

Atelier La notion de session utilisateur sous Linux

[DEVELOPPEMENT SUR LA CIBLE 2440] 19 avril 2010

1. Présentation du TP

(Langage de commandes) Les commandes sont données par l'utilisateur grâce au clavier, à partir d'une "invite" ou "prompt" (par exemple "c:\>" )

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Installation software

Enoncé du TP 8 Système

FlashWizard v4.5b PRO

Qu est-ce qu un Ordinateur

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Windows XP niveau 2. D. Hourquin, Médiapôle St Ouen l'aumône

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Universal Robots. Fiche Méthode : Installation du simulateur Polyscope

Effectuer un triple boot sur un Mac

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

Atelier Le gestionnaire de fichier

Outils pour la pratique

Tutorial Terminal Server sous

REPUBLIQUE ISLAMIQUE DE MAURITANIE

ndv access point : Installation par clé USB

Crédits... xi. Préface...xv. Chapitre 1. Démarrer et arrêter...1. Chapitre 2. L interface utilisateur...25

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

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

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

04/02/2014 Tutoriel. Lubuntu & glpi. thomas [NOM DE LA SOCIETE]

Manuel d utilisation de ndv 4

Ces deux machines virtuelles seront installées sous VMWARE WORKSTATION.

Module : Informatique Générale 1. Les commandes MS-DOS

TP 4 & 5 : Administration Windows 2003 Server

IV- Comment fonctionne un ordinateur?

Projet serveur OwnCloud

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Installation ou mise à jour du logiciel système Fiery

Lenovo TAB A7-40/ Lenovo TAB A7-50

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

Contrôle d accès UTIL TP N 1 découverte

Comment configurer Kubuntu

Sélection du contrôleur

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

MANUEL D INSTALLATION

Installation et prise en main

Parallels Transporter Lisez-moi

Installation et paramétrage de Fedora dans VirtualBox.

Guide de l utilisateur Mikogo Version Windows

Leçon 1 : Les principaux composants d un ordinateur

Instruction breve de. l'ordinateur de poche Acer n10

CONDITIONS D UTILISATION VERSION NOMADE

Séance 0 : Linux + Octave : le compromis idéal

LiveUSB clefisn. Meilland jean claude et Kbida Abdellatif. 16 septembre 2012

Tablette Pegasus PC Notes. Code : Conrad sur INTERNET Version 02/ Conditions du système.

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

Installation et prise en main d UBUNTU

Tsoft et Groupe Eyrolles, 2005, ISBN :

Introduction au protocole FTP. Guy Labasse

Installation et mise à jour des IOS sur les routeurs ou les switchs Cisco

Démarrer et quitter... 13

Introduction à l informatique en BCPST

Initiation Internet Module 0 : Découverte de L ordinateur

Laplink PCmover Express La façon la plus facile de transférer vers un nouveau PC Windows

Le routeur de la Freebox explications et configuration

Traitement de données

Les GPO 2012 server R2 (appliqués à Terminal Serveur Edition)

Compilation (INF 564)

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

Securexam pour le programme CPA,CGA

Groupe Eyrolles, 2003, ISBN : X

PACK ADSL WIFI. Configurer ma connexion ADSL avec Modem/Routeur Sagem 1400W

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 20/06/2007. AUTEUR : Equipe technique Syfadis

Configuration de ma connexion ADSL

Réalisation d un portail captif d accès authentifié à Internet

Procédure d'utilisation de Password Gorilla

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

TP 1 : prise en main de Windows. TP 1 : prise en main de Windows

Transcription:

TP ENSPS 3A/MASTER 1 Travaux Pratiques Systèmes embarqués ENSPS 3A et MASTER Emulation et compilation croisée pour Gumstix 1 Introduction 1.1 Gumstix et émulation via qemu Gumstix est une compagnie qui dessine et vend des PCs miniatures et les extensions associées pour réaliser des systèmes embarqués. La plateforme matérielle est basée sur une architecture ARM/Xscale. Toutes les cartes mères sont pré-équipées avec un système d exploitation linux minimaliste tenant sur environ 8 Mo. Les cartes-mère ont une dimension de 80x20 mm, comparable à la dimension d une tablette de chewing-gum (d où son nom). Les entrées-sorties sont accessibles au moyen de cartes d extensions telles que USB, ethernet, bluetooth,... Le tableau suivant donne les principales caractéristiques de la carte-mère. Processeurr fréqence memoire consommation alimentation dimension poids PXA255 with Xscale (ARM architecture) 200 ou 400 MHz 16M FLASH et 64M RAM <250mA (<50 ma en attente d une entrée) standard 4.5V ou 5.0V (transformateur, batteries..) 80mm x 20mm x 5.9mm 8 g Figure 1 Carte mère connex (Gumstix Inc).

TP ENSPS 3A/MASTER 2 1.2 Installation de la chaîne de compilation croisée Utiliser les PCs HP ou le PC Terra avec adaptateur usb serie. Se loguer sous Ubuntu en tant que projet et avec le mot de passe habituel. Decompresser l archive VERDEX.tgz Renommer le répertoire créé en VERDEX_ref (histoire de liens symboliques pas sympa). Descendre dans ce répertoire. 1.3 Connexion par Liaison Série Connecter le port du milieu de la carte d extension série du gumstix, sur le câble série du PC. Ne pas connecter l alimentation, sur la carte série, via la prise mini-jack. Utiliser le client kermit pour configurer la liaison série, s y connecter, alimenter le gumstix, se loguer en root et attendre. Pour cela se référer au document OE_Setting_up_a_serial.html (ou en ligne) contenu dans doc_hmtl/serial. Le fichier kermit-setup à utiliser se trouve à la racine de VERDEX_ref/. Une fois logué sur le gumstix, stopper ce linux embarqué avec la commande halt. Débrancher délicatement l alimentation. Se déconnecter de la liaison série avec [ctrl-\] suivi de c (sur un clavier français : touches ctrl+altgr+8 en même temps puis c ). On se retrouve dans l interface de kermit, de là on peut se reconnecter avec connect ou sortir avec exit 1.4 Flasher la mémoire partie 1 : Remplacer l arborescence de fichiers Buildroot est un environnement permettant de générer relativement facilement un système embarqué complet : u-boot.bin : permet l amorçage du système d exploitation (boot loader). rootfs.arm_nofpu.jffs2 : l image du système de fichiers de type JFFS2, contenant l arborescence du système Gumstix uimage : le noyau linux compressé. une chaîne de compilation croisée : un gcc et une libc, qui produisent du code pour ARM. La nouvelle version de ces fichiers sont disponibles à la racine du répertoire gumstix-buildroot (ont été obtenus en lançant la commande make de buildroot). On se propose de les installer sur le gumstix en copiant ces fichiers sur la mémoire Flash du gumstix via la liaison série et l utilitaire de boot u-boot : 1. démarrer la liaison série comme précédemment : kermit -l /dev/xxx. 2. la configurer avec c-kermit> take./kermit-setup et se connecter. 3. se préparer à appuyer sur une touche dans les 2 secondes qui suivent l alimentation du Gumstix. 4. brancher le Gumstix et appuyer sur une touche dans les 2 secondes pour obtenir le prompt de u-boot et empêcher le boot du noyau Linux. 5. une fois devant l invite GUM>, commencer la procédure avec l instruction GUM> loadb a2000000, qui prépare la réception à l adresse 0xa2000000 d un fichier. Attention aux nombre de zéros!! On recommande de faire un copier coller de cette instruction à partir du document oe_replace_file_system.html du répertoire doc_hmtl/flashing. 6. suivre les indications du document précédent pour envoyer le nouveau système de fichier en RAM du gumstix avec kermit. Note : il faut adapter les noms des fichiers que l on envoie sur le Gumstix par rapport à la doc : gumstix oe/.../gumstix-basic-image-gumstix-custom-verdex.jffs2 devient gumstixbuildroot/rootfs.arm nofpu.jffs2. 7. pendant les 8 minutes nécessaires à la copie de l arborescence de fichiers JFFS2, nous allons travailler sur un émulateur.

TP ENSPS 3A/MASTER 3 1.5 Emulation du système d exploitation : création de la Flash Afin d accélérer la procédure de développement, le système d exploitation est émulé au moyen de l émulateur multi-plateforme qemu. L émulation permet d accélérer les phases de tests et offre des possibilités intéressantes de déboguage. Pour émuler le Gumstix VERDEX, il nous faut en premier lieu un fichier image de la mémoire flash installé sur le gumstix. Il est nécessaire de générer un fichier unique que l on nommera flash ayant une structure particulière et contenant les données des 3 fichiers précédents : u-boot, uimage et rootfs.arm nofpu.jffs2. 1. ouvrir un nouveau terminal. 2. descendre dans le répertoire VERDEX ref/qemu. 3. y copier les 3 fichiers nécessaires à la création de la flash. 4. exécuter le script shell build_qemu_flash.sh soit avec sh build_qemu_flash.sh, soit en lui donnant le droit d exécution et.\build_qemu_flash.sh. Celui-ci crée le fichier flash à partir des 3 fichiers précédents. Note : On regardera l aide de la seule commande utilisée dans ce script, dd, pour en comprendre le fonctionnement. 1.6 Emulation du système d exploitation : Utilisation Une fois la flash créé, on souhaite démarrer l émulateur et plus tard y accéder de manière similaire au système réel via une liaison série émulé. Pour cela : ouvrir un nouveau terminal. exécuter./qemu-0.13.0/arm-softmmu/qemu-system-arm -M verdex -pflash flash -nographic pour démarrer l émulateur.-m indique la machine à émuler,-pflash le fichier flash à utiliser et -nographic que le système fonctionne en mode console, sans mode graphique VGA. si le fichier flash a été correctement généré, le processus de démarrage doit se terminer par un message de type Login: au bout de quelques dizaines de secondes. ouvrez une session root avec le mot de passe gumstix. parcourir un peu l arborescence de fichier et regarder la version du système/buildroot installé dans /etc/gumstix-release. arrêter le système Linux émulé avec halt arrêter l émulateur avec [ctrl-a] suivi de x. On souhaite répéter l opération mais en utilisant kermit pour se connecter au système : exécuter./qemu-0.13.0/arm-softmmu/qemu-system-arm -M verdex -pflash flash -nographic -serial pty -S pour démarrer l émulateur. -serial pty indique que l on veut rediriger la liaison série vers un pseudo-terminal, -S indique que l on veut démarre l émulateur mais sans démarrer le CPU émulé (le ARM). Note : il sera peut-être nécessaire de mettre sudo devant la commande pour passer root et autoriser la création d un pseudo-terminal. au démarrage, qemu vous indique le pseudo-terminal où il connecte la sortie du Gumstix émulé. dans un autre terminal ou de préférence dans un onglet du terminal courant (FILE >Open tab), lancer sudo kermit -l /dev/x avec X le pseudo-terminal proposé par qemu. configurer kermit avec sa commande take../kermit-setup puis se connecter. Maintenant, nous allons démarrer le cpu/système émulé dans qemu : retourner dans l autre onglet/terminal et taper la touche c. Dans le terminal, où tourne kermit, apparaît les messages de boot du gumstix émulé jusqu à l invite de login. vous loguer. En résumé, nous avons donc : 1. un terminal où tourne l émulateur et un prompt de commande pour le monitorage de qemu 2. un terminal avec kermit permettant de communiquer avec le gumstix émulé

TP ENSPS 3A/MASTER 4 1.7 Flasher la mémoire partie 2 : Remplacer le Noyau Linux Retourner dans le premier terminal, celui connecté à la liaison série du Gumstix réel. Attendre la fin de la copie du système de fichier si ce n est déjà fini. Suivre la procédure du document oe_replace_file_system.html et les explications indiquées dans le document, mais attention à l instruction suivante : GUM> protect on 1:0-1 Protect Flash Sectors 0-1 in Bank 1.. done qui doit obligatoirement apparaître avant la commande d effacement complet de la mémoire flash CUM> erase all pour protéger les 2 secteurs où est installé u-boot sous peine de rendre le Gumstix INUTILISABLE. A la fin de la procédure, vous loguer sur votre nouveau système Linux gumstix. 1.8 Compilation croisée : échange de fichiers via la liaison série La mémoire flash embarquée étant de taille très réduite et la puissance du processeur étant limitée font qu il est difficile de compiler les applications directement sur le gumstix. On a alors recours à de la compilation croisée. Une toolchain, c est à dire tous les exécutables nécessaires à la compilation, est installée sur une machine de développement puissante. Elle permet de générer du code objet pour la plateforme cible gumstix. Dans le répertoire buildroot, le sous-répertoire build-arm_nofpu contient tous les utilitaires nécessaires à la compilation croisée. La compilation croisée implique donc la possibilité de copier des fichiers et exécutables entre le PC de développement et le GUMSTIX via la liaison série. 1/Essayons d abord dans l émulateur. 1.8.1 GUMSTIX >PC dans le terminal où kermit est connecté au gumstix émulé/qemu, revenir au prompt de kermit avec [ctrl-\] suivi de c. configurer le protocole de transmission pour la liaison série en zmodem : C-Kermit> set protocol zmodem C-Kermit> connect créer un fichier vide d un nom quelconque avec la commande touch [filename] dans le répertoire courant du gumstix émulé. envoyer ce fichier avec la commande sz [filename], sz pour send zmodem. vérifier que dans le répertoire courant du PC où s exécute kermit le fichier est présent. 1.8.2 PC >GUMSTIX connecté au gumstix émulé, utiliser la commande rz pour mettre le gumstix émulé en mode réception d un fichier. revenir au prompt de kermit avec [ctrl-\] suivi de c. configurer le protocole de transmission pour la liaison série en zmodem (si ce n est déjà fait) : C-Kermit> set protocol zmodem envoyer le petit fichier de votre choix en utilisant les commandes cd et send dans kermit. se reconnecter au gumstix émulé avec connect constater la présence du nouveau fichier dans l arborescence du gumstix émulé. 2/Reproduire l opération avec le gumstix réel.

TP ENSPS 3A/MASTER 5 1.9 Compilation croisée : l exemple du helloworld On souhaite compiler le classique helloworld en faisant appel à arm-linux-gcc, le crosscompilateur créé par le buildroot. Pour cela un makefile est déjà proposé. dans un terminal, se déplacer dans le répertoire VERDEX ref/program exple/helloworld. exécuter make clean pour effacer les anciens fichiers compiler essayer d exécuter sur le PC. Résultat? copier cet exécutable par le biais de kermit dans le gumstix émulé et le gumstix réel. Exécuter à nouveau. 1.10 Compilation croisée : l exemple du module noyau helloworld Il est possible de faire de la compilation croisée de module noyau pour le Gumstix. Le répertoire /gumstix-buildroot/build armnofpu/ contient tous les sources du noyau linux qui tourne sur le système gumstix. 1. Aller dans le répertoire program_exple/hello_module. 2. Compiler le module hello_module.c en lançant la commande make. 3. Utiliser l utilitaire file sur ce fichier pour avoir des détails 4. Télécharger ce module dans la machine virtuelle. 5. Insérer le module dans le noyau à l aide de la commande insmod. 6. Retirer le module à l aide de la commande rmmod. 7. Vérifier l affichage des messages (une option permettant d afficher les messages de dmesg dans la console a été activée dans le noyau linux ARM du gumstix, pas besoin de dmesg). 1.11 Simulation d un blocage Dans cette partie, on simule un blocage du système dû à une erreur de programmation dans le noyau dans l émulateur. 1. Reprogrammer hello_module.c de manière à exécuter à l insertion une boucle while( 1 ) contenant les instructions suivantes : asm volatile( "mov r0, r0\n\t" "mov r0, r0\n\t" "mov r0, r0\n\t" "mov r0, r0" ); Ces 4 instructions en langage machine ARM/Xscale sont l équivalent d un no-op, c est à dire une opération nulle pour créer artificiellement un délai. 2. Compiler, télécharger dans l émulateur et insérer ce module. 3. Le système se bloque. Passer dans le terminal où s exécute le moniteur de qemu. 4. Examiner le contenu des registres avec info registers. 5. Le registre R15 est le compteur de programme contenant l adresse virtuelle courante lorsque l émulation a été suspendue. 6. Utiliser la commande x/ pour examiner les octets à partir de l adresse contenue dans le registre R15. Cette commande permet d afficher les octets (ou les instructions) à partir d une adresse en mémoire virtuelle (pagination) à l opposée de xp/ qui utilise des adresses en mémoire physique. Voir la documentation qemu en ligne ou dans les bookmarks de firefox pour la syntaxe de x/..

TP ENSPS 3A/MASTER 6 7. Retrouver la séquence cyclique d octets qui se reproduit 4 fois et qui correspond aux 4 instructions assembleur données plus haut dans la mémoire de l émulateur. Rechercher ensuite à l aide de l utilitaire objdump -d sur la machine hôte cette même séquence dans le binaire du module hello_module.ko. La commande objdump -i vous donne la liste des architectures supportés pour désassembler le code. Si l architecture arm n est pas supporté, utiliser l exécutable objdump dans le sous-répertoire build-arm_nofpu de la toolchain.