TP de Temps Réel : Prise en main d'une cible embarquée sous Linux



Documents pareils
Raja Bases de données distribuées A Lire - Tutoriel

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista)

Compte-rendu de projet de Système de gestion de base de données

Ateliers Python+Qt : Premiers pas : Comment développez ses propres interfaces graphiques sur le RaspberryPi?

Naissance d'un REPTAR

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

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

[Serveur de déploiement FOG]

Bac Professionnel Systèmes Electroniques Numériques

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Le transfert de fichiers avec Filezilla Initiation à l'utilisation d'un client FTP

Objet : Guide d'installation et de maintenance pour "My IC Phone 8082" connecté à un OmniPCX Office R810

TP 1 : 1 Calculs en binaire, octal et hexadécimal

G4L (Ghost for Linux) Clonage vers FTP Version: août 2006

Client Kiwi Backup : procédures d'installation et de mise à jour. Gilles Arnoult, Clément Varaldi

NOUVEAU! MultiSystem vous présente la première clé USB MultiBoot du marché! Le LiveUSB MultiBoot par excellence.

Installation et prise en main

L'accélération 3D sous Linux

Utilisation de GLPI. 1.Page d'accueil. Introduction

ESXi: Occupation RAM avec VM_Windows et VM_Linux. R. Babel, A. Ouadahi April 10, 2011

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Les dossiers, sous-dossiers, fichiers

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Seafile, pour simplifier l'accès à ses fichiers, les partager et les synchroniser

CRÉER UN DVD VIDEO avec DVD FLICK (avec ou sans menu)

ésylog, direction technique Esylog_PeerBackup outil de sauvegarde individuelle mails & fichiers personnels documentation technique

Retrouver un mot de passe perdu de Windows

PROJET TRIBOX-2012-A

Installation software

Réalisation d'un seeder BitTorrent en CPC Stage de TRE sous la direction de J. Chroboczek et G. Kerneis

l'ordinateur les bases

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

Si vous avez des questions ou bien si vous voulez tout simplement vous détendre, faite un tour sur le forum.

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

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad:

Aide pour les abonnés aux listes sympa du LAAS

Installation locale de JOOMLA SEPIA

Tutoriel : Clonezilla, pour sauvegarder et restaurer son disque dur

Éléments d'architecture des ordinateurs

Configurer Avast 7. La version 7 apporte quelques nouveautés : - Le Cloud. Étape 1 : Téléchargement

Guide d'utilisation de la. plate-forme GAR. pour déposer une demande. de Bourse Sanitaire et Sociale

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Pack Evolix Serveur Mail Documentation d'utilisation

Administration du site (Back Office)

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

Mise en place d'un Réseau Privé Virtuel

Le générateur d'activités

Bind, le serveur de noms sous Linux

contact@nqicorp.com - Web :

Projet serveur OwnCloud

FICHE TECHNIQUE. Linux Tutoriel. Installer une imprimante multifonction HP PSC 1315 sous Linux. TUTORIEL Starinux Imprimante multifonction HP PSC 1315


PIC EVAL Dev Board PIC18F97J60

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

[Serveur de déploiement FOG]

IV- Comment fonctionne un ordinateur?

NovoSIP manuel de mise en service

TP a Notions de base sur le découpage en sous-réseaux

2) Téléchargement de l'application pour contrôler vos caméras :

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

Storebox User Guide. Swisscom (Suisse) SA

Manuel utilisateur. des. listes de diffusion. Sympa. l'université Lille 3

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

Sommaire. 1. Installation Configuration de la sauvegarde Le Panneau de contrôle L'interface en ligne...

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Google Drive, le cloud de Google

I La création d'un compte de messagerie Gmail.

Base de Connaissances

DECOUVERTE DE LA MESSAGERIE GMAIL

Tutoriel Inscription et utilisation basique d'un blog hébergé chez Blogger.com

Ateliers Python+Qt : Premiers pas : S'installer pour PyQt... en quelques minutes sous Windows!

Projet Robot Centaure

GUIDE DE DEMARRAGE RAPIDE:

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

SweetyPix, mode d'emploi

Guide de configuration de SQL Server pour BusinessObjects Planning

HP Data Protector Express Software - Tutoriel 4. Utilisation de Quick Access Control (Windows uniquement)

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

