[TUTORIEL] AVR Dragon en console sous Windows

Attention zone pour développeurs avancés et nécessitant du matériel spécifique type professionnel.
Ne remplace pas une bonne et efficace utilisation de l'IDE Arduino

[TUTORIEL] AVR Dragon en console sous Windows

Message non lude Florian » Jeu 15 Juin 2017 15:59

Bonjour,

Aujourd'hui, nous allons utiliser une carte AVR Dragon sous Windows en ligne de commande.
Avr_Dragon.png
Avr_Dragon.png (117.74 Kio) Vu 176 fois

Pourquoi utiliser les lignes de commande alors qu'il existe déjà l'outil Atmel Studio sous Windows?
Les raisons peuvent être multiples.
Juste pour le fun, pour ne pas rester dans les sentiers battus, juste pour apprendre... La raison qui me semble la plus pertinente est que le logiciel Atmel Studio est une vraie usine à gaz. Inutile de s’ennuyer avec ce logiciel lourd juste pour graver un bootloader dans un ATmega. Attention, Atmel Studio est un logiciel très complet, notamment pour la programmation et le debbug.

Pour la réalisation de ce tutoriel, nous allons nous appuyer sur le tutoriel "Programmer un ATmega avec l'AVR Dragon sous Linux". Le principe de fonctionnement qui sera employé ici est quasiment identique à la procédure sous Linux.

=================================================================================================
DOCUMENTATIONS UTILES:


Tutoriels concernant le bootloader d'un ATmega328P:


Tutoriel concernant le bootloader de microcontrôleur:

================================================================================================
- MATÉRIEL:


Petites explications

    > Concernant le matériel;
    • Pour ceux d'entre vous qui se demandent à quoi sert l'oscillateur, il est nécessaire puisque nous allons paramétrer les fusibles de l'ATmega en mode oscillateur externe. Il s'agit donc de l'oscillateur externe.

    > Concernant le software;
    • winAvr contient les paquets avrdude et avr-gcc qui vont nous être utiles pour bootloader un ATmega.
    • MinGw va nous permettre d'utiliser les commandes d'une console UNIX. Ainsi on va pouvoir employer les mêmes commandes que dans le tutoriel "Programmer un ATmega avec l'AVR Dragon sous Linux".
    • libusb-win32 va permettre de considérer la carte AVR Dragon en port COM et non en port LPT.
================================================================================================
- BRANCHEMENTS:

avr_Dragon + ATmega.png
avr_Dragon + ATmega.png (19.32 Kio) Vu 176 fois

Il suffit de placer l'ATmega328P sur le support ZIF, détrompeur vers le bas.
De connecter chaque carré d'une même couleur ensemble à l'aide des câbles F/F et M/F.
Puis de relier l'AVR Dragon à l'ordinateur avec un câble USB.

Nous allons communiquer avec l'ATmega par liaison SPI avec l'aide de l'AVR Dragon.
En regardant le schéma ci-dessus, on peut observer trois blocs importants sur le Dragon. Le premier bloc (couleur orange et rouge) est le bloc d'alimentation. Le deuxième bloc (six couleurs) est le bloc de communication SPI. Le dernier bloc (le plus grand avec huit couleurs) correspond aux broches du support ZIF et donc aux broches de l'ATmega placé dedans.

    Branchements
    :

    • Câble Orange F/F: du bloc alim au bloc SPI, broche +VCC (en bas à gauche).
    • Câble Rouge F/F: du bloc alim au bloc ATmega, broche +VCC (broche 7 à droite, en partant du détrompeur).
    • Câble Vert F/F: du bloc SPI, broche MOSI, au bloc ATmega, broche MOSI (broche 12 à gauche en partant du détrompeur).
    • Câble Marron M/F: du bloc SPI, broche GND, à la breadboard, broche du milieu de l'oscillateur.
    • Câble Rose F/F: du bloc SPI, broche Reset, au bloc ATmega, broche Reset (broche 1 à droite en partant du détrompeur).
    • Câble Blanc F/F: du bloc SPI, broche SCK, au bloc ATmega, broche SCK (broche 10 à gauche en partant du détrompeur).
    • Câble Bleu foncé F/F: du bloc SPI, broche MISO, au bloc ATmega, broche MISO (broche 11 à gauche en partant du détrompeur).
    • Câble Violet M/F: du bloc ATmega, broche OSCILLATEUR1 (broche 9 à droite en partant du détrompeur), à la breadboard, broche droite de l'oscillateur.
    • Câble Bleu ciel M/F: du bloc ATmega, broche OSCILLATEUR2 (broche 10 à droite en partant du détrompeur), à la breadboard, broche gauche de l'oscillateur.
    • Câble Marron M/F: du bloc ATmega, broche GND (broche 8 à droite en partant du détrompeur), à la breadboard, broche du milieu de l'oscillateur.

