|
Fichiers
La conception du robot et la méthode
pour le programmer impliquent toute une série de fichiers et
de procédures d'installation. Cette section du site web
donnent les détails sur ces sujets. Rien de ce qui est
présenté ici n'est nécessaire directement pour
suivre le cours mais bien des renseignements intéressants s'y
trouvent pour ceux et celles qui désire aller plus loin avec
leur robot.
Conception du robot
Le robot est d'abord constitué
d'un ensemble de pièces
électroniques et mécaniques commercialement
disponibles. Quelques pièces sont aussi fabriquées sur
mesure. C'est le cas de la base du robot fait de plastique PVC de
6mm d'épaisseur. Un dessin
en format DXF (format utilisé par Autocad
et QCad)
donnent les dimensions de la pièce. Les fichiers montrant les
vues schématique et topologique (layout) des circuits
imprimés du pont
en H et de la carte
mère pour le logiciel Eagle
sont aussi fournis. Les fichiers
«Gerber» pour la fabrication des circuits sont inclus
également. Tous ces documents techniques sont sous licence
GPL.
Modélisation en
3 dimensions du robot
M. Louis-Philippe Bourret a patiemment
travaillé avec le logiciel Blender
pour modéliser en 3 dimensions le robot. Le rendu graphique
est très jolie. Un premier
fichier montre le robot lui-même sans aucun éclairage
ni animation alors qu'un second
le montre dans le contexte d'une épreuve avec éclairage
et animation. Nous remercions M. Bourret de sa collaboration.
Installation des outils
AVR sous Linux
Pour programmer le robot, il faut une
suite d'outils logiciels adaptés dont les plus importants sont
le compilateur, l'assembleur et le logiciel de chargement par USB.
Une librairie C, des utilitaires pour la manipulation des fichiers
binaires et des documents d'utilisation complètent l'ensemble.
Une manière pratique d'installer ces logiciels sur Fedora
Core Linux (version 6 et plus) est d'utiliser l'utilitaire de gestion
Yum
avec la commande suivante:
%
yum list available | grep -i avr
Ce qui permettra de lister ce qui est
disponible. Un résultat semblable à ce qui suite
devrait apparaître:
-
|
avr-binutils
|
i386
|
2.17-3.fc6
|
extras
|
2.8 M
|
|
avr-gcc
|
i386
|
4.1.2-4.fc6
|
extras
|
2.5 M
|
|
avr-gcc-c++
|
i386
|
4.1.2-4.fc6
|
extras
|
2.1 M
|
|
avr-gdb
|
i386
|
6.6-4.fc6
|
extras
|
2.1 M
|
|
avr-libc
|
noarch
|
1.4.6-4.fc6
|
extras
|
988 k
|
|
avr-libc-docs
|
noarch
|
1.4.6-4.fc6
|
extras
|
1.9 k
|
|
avrdude
|
i386
|
5.3.1-5.fc6
|
extras
|
503 k
|
Il suffira par la suite d'installer le
tout avec une seule commande!
%
yum install avr*
Une autre méthode est de
compiler et d'installer les outils à partir des fichiers
sources. Il s'agit d'une méthode plus longue, plus complexe
et qu'il faut exécuter méthodiquement.
Il faut télécharger les
paquets binutils,
gcc, avr-libc,
la documentation
avr-libc et avrdude.
Il faudra aussi ajouter la librairie libusb
et libusb-devel
qui facilite l'accès au port USB sous Linux. Une fois les
paquets obtenues, et selon les numéros des versions les plus
récentes, la liste des fichiers dans un répertoire de
travail devrait ressembler à ce qui suit:
%
ls avrdude-5.3.1.tar.gz
avr-libc-user-manual-1.4.5.tar.bz2 avr-libc-1.4.5.tar.bz2
binutils-2.14.tar.gz avr-libc-user-manual-1.4.5.pdf.bz2
gcc-4.1.1.tar.bz2
La compilation de chaque paquet doit se
faire dans l'ordre qui suit et en utilisant les commandes suivantes.
L'installation doit se faire en étant «root» et on
assume ici que les fichiers seront installés dans
/usr/local/AVR:
%
gtar zxvf binutils-2.14.tar.gz % cd binutils-2.14 % ./configure
--prefix=/usr/local/AVR --target=avr % make % make install %
PATH="$PATH:/usr/local/AVR/bin" % cd ..
% gtar
jxvf gcc-4.1.1.tar.bz2 % cd gcc-4.1.1 % ./configure
--prefix=/usr/local/AVR \ --target=avr
--enable-languages="c,c++" \
--disable-nls --disable-libssp % make % make install %
cd ..
% gtar jxvf avr-libc-1.4.5.tar.bz2 % cd cd
avr-libc-1.4.5 % unset CC % ./configure
--build=`./config.guess` --host=avr --prefix=/usr/local/AVR %
make % make install % cd ..
% bunzip2
avr-libc-user-manual-1.4.5.pdf.bz2 % cp
avr-libc-user-manual-1.4.5.pdf /usr/local/AVR % gtar jxvf
avr-libc-user-manual-1.4.5.tar.bz2
%
cp -r avr-libc-user-manual-1.4.5 /usr/local/AVR/
%
gtar zxvf avrdude-5.3.1.tar.gz % cd
avrdude-5.3.1/etc/security/console.perms.d % ./configure
--prefix=/usr/local/AVR % make % make install % cd ..
Configuration du port
USB pour l'utilisation de la carte mère
Jean-Marc Chevalier, technicien au
département de génie informatique et de génie
logiciel, a mis au point une configuration pour le port USB pour les
systèmes Linux utilisant l'interface udev.
Deux fichiers de deux lignes chacun doivent être installés
par l'usager “root” pour y arriver.
Le premier fichier doit être
placé dans /etc/udev/rules.d/usbdev_atmel.rules
et il doit avoir exactement les deux lignes suivantes (il ne faut par
inscrire «Ligne1:» et «Ligne2:» car ces deux
identificateurs sont placés uniquement pour bien marquer les
débuts de lignes):
Ligne1:SYSFS{idVendor}=="16c0",
SYSFS{idProduct}=="05dc", SYMLINK+="vendor16c0-05dc",
RUN+="/sbin/pam_console_apply"
Ligne2:BUS=="usb",
KERNEL=="usbdev*", SYSFS{idVendor}=="16c0",
SYSFS{idProduct}=="05dc", RUN+="/sbin/pam_console_apply"
De plus, il faut ajouter un fichier
/etc/security/console.perms.d/99-atmel.perms
(ou avec tout autre numéro comme identificateur de début
de fichier) ayant les deux lignes qui suivent comme contenu:
<vendor16c0-05dc>=/dev/vendor16c0-05dc
<console>
0600 <vendor16c0-05dc> 0660 root.root
Il faudra faire un «logout»
avant de refaire un «login» pour activer les
bonnes permissions. Par la suite, en branchant la carte dans un port
USB, la commande «dmesg»
devrait révéler que la connexion est bien établie.
Une autre façon est de voir s'il y a bien une entrée
dans /proc/bus/usb/devices
pour la carte en regardant les numéros de idVendor et
idProduct qui devraient correspondre à ceux de la carte
mère.
À noter que cette configuration
fait en sorte que la permission est accordée à
n'importe quel appareil qui se branche sur le bus USB. L'usager
ayant une session ouverte sur le poste de travail obtient les droits
de lecture et d'écriture vers l'appareil en question
Nous remercions également
Jean-Marc Chevalier pour sa contribution au développement du
cours INF1995. Les efforts de Jean-Marc ont été
poursuivis par Philippe Proulx pour la façon de faire sur les
plates-formes Ubuntu
et Windows
XP (rien ne semble fonctionner sur Vista pour l'instant...). Un
grand merci à Philippe pour sa contribution.
Le micrologiciel
(firmware) sur la carte mère
Le micrologiciel
usbaspPoly est un programme qui doit être chargé sur
le microcontrôleur ATMega8 sur la carte mère. Ce code
très complexe gère les échanges par port USB
avec le PC. Le micrologiciel a été développé
par le groupe Objective
Developpement (partie vusb) et par Thomas
Fischl (partie USB-asp) mais a été modifié
par Matthew Khouzam, ancien étudiant en maîtrise à
l'École Polytechnique de Montréal en génie
informatique. Matthew a écrit un rapport qui accompagne le
code. Une lecture du rapport, du code et du document “USB
in a nutshell” peut permettre a une personne motivée
de comprendre les détails du protocole USB sur la carte mère.
Matthew Khouzam est un des plus grands contributeurs au projet de
robot en INF1995. Une licence
particulière accompagne ce logiciel.
Le chargement
du micrologiciel sur une carte mère doit se faire en
suivant à la lettre une suite d'opérations précises.
Programmes développés
pour le cours
Une fois que la carte mère peut
communiquer avec le PC via le port USB, il faut tout de même
avoir un programme qui peut aller lire et écrire les données
sur ce port. Lorsqu'on programme la carte en utilisant la commande
“make install”,
l'utilitaire de chargement avrdude est appelée par une des
règles du Makefile. Ce programme se charge d'ouvrir un canal
de communication vers le port USB pour envoyer les données
vers la carte. Par contre, lorsqu'on désire rediriger les
données émises par RS232 vers le câble USB, il
faut utiliser le programme serieViaUSB
pour y arriver. Tout comme avrdude, serieViaUSB ouvre un canal de
communication vers le port USB pour permettre les échanges de
données. Il n'y a aucune licence associée à ce
programme.
Le petit programme progmem
utilisé surtout pour le travail pratique 9 est en réalité
un compilateur écrit avec l'analyseur lexical lex
(plus précisément sa variante GNU appelée flex)
et l'analyseur syntaxique YACC
(plus précisément sa variante GNU appelée
bison).
En bref, ces deux outils sont très utiles pour écrire
des compilateurs. La compilation est étudiée en
détails dans le cours LOG3210.
Le code du programme progmem peut être utilisé
librement et est distribué sous aucune forme de licence.

|