FinImportExport Documentation Utilisateur Gestion d'environnement dans Fininfo Market

Application 1- VBA : Test de comportements d'investissements

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

DOCUMENTATION VISUALISATION UNIT

Installation et configuration de Vulture Lundi 2 février 2009

Installer et configurer Oracle Forms 11gR2 Windows 7 64 bits

Guide de l'utilisateur

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

TRAVAUX DIRIGES D'INFORMATIQUE INITIATION A LA MANIPULATION DE WINDOWS 98

1. Introduction Création d'une requête...2

Importation des données dans Open Office Base

Créer votre propre modèle

MODULES 3D TAG CLOUD. Par GENIUS AOM

Manuel d'utilisation avec le superviseur ISCANSERVER et le client VEHICLE Network System

Transcription:

TP de Temps Réel : Prise en main d'une cible embarquée sous Linux ENSIBS 2 eme année, Spécialité Informatique 1 Objectif Ce TP fais partie des TP de Temps-Réel et vise à prendre en main une cible embarquée. Cette cible fonctionne sous Linux. L'objectif de ce TP est de prendre en main la conguration d'un système Linux Embarqué basé sur uclinux. Il s'agira donc de congurer le noyau linux, mais aussi les utilitaires présents sur le système déployé. Dans une deuxième partie vous réaliserez un driver pour le robot wibot. 2 Élements fournis 2.1 La carte NEEK Linux sera déployé sur une carte NEEK (NIOS II Embedded Evaluation Kit). Le système de compilation choisi est un uclinux. Celui-ci vient sous la forme d'une archive complète dans un répertoire nommé nios2-linux. Il contient plusieurs sous-répertoires dont deux qui nous intéressent plus particulièrement : linux-2.6 contient les sources du noyau, c'est dans ce répertoire que seront plus tard écrits les drivers uclinux-dist contient les chiers nécessaires à la compilation de la distribution uclinux complète, c'est depuis ce répertoire que l'on lancera les commandes de conguration et de compilation. Les autres répertoires contiennent les outils nécessaires à la compilation ainsi que les librairies. Pour faire tourner linux sur la carte NEEK et proter un maximum de ses possibilités, il nous faut utiliser une conguration du FPGA sur laquelle le processeur NIOS2 est conguré adéquatement et est assorti de contrôleurs qui permettent le pilotage des éléments de la carte et pour lesquels des drivers Linux existent. Cette conguration s'appelle neek_ocm_spi_mmu elle contient les drivers suivants : des GPIO standards, supportés par Linux et placés sur une LED ainsi que sur les ports I2C et SPI un framebuer altfb un touchscreen ADS7846 sur bus SPI un contrôleur PS/2 Altera UP PS/2 un contrôleur Ethernet (réseau) fourni par OpenCore 2.2 Le Robot Le robot utilisé dans ce TP est une base wibot sur laquelle a été branchée une carte NEEK. Le robot wibot possède 4 roues, chaque côté est propulsé de manière indépendante ce qui permet de réaliser des mouvements (un peu comme un char). Le robot est connecté sur le bus i2c de la carte NEEK et se trouve à l'adresse 0x51. 1

