|
Micrologiciel
et amorce
Après avoir monté
et soudé la carte mère et compris
son fonctionnement on pourra éventuellement s'en servir
pour programmer un système comme un robot par exemple.
Cependant, il reste une étape avant d'y arriver. Il faut
d'abord programmer le microcontrôleur de programmation, le
ATMega8, pour qu'il puisse prendre en charge la gestion de
l'interface USB et arriver à programmer le ATMega16. Un autre
point important est la configuration des deux microcontrôleurs
eux-mêmes.
«Fusibles»
de configuration des microcontrôleurs AVR
Il existe quelques paramètres
intéressants sur les microcontrôleurs modernes qui les
rendent vraiment flexibles. Il peut être intéressant,
par exemple, de programmer un microcontrôleur et de s'assurer
qu'il ne puisse plus jamais être reprogrammé. On peut
aussi vouloir utiliser une horloge interne au microcontrôleur
pour simplifier l'électronique ou choisir d'y aller avec une
autre jugée plus appropriée et provenant de l'extérieur
de la puce (ce qui est notre cas sur la carte mère).
Ce genre de configuration est possible
avec les AVR. Atmel a donné le nom de «fusibles»
(fuses en anglais) à ce genre de paramètres matériels.
En réalité, il s'agit d'inscriptions dans une mémoire
EEPROM bien délimitée à l'intérieur des
microcontrôleurs. Le choix et la façon d'ajuster ces
paramètres est un travail qui a été fait pour
vous et que vous n'aurez pas à refaire. Pour en savoir plus,
le site
de Psychogenic sur la question est excellent. Celui de
atmicroprog.com
sur le même sujet est en français et est tout aussi bon.
Micrologiciel
Dans un système informatique, on
cherche toujours à distinguer les parties logicielles et
matérielles. Dans certains cas, cette différence
devient floue puisque la programmation touche de très près
aux éléments matériels. Avec le temps, les gens
en sont venus à qualifier cette couche logicielle primaire de
«micrologiciel». En anglais, la traduction est
«firmware» pour montrer que ce genre de programme est
souvent développé par des manufacturiers d'équipements
électroniques qui conservent bien leur secrets de
programmation et de configuration dans certaines mémoires
mortes des systèmes qu'elles fabriquent.
On peut voir le programme qui tournera
sur le ATMega8 comme étant un «firmware» puisqu'il
a pour fonction de communiquer avec le PC et de programmer le
ATMega16. Ce code s'occupe donc de questions se situant très
près de l'électronique de la carte mère et
considérées comme étant de bas niveau. Il a
surtout comme but de faciliter l'utilisation de la carte. Par
ailleurs, l'utilisateur de la carte n'a aucunement besoin de
comprendre le micrologiciel. La programmation du ATMega16 se
réalisera automatiquement pour lui et toutes les ressources de
la carte lui seront accessibles.
Le micrologiciel a été
développé en grande partie par la société
Objective
Devlopment et Thomas
Fischl et amélioré par Matthew Khouzam, ancien
étudiant à la maîtrise à l'École
Polytechnique de Montréal en génie informatique. Il
faut de bonnes connaissances du protocole USB et des techniques
électroniques d'écriture de code à l'intérieur
des AVR pour arriver à comprendre le code source du
micrologiciel. Son étude dépasse largement le cadre du
cours INF1995.
Chargement du
micrologiciel
On l'a dit, le rôle du ATMega8
est de programmer le ATMega16. Mais alors comment programmer le
ATMega8 dans un premier temps? Il faut amorcer le système
quelque part. Ici, il faudra programmer le ATMega8 par ISP à
l'aide d'une autre carte mère... et donc d'un autre ATMega8!
Par contre, tout autre programmeur ISP pourrait également
faire l'affaire.

Chargement du
micrologiciel sur une carte mère à partir d'une autre
La procédure de chargement du
micrologiciel devra être effectuée par un chargé
de laboratoire au poste du professeur où
une carte mère de programmation est disponible. De plus, la
plaque au poste du professeur est organisée pour faire
rapidement et efficacement ces opérations. Le chargé
de laboratoire procède également à une
inspection visuelle de la carte à programmer avant toute chose
pour éviter des situations inutiles de court-circuit.

Plaque de test et de
programmation au laboratoire
La procédure est la suivante:
S'assurer que la carte mère
à programmer n'a pas de ATMega16 dans son support de puce car
sa présence nuirait à la programmation du ATMega8.
La carte mère à
programmer doit avoir un cavalier sur les positions 2 et 3 (vers la
droite) de PrgSEL pour indiquer que le ATMega8 est la première
puce à programmer.
Avoir aussi un cavalier sur VtgEN
sur la carte mère à programmer car elle doit recevoir
son alimentation de la carte de programmation.
La carte mère de
programmation ne doit avoir aucun cavalier sur PrgSEL (ce qui
signifie qu'elle est, en fait, le programmeur de puce). Sur la
plaque du laboratoire, c'est toujours le cas car cette carte, située
à droite, ne fait que servir de programmeur de puce. Il faut
aussi placer un cavalier sur VtgEN pour fournir une tension à
la carte à programmer.
Relier les deux cartes par un
câble plat gris de 10 fils. Les ports ISP-10 des deux cartes
ainsi reliés permettent la programmation d'une carte mère
par l'autre.
Placer 9V avec une limitation de 1
Ampère sur la source de tension du laboratoire pour alimenter
la carte de programmation. La carte à programmer devrait
aussi être en activité puisqu'elle tire son
alimentation de celle de programmation.
La carte mère de
programmation doit être reliée au PC par câble
USB. Une carte mère de programmation bien reconnue par Linux
vous est indiquée par les deux dernières lignes
affichées par la commande 'dmesg' et/ou 'lsusb'.
Exécuter les commandes
suivantes à partir du PC pour configurer et charger le
micrologiciel sur le ATMega8:
Si tout se passe bien, le ATMega8
de la carte cible est maintenant programmé et ses fusibles
ont été correctement ajustés.
Sur la carte cible, déplacer
le cavalier des positions 2 et 3 de PrgSEL aux positions 1 et 2.
Placer le ATMega16 sur le support
de puce de la carte mère à programmer.
Exécuter la commande
suivante à partir du PC pour configurer les fusibles du
ATMega16 correctement. Aucun programme ne sera installé sur
ce microcontrôleur mais il sera dans une configuration
appropriée.
La procédure est terminée.
On peut enlever le câble plat de 10 fils qui relie les deux
cartes. La carte mère nouvellement programmée peut
même devenir elle-même un programmeur de puces au
besoin. Il faut laisser le cavalier aux positions 1 et 2 de PrgSEL
en tout temps sur la carte pour programmer la carte par port USB
pour le reste de la session.
Il est à noter que cette
configuration ne sera plus à refaire, à moins que l'un
ou l'autre des microcontrôleurs de la carte doive être
remplacé.
Programmation par USB
Une fois les microcontrôleurs
configurés et le micrologiciel téléchargé,
la programmation se fera aisément et à un niveau plus
élevé. L'environnement logiciel sur le PC prendra de
l'importance et le téléchargement par port USB sera
laissé au programme AVRDude. Ce dernier sera simplement
appelé dans un Makefile déjà bien ajusté
pour le programmeur. Cette programmation
à plus haut niveau est décrite dans une section
séparée.
|