================================================================================================
- MANIPULATION:


Une fois les softs téléchargés et installés et les branchements correctement effectués, la première étape consiste à configurer le port de la carte AVR Dragon comme étant un port COM plutôt qu'un port LPT. En effet par défaut l'AVR Dragon est reconnu par Windows comme un port parallèle, ceci va nous embêter pour la suite au moment d'indiquer le type de port utilisé pour programmer notre ATmega. Pour parvenir à ceci, nous allons lancer libusb-win32 filter installer.
Vous devriez avoir une page comme la suivante:
libusb1.PNG
libusb1.PNG (18.2 Kio) Vu 176 fois

Selectionnez "Install a device filter", puis cliquez sur "Next >". Vous arriverez sur une page similaire:
libusb2.PNG
libusb2.PNG (21.35 Kio) Vu 176 fois

Selectionnez la ligne AVR Dragon puis cliquez sur "Install". Nous en avons fini avec libusb-win32. Vous pouvez fermer la fenêtre.
________________________________________________________________________________________________________________
Pour vérifier que winAvr et MinGw ont été correctement installés, il suffit de lancer une invite de commande et de taper "avrdude". Si la console retourne une erreur, cela veut dire que l'un des deux paquets est mal installé, voire les deux. Si tout est correct vous devriez avoir en réponse le descriptif et fonctionnement des commandes d'avrdude.
La dernière vérification à effectuer est de voir si il y a bien une communication entre l'ATmega et l'AVR Dragon ou plus simplement entre l'ATmega et vous. Pour cela, il vous suffit de renseigner les paramètres suivant dans avrdude, -c "Programmateur utilisé", -p "microcontrôleur à programmer" et -P "port utilisé".

Voilà à quoi votre ligne de commande devrait ressembler:
configuration.PNG
configuration.PNG (5.9 Kio) Vu 176 fois

Ligne de commande:
Code: Tout sélectionner
avrdude -c dragon_isp -p m328p -P usb

On écrit dragon_isp puisque le programmateur employé est l'AVR Dragon en mode SPI. On souhaite bootloader un ATmega328p donc on écrit m328p. Enfin on tape usb pour la commande -P puisque la carte AVR Dragon est raccordée au PC par USB. Si vous n'indiquez pas la dernière commande, par défaut avrdude va la configurer en port parallèle et donc vous retourner une erreur puisqu'il ne pourra pas voir votre AVR Dragon.
Si vous souhaitez connaître la totalité des programmateurs utilisables avec avrdude, il vous suffit de taper la commande -c sans rentrer de paramètre. Remarque identique pour connaître les différents microcontrôleurs supportés. Ou vous pouvez jeter un oeil ici.

Voici la réponse console que vous devriez obtenir:
RéponseConfiguration.PNG
RéponseConfiguration.PNG (10.13 Kio) Vu 176 fois

