Accueil
Préambule
Horaire
Fichiers
Guides
Cours INF1995
 
Logiciel
Matériel
F.A.Q.
Références
Évaluation
 
     
   
 

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.





 
 
Copyright (C) 2008 Jérôme Collin - INF1995 : Projet initial en ingénierie informatique et travail en équipe
Département de génie informatique et génie logiciel - École Polytechnique de Montréal