Enseignant: |
Jérôme Collin, responsable (local M-4013, poste 5060) |
|
Support technique supplémentaire: | Laurent Tremblay (local M-4011, poste 7181) | |
Chargés de laboratoire: | Section 1: |
Kais Fallouh (Lundi AM) Romain Lebbadi-Breteau (Mercredi PM) |
Section 2: |
Tristan Rioux (Mardi PM) Gaëtan Florio (Jeudi AM) |
|
Section 3: |
Luciano Garin-Iriarte (Lundi PM) Ely-Cheikh Abass (Jeudi PM) |
|
Section 4: |
Dorine Dantrun (Mardi AM) Meriam Ben Rabia (Vendredi AM) |
|
Section 5: |
Amélie Simard (Mercredi AM) Abdul-Wahab Chaarani (Vendredi PM) |
|
Section 6: |
Marc-Antoine Manningham (Mardi soir) Laurent Bourgon (Jeudi soir) |
Installation et configuration des logiciels
Installation de Linux
À peu près n’importe quelle distribution de Linux fera l’affaire pour le cours. Toutefois, vous pouvez être conservateur et commencer avec Ubuntu ou Fedora s’il s’agit de vos premiers pas avec ce système d’exploitation. Pour une plus grande tranquillité d’esprit, vous pouvez prendre l’image CentOS ajustée par l’équipe technique du département de génie informatique et génie logiciel. Elle contient beaucoup de programmes et d’utilitaires ajoutés à la distribution de base et utile pour les cours en GIGL. Il n’y a que l’installation du simulateur SimulIDE (plus bas sur cette page) qui restera à faire si vous prenez cette image. L’installation des outils pour AVR et la configuration des ports USB seront déjà en place. En plus, cette image est la même que celle installée dans les laboratoires du département. Un fichier PDF explique en plus comment l’installer avec VMWare, l’outil de virtualisation vous permettant de rouler CentOS à l’intérieur de Windows ou tout autre système d’exploitation sur PC.
Installation des outils de programmation pour AVR sous Linux
Pour programmer le robot ou le simulateur SimulIDE, 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 est d'utiliser l'utilitaire de gestion DNF avec la commande suivante:
% sudo dnf install avr-binutils avr-gcc avr-gcc-c++ avr-libc avr-libc-doc avrdude libusb
Si vous utilisez une distribution de type Debian (comme Ubuntu), la commande sera différente puisqu’il faut utiliser la commande apt-get (ou apt), mais le résultat sera équivalent même si les noms et le nombre de paquets change quelque peu:
% sudo apt-get install avrdude avrdude-doc avr-libc binutils-avr gcc-avr
Une autre méthode est de compiler et d'installer les outils à partir des fichiers sources même si on devrait considérer cette option comme un dernier recours. 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-dev
qui facilite l'accès au port USB sous Linux. Par
contre, quelqu’un a déjà fait cet effort en
grande partie et offre le
résultat sous forme binaire à
https://github.com/ZakKemble/avr-gcc-build/releases.
Configuration du port USB pour l'utilisation de la carte mère sur Fedora
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:ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", SYMLINK+="vendor16c0-05dc", RUN+="/sbin/pam_console_apply"
Ligne2:SUBSYSTEM=="usb", KERNEL=="usbdev*", ATTR{idVendor}=="16c0", ATTR{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. La commande «lsusb» peut donner aussi cette information.
À 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 INF1900 et pour tout le travail qu'il fait sur les postes du laboratoire utilisé pour le cours.
Configuration du port USB pour l'utilisation de la carte mère sur Ubuntu
Les efforts de Jean-Marc ont été poursuivis par Philippe Proulx pour obtenir la configuration correcte sur Ubuntu. Il suffit d'éditer le fichier /etc/udev/rules.d/50-avr.rules pour que sa seule et unique ligne ressemble à ceci (en tant qu'usager “root”) :
SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", OWNER="votre_utilisateur", MODE="0666", SYMLINK+="inf1900-board"
Prenez soin de remplacer, dans cette dernière ligne, votre_utilisateur par votre nom d'utilisateur (vous pouvez l'obtenir grâce à la commande whoami). Par la suite, il suffit de redémarrer le udev avec la commande suivante en “root”:
% /etc/init.d/udev restart
Après avoir redémarré la carte mère connectée à l'ordinateur, il est toujours possible de voir si l'installation et la configuration fonctionnent bien avec la commande suivante (en tant qu'usager normal) :
% ls -la /dev/ | grep inf1900-board | wc -l
La commande suivante donne toujours aussi beaucoup d'information sous Linux:
% dmesg
La commande suivante peut aussi être très utile pour lister les périphériques USB connectés:
% lsusb
Merci à Philippe pour sa contribution.
Le simulateur SimulIDE
Le code source de SimulIDE a été modifié au département de génie informatique et de génie logiciel par Laurent Tremblay et il faut utiliser cette version, car elle a été «enrichie» de certaines composantes additionnelles. Voici la version modifiée. Il suffit de télécharger l’archive et de l’extraire directement dans votre compte (si possible à la racine) puisque l’installation n’est pas intégrée à un format de paquet de distribution Linux.
% tar zxvf SimulIDE_0.3.12.SR8-INF1900.3.tgz
Des paquets Debian ou Fedora sont disponibles à certains endroits sur le web (comme ici par exemple) mais les versions sont parfois très vieilles et ne pourront pas convenir pour le cours. Les «vraies» paquets de SimulIDE sont à https://www.simulide.com/p/downloads.html. La version la plus courante de SimulIDE peut être plus récente que la nôtre, car le projet connaît une bonne popularité et le développement progresse bien. Éventuellement, on verra à soumettre nos modifications aux personnes responsables du développement principal de SimulIDE.
SimulIDE dépend de librairies graphiques Qt qui ne sont pas installées normalement. Donc, il faut le faire. Avec Fedora:
% sudo dnf install qt5-qtsvg qt5-qtmultimedia qt5-qtscript qt5-qtserialport qt5-qtxmlpatterns
Ou avec Debian ou Ubuntu:
% sudo apt-get install libqt5script5 libqt5multimedia5 libqt5serialport5 libqt5xml5
Le plus simple sera, par la suite, d’appeler directement en ligne de commande (souvent avec le chemin complet pour plus de facilité) l’exécutable simulIDE du sous-répertoire «bin». Remarquez que l’appel a été placé en arrière-plan avec le «&» en fin de ligne pour regagner l’invité (prompt) de commande bash même si l’interface graphique apparaît et que le programme continue donc de rouler:
% /home/collin/SimulIDE_0.3.12-SR8-INF1900.2/bin/simulide &
Il vous faudra donc adapter le chemin à la réalité de l’endroit où vous avez fait l’extraction. En appelant l’exécutable par son chemin complet en ligne de commande, on est certain d’appeler le bon outil, même si une vieille version peut «traîner» ailleurs sur votre machine selon la distribution Linux utilisée...
Installation des logiciels de simulation plus marginaux et plus avancés
Ce qui suit est tout à fait facultatif pour le cours et est présenté uniquement pour compléter le sujet de la simulation. Ces outils ne seront pas utilisés pour le cours.
À la base, le simulateur SimulIDE est une interface graphique par-dessus le simulateur SimAVR qui est très peu convivial à utiliser. Par contre, SimAVR peut offrir les signaux logiques entrant et sortant des broches de l’AVR avec le logiciel de visualisation GTKWave. SimAVR ne peut être installé facilement sur Fedora. Il faudra recompiler des fichiers sources comme le montre le site http://fabricesalvaire.github.io/simavr/gitorious-get-started.html. Avec Ubuntu, c’est plus facile:
% sudo apt-get install libelf-dev libglut3-dev build-essential simavr simavr-dev libsimavr-dev
Pour GTKWave, c’est plus simple:
% sudo apt-get install gtkwave
Il existe quelques solutions complémentaires pour offrir une forme d’interface graphique à avr-gdb. On peut se tourner vers GDB-Frontend ou encore le bon vieux DDD qui n’est plus supporté, mais qui fonctionne encore. Souvent, appeler GDB avec l’option d’interface texte (-t) reste la solution le moins compliquée.
DDD et GDB-Frontend s’installent tous deux de la manière attendue tant qu’on fournit un petit ajustement dans la provenance des paquets pour GDB-Frontend:
% sudo apt-get install ddd
% echo "deb [trusted=yes] https://oguzhaneroglu.com/deb/ ./" | sudo tee -a /etc/apt/sources.list > /dev/null
% sudo apt-get install gdbfrontend