Pour une explication de quelques unes des commandes d'avrdude, je vous renvoie encore une fois au tutoriel "Programmer un ATmega avec l'AVR Dragon" dans la partie "COMMANDES DE AVRDUDE".
________________________________________________________________________________________________________________
Nous pouvons maintenant passer à la partie programmation de l'ATmega328P.
Dans un premier temps, avant même de vouloir implanter le bootloader dans l'ATmega328P, il va falloir configurer les fusibles de ce dernier.
Pour y parvenir, nous allons utiliser la commande -U. Dans cette ligne de commande, il faut renseigner le fusible que l'on souhaite modifier:préciser si on veut lire ou écrire:la valeur du fusible en hexadécimal:et le format. Il y a trois fusibles à configurer dans l'ATmega328P qui sont LOW, HIGH et EXTENDED. Les valeurs de ces fusibles sont respectivement 0xFF, 0xDE et 0xFD.

Par exemple pour configurer le fusible LOW, vous devrez tapez ceci:
Config1Fuse.PNG
Config1Fuse.PNG (4.85 Kio) Vu 176 fois

Ligne de commande:
Code: Tout sélectionner
avrdude -c dragon_isp -p m328p -P usb -U lfuse:w:0xff:m

Vous obtiendrez une réponse console semblable à ceci:
RéponseConfig1Fuse.PNG
RéponseConfig1Fuse.PNG (11.55 Kio) Vu 176 fois

Le fusible LOW est maintenant correctement configuré. Il faut en faire de même avec les fusibles HIGH et EXTEND.
Ligne de commande pour HIGH:
Code: Tout sélectionner
avrdude -c dragon_isp -p m328p -P usb -U hfuse:w:0xde:m

Ligne de commande pour EXTENDED:
Code: Tout sélectionner
avrdude -c dragon_isp -p m328p -P usb -U efuse:w:0xfd:m

Pour celles et ceux qui ne souhaitent pas recommencer l'opération plusieurs fois, il est tout à fait possible de rentrer toutes les instructions sur une seule ligne de commande.

Comme ceci:
ConfigFuse.PNG
ConfigFuse.PNG (5.59 Kio) Vu 176 fois

Ligne de commande:
Code: Tout sélectionner
avrdude -c dragon_isp -p m328p -P usb -U lfuse:w:0xff:m -U hfuse:w:0xde:m -U efuse:w:0xfd:m

________________________________________________________________________________________________________________
Les fusibles étant maintenant configurés, il ne reste plus qu'à graver le bootloader dans l'ATmega.
Si vous souhaitez en apprendre un peu plus sur le rôle des fusibles d'un ATmega328P, voici un bon début. Il existe aussi un simulateur de fusibles pour AVR, en choisissant le bon modèle de microcontrôleur vous avez accès à tous les paramètres existants sur une même page.
Nous allons toujours utiliser la commande -U. Cette fois-ci dans les paramètres nous allons renseigner l'instruction "flash":écriture ou lecture:et le fichier bootloader (.hex).

Attention: petite précision vous devez vous situer dans l'arborescence ou se trouve le fichier bootloader pour réussir cette manipulation.

Voilà à quoi ressemble la commande que vous devrez taper dans votre console:
Bootloader.PNG
Bootloader.PNG (5.81 Kio) Vu 176 fois

Ligne de commande:
Code: Tout sélectionner
avrdude -c dragon_isp -p m328p -P usb -U flash:w:"NomDuFichierBootloader".hex

Lorsque vous rentrez cette commande dans la console, vous obtiendrez ceci comme réponse:
RéponseBootloader.PNG
RéponseBootloader.PNG (26.51 Kio) Vu 176 fois

Pour ceux qui se demandent où trouver le fichier bootloader d'un ATmega328p, voici le chemin d'accès depuis votre dossier Arduino.
/hardware/arduino/bootloaders/optiboot/optiboot_atmega328.hex
________________________________________________________________________________________________________________
La programmation est terminée. Le bootloader est gravé dans l'ATmega328p, il est donc prêt à être utilisé. Pour vérifier que tout fonctionne correctement, le test le plus simple consiste à placer le microcontrôleur sur une carte Arduino Uno et d'y téléverser le sketch Blink. Si la LED clignote, c'est gagné.
Florian
 
Messages: 75
Inscription: Mer 24 Juil 2013 17:36

Retourner vers Atmel Studio

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité