Changes between Version 3 and Version 4 of SujetTP1
- Timestamp:
- Feb 27, 2015, 6:39:43 PM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SujetTP1
v3 v4 6 6 périphériques plus ou moins exotiques. 7 7 8 Dans ce TP il vous est demand erde développer une application "user-land"8 Dans ce TP il vous est demandé de développer une application "user-land" 9 9 qui fasse clignoter une ou plusieurs LED's selon on motif que vous choisirez 10 10 et également de récupérer les informations de plusieurs boutons poussoirs. 11 11 12 Ala 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: 13 13 * Compilation croisée via un compilateur déporté 14 14 * Contrôle distant de système embarqué par liaison réseau (SSH) … … 17 17 * Programmation d'automates de contrôle en C 18 18 19 == 0. Plateforme de développement == 20 21 Pour exécuter votre programme sur une carte Raspberry Pi, vous devez vous 22 connecter en SSH sur une carte Raspberry Pi en passant par le routeur. 23 Le routeur a deux adresses: `132.227.102.36` du coté laboratoire et `192.168.1.1` de l'autre coté. 24 Le routeur crée un sous réseau (`192.168.1.x`) où sont connectés les cartes. 25 Les cartes sont numérotées de `20` à `24`, le routeur a été programmé de telle sorte 26 que 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`) 28 Le routeur a été également été programmé pour que tous les paquets entrants sur le 29 port `5000`+`X` de l'adresse `132.227.102.36` soient routés vers l'adresse `192.168.1.X`. 30 31 Il 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 33 Ainsi, 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 36 pi@132.227.102.36's password: raspberry 37 }}} 38 39 Pour 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 42 pi@132.227.102.36's password: raspberry 43 }}} 44 45 Comme, il n'y a qu'un compte par carte et que vous allez devoir vous les partager, 46 vous devez créer un répertoire à la racine avec le nom de votre login sur le réseau 47 enseignement accolé avec un tiret avec le nom de votre binôme si vous en avez un. 48 Par exemple, deux personnes en binôme se nommant respectivement 49 Une fois connecté, allez dans votre dossier qui contient votre programme 50 compilé pour la carte. Ensuite téléchargez votre programme sur une des cartes 51 disponibles comme indiqué par le chargé de TP. 52 19 53 = 1. Prise en mains des outils de développement: Hello World! = 20 54 … … 26 60 Pour compiler votre programme, suivez les instructions suivantes. 27 61 28 Tout d'abord configurez votre terminal pour utiliser le compilateur croisé:29 {{{ 30 $ source /users/enseig/ jpeeters/m1.peri/export_rpi_toolchain.sh31 }}} 32 33 Une fois le terminal configuré, vérifiez que le compilateur est acc éssible:62 Tout 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 67 Une fois le terminal configuré, vérifiez que le compilateur est accessible: 34 68 {{{ 35 69 $ which bcm2708hardfp-gcc 36 70 }}} 37 Si cette commande ne retourne rien, la configuration n'a pas fonctionné e.71 Si cette commande ne retourne rien, la configuration n'a pas fonctionné. 38 72 Appelez le chargé de TP pour vous aider. 39 73 40 Votre suite d'outils (toolchain) contient tous les outils nécessaire pour41 la compilatio , l'édition des liens et la manipulation de binaires pour la74 Votre suite d'outils (toolchain) contient tous les outils nécessaires pour 75 la compilation, l'édition des liens et la manipulation de binaires pour la 42 76 carte 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 SoC77 caractères: "bcm2708hardfp". Il d'agit donc d'un compilateur pour un SoC 44 78 BCM2708 avec l'option hardfp activée (calcul flottant matériel). Il s'agit 45 79 bien du SoC de la carte Raspberry Pi. 46 80 47 81 Maintenant, pour compiler un programme C vers un binaire qui puisse 48 s'exécuter sur l ecarte Raspberry Pi, il vous faut écrire un Makefile pour82 s'exécuter sur la carte Raspberry Pi, il vous faut écrire un Makefile pour 49 83 plus de facilité. Pour cela, suivez la syntaxe de base des Makefile: 50 84 {{{ 51 cible: dépend ences85 cible: dépendances 52 86 commande 53 87 }}} 54 88 Notez bien que l'indentation de la seconde ligne doit OBLIGATOIREMENT être 55 une tabulation et non un séried'espaces.89 une tabulation et non une suites d'espaces. 56 90 57 91 Vous pourrez donc par exemple, écrire la règle de Makefile suivante: … … 61 95 }}} 62 96 63 L'option "-static" est importante ici car la librairie C du compilateur croisé97 L'option "-static" est importante ici, car la librairie C du compilateur croisé 64 98 n'est pas tout à fait identique à la librairie C sur la carte Raspberry Pi. 65 99 Ajouter "-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 la100 contient en plus les fonctions de la librairie C utilisée par votre programme. 101 Ceci permettra à celui-ci de ne pas essayer d'utiliser des fonctions de la 68 102 librairie C installée sur la carte. 69 103 70 Essayez toutes les variantes ou combinaison de programme C que vous souhaitez.104 Essayez toutes les variantes ou combinaisons de programme C que vous souhaitez. 71 105 72 106 == 2. Contrôle de GPIO en sortie == 73 107 74 Dans cet teexercice, on vous propose de manipuler une pin du GPIO en mode108 Dans cet exercice, on vous propose de manipuler une pin du GPIO en mode 75 109 "sortie" pour contrôler le clignotement d'une LED à une fréquence donnée. 76 110 77 111 Avant de commencer à écrire du code, déterminez quelles sont les différentes 78 112 étapes nécessaires depuis l'initialisation jusqu'à l'envoi des valeurs 0 ou 1 79 sur le GPIO ?113 sur le GPIO. 80 114 81 115 Dans un premier temps, on vous ne demande pas d'écrire le code spécifique … … 90 124 }}} 91 125 92 Editez le fichier lab1.c et ajouterle code que vous pensez nécessaire à la126 Éditez le fichier lab1.c et ajoutez le code que vous pensez nécessaire à la 93 127 réalisation de cet exercice. 94 128 95 ATTENTION: ne changez pas les valeur de GPIO_LED0car vous risqueriez129 ATTENTION: ne changez pas les valeurs de GPIO_LED0, car vous risqueriez 96 130 d'endommager la carte Raspberry Pi. 97 131 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. 132 Ensuite, compilez-le grâce au Makefile qui vous est fourni. 133 109 134 110 135 Qu'observez-vous ? Essayez de changer la fréquence de clignotement. … … 146 171 processeur de la carte fonctionne à une fréquence de 700MHz ? 147 172 148 Asupposer que vous êtes capable d'appuyez sur le bouton à une fréquence de173 À supposer que vous êtes capable d'appuyez sur le bouton à une fréquence de 149 174 10Hz (i.e. 10 fois par seconde) et sachant que le théorème de Shannon dit 150 175 qu'il faut au moins échantillonner au double de la fréquence du signal