====== Utilisation de la carte ====== * [[https://github.com/CircuitCo/BeagleBone-RevA6/blob/master/BeagleBone_SRM_A6_0_1.pdf?raw=true|Manuel de référence]] ===== Démarrage ===== Le BeagleBone doit être connecté sur un port USB. A partir de là, il se connecte comme un support de stockage USB et une partie de son disque peut être consulté comme une clé USB. Pour pouvoir se connecter en réseau, il faut d'abord démonter le stockage USB (par le bureau ou par une interface de commande). ===== Connexion par USB ===== On peut passer par une interface http : il faut taper l'adresse ''192.168.7.2'' dans votre navigateur préféré. Ou alors, on peut se connecter directement avec ssh : ssh root@192.168.7.2 Le mot de passe est ''root''. **IMPORTANT** Vous êtes ''root'' sur ces machines : je vous conseille la plus extrême prudence pour ne pas me bousiller le système avec un ''rm'' malencontreux. On se retrouve alors sous une interface de commande bash avec un certain nombre de commandes classiques des systèmes Unix mais cela reste assez sobre pour développer. Autre: * [[http://learn.adafruit.com/beaglebone/overview|Connexion avec Windows]] * [[http://www.lvr.com/beaglebone.htm|Détails avec Linux]] ===== Connexion par Ethernet ===== La connexion par USB n'est pas encore disponible sur vos stations de travail. Vous pouvez néanmoins vous connecter par Ethernet. La connexion devient alors : * connectez le cordon USB de la station de travail au BeagleBone pour l'alimenter, * connectez la Beaglebone avec n'importe quel câble Ethernet de la salle. Pour vous connecter, vous devez taper : ssh 192.168.0.NUM NUM est le numéro de votre BeagleBone + 33. ===== Programmation ( ce que ça devrait être) ===== Je ne l'ai pas encore testé mais le schéma proposé peut-être le suivant : * maintenir une connexion //ssh// en permanence pour pouvoir tester, * écrire et compiler l'application sur votre machine de travail en utilisant le compilateur ''arm-eabi-gcc'', * transférer sur la BagleBone en utilisant //scp//, * lancer l'application depuis la session //ssh//. Cette démarche est bien sûr seulement possible tant qu'on maintient une liaison filaire avec la Bagle Bone. Dès qu'on voudra lâcher le quadcopter, on procédera de même pour charger et lancer le programme mais il faudra le rendre indépendant de la session //ssh// qui devra être rompu (plus d'explications plus tard). Comme votre application va s'exécuter sur un système Linux, il n'est pas nécessaire d'appliquer les options propres à la carte AT91SAM7S : on utilisera les options de base du compilateur ARM qui, par défaut, à destination de Linux ARM. Ci-dessous un ''Makefile'' qui pourra vous aider: EXEC = ctest SOURCES = ctest.c OBJECTS = $(SOURCES:.c=.o) ARCH=arm-linux-gnueabi- CC=$(ARCH)gcc CFLAGS=-g3 TARGET=root@192.168.7.2:. $(EXEC): $(OBJECTS) install: scp $(EXEC) $(TARGET) Pour éviter d'avoir à retaper sans arrêt le mot de passe, je vous conseille de crée une paire de clés symétriques (''ssh-keygen'') et d'ajouter la partie publique du fichier ''/home/root/.ssh/authorized_keys''. ===== Programmation (ce qu'on peut faire pour l'instant) ===== **ATTENTION** Le compilateur de vos stations de travail, ''arm-eabi-gcc'', ne produit pas des binaires exécutables pour le BeagleBone : * il utilise des instructions seulement accessible en mode //système// alors que votre programme fonctionne en mode //utilisateur//, * il ne fait pas l'édition avec une //libc// pour Linux : donc vous n'auriez pas accès aux appels système de Linux. Cependant, le BeagleBone embarque un compilateur GCC que nous pouvons utiliser. Il suffit de copier vos sources sur la BeagleBone et de compiler sur place. Eventuellement, vous pouvez complètement développer sur la BeagleBone si vous vous connectez en ''ssh -X''. Vous disposez alors de l'éditeur de texte ''gedit''. ===== Clé privée / publique ===== Il est assez fastidieux de devoir retaper le mot de passe à chaque fois qu'on réalise une action (login, copie, etc) de la station de travail à la BeagleBone. Pour éviter cela, on peut se repose sur la gestion de clés privées / publiques fournies par //ssh//. Pour ce faire, il faut d'abord crée une pair de clés: $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/casse/.ssh/id_rsa): beaglebone Enter passphrase (empty for no passphrase): Enter same passphrase again: Vous avez seulement à remplir le nom du fichier, par exemple ''beaglebone'' et à laisser vide le phrase de passe. Cela crée deux fichiers : * ''$HOME/.ssh/beagle'' -- qui est la clé privée qui ne doit pas bouger de son répertoire, * ''$HOME/.ssh/beagle.pub'' -- qui est la clé publique destinée à être envoyée sur la machine distante. Pour installer la clé publique, $ scp $HOME/.ssh/beagle.pub root@ADRESSE_BEAGLE_BOARD:. $ ssh root@ADRESSE_BEAGLE_BOARD $ mkdir .ssh $ cat beagle > .ssh/authorized_keys Désormais, quand vous vous connecterez, vous n'aurez plus besoin de taper le mot de passe.