On peut lui envoyer une commande, on lui envoie alors le numéro du registre dans lequel écrire, puisqu'il n'y a qu'un registre, c'est toujours 0x00. Ensuite, on lui envoie un octet pour le moteur gauche et un octet pour le moteur droit sous la forme proposée à la gure 1. B7 B6 B5 B4 B3 B2 B1 CTRL DIR VITESSE B0 1 : boucle fermee 0 : boucle ouverte 1 : marche avant 0 : marche arrirere Valeur de la vitesse sur 6 bit en boucle ouverte : valeur fournie aux moteurs en boucle fermee la valeur correspond au nombre de ticks par periode (10ms) Figure 1 Octet de commande pour chaque moteur On peut aussi récupérer des informations, on lui envoie un octet contenant l'unique registre (0x00) et sans faire de stop, on demande la lecture de 15 octets qui contiennent les informations en provenance du robot. La fonction wb_ctrl_read contient le code permettant d'interpréter ces 15 octets et de les placer dans la structure robot_data. 3 Conguration de uclinux 3.1 Conguration et exécution d'un système de base Dans cette première partie du TP vous allez réaliser la première conguration d'un système Linux, et l'exécuter. 3.1.1 Conguration du système Vous lancez la conguration à l'aide de la commande : make menuconfig Lancée depuis le répertoire uclinux-dist. Un premier menu vous est présenté, dans lequel vous devez choisir la cible pour laquelle vous compilez (Altera Nios2 ) puis vous choisissez ce que vous allez modier (Customize Kernel Settings). Note : Pour pouvoir compiler les sources du noyau, il est nécessaire de choisir le bon GPIO dans NiosII Conguration->Additional NiosII Device Drivers. Ainsi que la bon contrôleur Ethernet dans Device Drivers->Network Device Support->Ethernet 10/100. 3.1.2 Exécution Pour pouvoir exécuter le système, il faut tout d'abord charger le chier de conguration (.sof) dans le FPGA. L'exécution du système se fait ensuite en chargeant directement à l'aide de nios2-download l'image du noyau qui se trouve dans le répertoire images/zimage. Une fois que vous avez lancé Linux, vous devriez le voir booter sur un terminal attaché à travers le JTAG (nios2-terminal). Quand vous arrivez à la ligne de commande, vous pouvez utiliser ifcong pour congurer votre carte réseau et communiquer avec votre PC (vous pouvez utiliser un telnet pour vous connecter à la carte. 2

3.2 Pilotage d'une LED sur la carte Vous allez congurer le noyau Linux pour qu'il supporte la LED qui est congurée dans l'application. Pour cela, il faut tout d'abord que le GPIO soit bien conguré. Ensuite, il vous faudra congurer la LED dont le menu se trouve dans Device Drivers->LED Support. Une fois la LED congurée, vous pourrez la contrôler en accédant au chier brightness correspondant. En eet, le driver pour les LED présent dans Linux crée des chiers dans le sysfs pour contrôler celles-ci. Les diérentes LED se trouvent dans le répertoire /sys/class/led. Lorsque vous aurez vérié que la LED peut-être pilotée à l'aide d'un programme de l'espace utilisateur, vous retournerez dans le menu de conguration pour congurer la LED avec le LED Heartbeat Trigger. 3.3 Obtention du système complet L'objectif de cette partie du TP est de faire fonctionner l'ensemble des entrées-sorties de la carte et de congurer le serveur d'achage. Congurez les périphériques suivants Clavier FrameBuer TouchScreen Congurez tslib pour pouvoir exécuter ts_calibrate Lancez l'image Linux ainsi conguré et testez Nano-X Pour pouvoir congurer et compiler tslib, vous utiliserez un menu diérent de celui permettant de congurer le noyau. Ce second menu est le menu de conguration du système uclinux, il reprend les mêmes outils que les outils de conguration du noyau mais pour congurer l'espace utilisateur. Pour pouvoir accéder à ce menu, il faut sélectionner Customize Application/Library Settings dans le premier menu de conguration. 3.4 Conguration de l'i2c Cette question a pour but d'obtenir un système Linux proche de celui utilisé dans la seconde séance de TP. Il s'agit de vérier le le sous-système I2C fonctionne bien sur votre système. Activez le support de l'i2c à travers l'utilisation du driver dit bit-bang Vériez l'accès à l'eeprom en achant le contenu du chier eeprom situé dans le périphérique à l'adresse 0x50 du bus i2c numéro 1. 4 Réalisation d'un programme utilisant l'écran tactile Vous allez réaliser un programme fonctionnant dans l'espace utilisateur pour la gestion de l'écran tactile. Ce programme servira de base a la réalisation de votre interface utilisateur. Inspirez-vous du tutoriel fourni a l'adresse suivante : http:www.alterawiki.comwikicompile_hello 5 Création d'un driver pour le wibot L'objectif de cette section est, en s'inspirant du driver pour le ltc4306, d'écrire le driver pour le wibot. L'écriture de ce driver se fera à partir du chier wb_ctrl.c qui vous est proposé. 5.1 Compilation et chargement du driver ltc4306 L'objectif de cette première étape est de prendre en main le processus de compilation. Le driver pour le ltc4306 se trouve dans un chier ltc4306.c. 3

Créez un répertoire wifibot dans le répertoire drivers d noyau et dans lequel vous placerez vos drivers Modiez les chiers Makefile et Kconfig du répertoire drivers an de permettre la compilation de votre driver Ecrivez le chier Makefile et le chier Kconfig à placer dans le répertoire wifibot et permettant la compilation du driver ltc4306 Compilez un module contenant le driver Lancez linux et vériez le fonctionnement du driver en ajoutant le périphérique ltc4306 à l'adresse 0x44. Une fois le driver chargé, la LED doit normalement s'allumer. 5.2 Initialisation du driver A l'aide du driver pour le ltc4306, complétez la partie i2c du driver pour le robot an que le driver puisse se charger dans le noyau. 5.3 Test du bon fonctionnement de l'i2c Pour tester le bon fonctionnement de l'i2c, on va lancer une commande au robot lors de l'enregistrement du driver. Les drivers pour l'i2c sont un peu particuliers en ce sens qu'on ne sait qu'au moment du fonctionnement combien de périphériques seront instanciés et quelles sont leurs adresses. En plus de la traditionnelle fonction d'initialisation du driver, il existe une fonction appelée lors de l'insertion du périphérique. 5.3.1 Envoi d'une commande au robot Identiez cette fonction dans le driver du ltc4306 et proposez une écriture pour le wibot lançant une commande de déplacement du robot. Les primitive que vous utiliserez pour envoyer une commande I2C au robot est : i2c_send. Testez votre fonction, lors de l'insertion du driver, vous devriez voir les roues tourner brièvement. Encapsulez l'envoi de la commande de déplacement dans une fonction utilitaire, vous nommerez cette fonction wb_ctrl_send. 5.3.2 Récupération des paramètres du robot Complétez la fonction wb_ctrl_read pour qu'elle remplisse la structure data en fonction de l'état actuel du robot. Pour compléter cette fonction, vous utiliserez la fonction i2c_transfer. Une fois la fonction remplie, les paramètres devraient s'acher. 5.4 Interface avec l'utilisateur via sysfs L'objectif d'un driver est normalement de permettre une interaction avec l'utilisateur. Dans le cadre de l'i2c, il est intéressant d'utiliser sysfs en lieu et place d'un device parce que ce dernier est dynamique. Sysfs permettra donc de créer un ensemble de noeuds du système de chiers pour chaque nouveau périphérique branché, les commandes sont alors disponibles dans un sous-répertoire de /sys/bus/i2c/devices/i2c-0/, 0-0051 dans le cas du robot puisqu'il est présent à l'adresse 0x51. 4

5.4.1 Gestion des déplacements Analysez le fonctionnement de set_speed et show_speed et complétez les pour permettre l'envoi d'une vitesse au robot et la lecture de la vitesse actuelle à l'aide des fonctions précédemment réalisées. Le format de la chaîne de caractère lue ou écrite dans le chier est le suivant : <vitesse gauche> <vitesse droite>. Un nouveau chier speed doit apparaître dans le répertoire du périphérique. 5.4.2 Récupération des paramètres d'odométrie Réalisez et enregistrez votre propre noeud dans l'arborescence sysfs pour récupérer les valeurs de l'odométrie. 5.5 Envoi périodique de la vitesse Vous avez remarqué que la commande en vitesse des roues du robot expire au bout de quelques milisecondes. Ce fonctionnement a été déni pour que le robot s'arrête en cas de dysfonctionnement de la carte de commande. Pour que le robot fonctionne en continu, il est donc nécessaire d'envoyer périodiquement une nouvelle commande de déplacement. Deux alternatives sont possibles : réaliser cet envoi périodique depuis le programme (depuis l'espace utilisateur) réaliser cet envoi dans le driver (depuis le noyau) Le noyau fournit la possibilité de réaliser des traitements périodiques au travers des timers. Il s'agit d'armer un timer qui exécute une fonction passée en paramètre de manière asynchrone, pour avoir un comportement périodique, le timer doit être réarmé depuis la fonction en question. Il vous est maintenant demandé de réaliser ce comportement périodique en utilisant un timer dans le driver. 5.6 Complétion de l'interface sysfs Implémentez le reste de l'interface entre le robot et le système de chier an de récupérer tous les paramètres depuis le robot. Pour cela, vu que la récupération des autres paramètres est similaire, vous utiliserez le mécanisme de macro oert par le pré-processeur C. 5