Changes between Version 3 and Version 4 of SujetTP1


Ignore:
Timestamp:
Feb 27, 2015, 6:39:43 PM (10 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SujetTP1

    v3 v4  
    66périphériques plus ou moins exotiques.
    77
    8 Dans ce TP il vous est demander de développer une application "user-land"
     8Dans ce TP il vous est demandé de développer une application "user-land"
    99qui fasse clignoter une ou plusieurs LED's selon on motif que vous choisirez
    1010et également de récupérer les informations de plusieurs boutons poussoirs.
    1111
    12 A la fin de ce TP, vous devriez avoir acquis les compétences suivantes:
     12À la fin de ce TP, vous devriez avoir acquis les compétences suivantes:
    1313* Compilation croisée via un compilateur déporté
    1414* Contrôle distant de système embarqué par liaison réseau (SSH)
     
    1717* Programmation d'automates de contrôle en C
    1818
     19== 0. Plateforme de développement ==
     20
     21Pour exécuter votre programme sur une carte Raspberry Pi, vous devez vous
     22connecter en SSH sur une carte Raspberry Pi en passant par le routeur.
     23Le routeur a deux adresses: `132.227.102.36` du coté laboratoire et `192.168.1.1` de l'autre coté. 
     24Le routeur crée un sous réseau (`192.168.1.x`) où sont connectés les cartes.
     25Les cartes sont numérotées de `20` à `24`, le routeur a été programmé de telle sorte
     26que l'adresse internet de la carte n°`X` est comme adresse 192.168.1.`X`
     27(par exemple la carte n°`20` a comme adresse sur ce réseau `192.168.1.20`)
     28Le routeur a été également été programmé pour que tous les paquets entrants sur le
     29port `5000`+`X` de l'adresse `132.227.102.36` soient routés vers l'adresse `192.168.1.X`.
     30
     31Il n'y a qu'un seul compte utilisateur sur une carte Raspberry Pi. Le nom de login es `pi` et le mot de passe est `raspberry`.
     32
     33Ainsi, par exemple, pour se connecteur en ssh sur la carte n°`22` avec le login `pi`, il faut taper (remarquez que c'est un `p` minuscule):
     34{{{
     35$ ssh -p 5022 pi@132.227.102.36
     36pi@132.227.102.36's password: raspberry
     37}}}
     38
     39Pour copier un fichier `file.x` depuis votre compte enseignement sur le carte ,°`22` il faut taper (remarquez que c'est un `P` majuscule):
     40{{{
     41$ scp -P 5022 file.x pi@132.227.102.36
     42pi@132.227.102.36's password: raspberry
     43}}}
     44
     45Comme, il n'y a qu'un compte par carte et que vous allez devoir vous les partager,
     46vous devez créer un répertoire à la racine avec le nom de votre login sur le réseau
     47enseignement accolé avec un tiret avec le nom de votre binôme si vous en avez un.
     48Par exemple, deux personnes en binôme se nommant respectivement
     49Une fois connecté, allez dans votre dossier qui contient votre programme
     50compilé pour la carte. Ensuite téléchargez votre programme sur une des cartes
     51disponibles comme indiqué par le chargé de TP.
     52
    1953= 1. Prise en mains des outils de développement: Hello World! =
    2054
     
    2660Pour compiler votre programme, suivez les instructions suivantes.
    2761
    28 Tout d'abord configurez votre terminal pour utiliser le compilateur croisé:
    29 {{{
    30 $ source /users/enseig/jpeeters/m1.peri/export_rpi_toolchain.sh
    31 }}}
    32 
    33 Une fois le terminal configuré, vérifiez que le compilateur est accéssible:
     62Tout d'abord, configurez votre terminal pour utiliser le compilateur croisé (vous pourrez ajouter cette commande dans le fichier $HOME/.bashrc):
     63{{{
     64$ source /users/enseig/franck/peri/export_rpi_toolchain.sh
     65}}}
     66
     67Une fois le terminal configuré, vérifiez que le compilateur est accessible:
    3468{{{
    3569$ which bcm2708hardfp-gcc
    3670}}}
    37 Si cette commande ne retourne rien, la configuration n'a pas fonctionnée.
     71Si cette commande ne retourne rien, la configuration n'a pas fonctionné.
    3872Appelez le chargé de TP pour vous aider.
    3973
    40 Votre suite d'outils (toolchain) contient tous les outils nécessaire pour
    41 la compilatio, l'édition des liens et la manipulation de binaires pour la
     74Votre suite d'outils (toolchain) contient tous les outils nécessaires pour
     75la compilation, l'édition des liens et la manipulation de binaires pour la
    4276carte Raspberry Pi. Et tous ces outils sont préfixés par la même chaîne de
    43 caractéres: "bcm2708hardfp". Il d'agit donc d'un compilateur pour un SoC
     77caractères: "bcm2708hardfp". Il d'agit donc d'un compilateur pour un SoC
    4478BCM2708 avec l'option hardfp activée (calcul flottant matériel). Il s'agit
    4579bien du SoC de la carte Raspberry Pi.
    4680
    4781Maintenant, pour compiler un programme C vers un binaire qui puisse
    48 s'exécuter sur le carte Raspberry Pi, il vous faut écrire un Makefile pour
     82s'exécuter sur la carte Raspberry Pi, il vous faut écrire un Makefile pour
    4983plus de facilité. Pour cela, suivez la syntaxe de base des Makefile:
    5084{{{
    51 cible: dépendences
     85cible: dépendances
    5286    commande
    5387}}}
    5488Notez bien que l'indentation de la seconde ligne doit OBLIGATOIREMENT être
    55 une tabulation et non un série d'espaces.
     89une tabulation et non une suites d'espaces.
    5690
    5791Vous pourrez donc par exemple, écrire la règle de Makefile suivante:
     
    6195}}}
    6296
    63 L'option "-static" est importante ici car la librairie C du compilateur croisé
     97L'option "-static" est importante ici, car la librairie C du compilateur croisé
    6498n'est pas tout à fait identique à la librairie C sur la carte Raspberry Pi.
    6599Ajouter "-static" à la ligne de compilation permet de créer un binaire qui
    66 contient en plus les fonction de la librairie C utilisée par votre programme.
    67 Ceci permettra à celui-ci de ne pas essayer d'utiliser des fonction de la
     100contient en plus les fonctions de la librairie C utilisée par votre programme.
     101Ceci permettra à celui-ci de ne pas essayer d'utiliser des fonctions de la
    68102librairie C installée sur la carte.
    69103
    70 Essayez toutes les variantes ou combinaison de programme C que vous souhaitez.
     104Essayez toutes les variantes ou combinaisons de programme C que vous souhaitez.
    71105
    72106== 2. Contrôle de GPIO en sortie ==
    73107
    74 Dans cette exercice, on vous propose de manipuler une pin du GPIO en mode
     108Dans cet exercice, on vous propose de manipuler une pin du GPIO en mode
    75109"sortie" pour contrôler le clignotement d'une LED à une fréquence donnée.
    76110
    77111Avant de commencer à écrire du code, déterminez quelles sont les différentes
    78112étapes nécessaires depuis l'initialisation jusqu'à l'envoi des valeurs 0 ou 1
    79 sur le GPIO ?
     113sur le GPIO.
    80114
    81115Dans un premier temps, on vous ne demande pas d'écrire le code spécifique
     
    90124}}}
    91125
    92 Editez le fichier lab1.c et ajouter le code que vous pensez nécessaire à la
     126Éditez le fichier lab1.c et ajoutez le code que vous pensez nécessaire à la
    93127réalisation de cet exercice.
    94128
    95 ATTENTION: ne changez pas les valeur de GPIO_LED0 car vous risqueriez
     129ATTENTION: ne changez pas les valeurs de GPIO_LED0, car vous risqueriez
    96130d'endommager la carte Raspberry Pi.
    97131
    98 Ensuite compilez le grâce au Makefile qui vous est fourni.
    99 
    100 Pour exécuter votre programme sur une carte Raspberry Pi, vous devez vous
    101 connecter en SSH sur la machine peri-gw:
    102 {{{
    103 $ ssh peri-gw
    104 }}}
    105 
    106 Une fois connecté, allez dans votre dossier qui contient votre programme
    107 compilé pour la carte. Ensuite téléchargez votre programme sur une des cartes
    108 disponibles comme indiqué par le chargé de TP.
     132Ensuite, compilez-le grâce au Makefile qui vous est fourni.
     133
    109134
    110135Qu'observez-vous ? Essayez de changer la fréquence de clignotement.
     
    146171processeur de la carte fonctionne à une fréquence de 700MHz ?
    147172
    148 A supposer que vous êtes capable d'appuyez sur le bouton à une fréquence de
     173À supposer que vous êtes capable d'appuyez sur le bouton à une fréquence de
    14917410Hz (i.e. 10 fois par seconde) et sachant que le théorème de Shannon dit
    150175qu'il faut au moins échantillonner au double de la fréquence du signal