Master SIAME | Université Toulouse 3

Internet of things and System on Chip

Master SIAME | Université Toulouse 3

Internet of things and System on Chip

User Tools


Utilisation de la carte

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:

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.