[TUTORIEL] Programmer un ATmega avec l'AVRDragon sous linux

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] Programmer un ATmega avec l'AVRDragon sous linux

Message non lude Florian » Mar 17 Mai 2016 17:11

Bonjour,

Aujourd'hui, nous allons voir comment programmer un ATmega328P avec un AVR Dragon sous linux.
Avr_Dragon.png
Avr_Dragon.png (117.74 Kio) Vu 947 fois

Pour réaliser ceci, nous allons fortement nous appuyer sur l'excellent tutoriel "Programmer un ATmega328P avec l'AVR Dragon [1]" réalisé par Lætitia.


- MATÉRIEL:

- SCHÉMA DU MONTAGE:
avr_Dragon + ATmega.png
avr_Dragon + ATmega.png (19.32 Kio) Vu 947 fois

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

- COMMANDES DE AVRDUDE:
Le logiciel Atmel Studio n'existant pas sur Linux, nous allons programmer notre ATmega à travers le terminal en utilisant "avrdude".
Première étape, installer les paquets "avrdude"
Pour cela, ouvrir un terminal et tapez:
Install.png
Install.png (6.41 Kio) Vu 947 fois

Il y a différentes commandes disponibles.
1.1.png
1.1.png (63.84 Kio) Vu 947 fois

1.2.png
1.2.png (80.85 Kio) Vu 947 fois

Nous n'aurons pas à toutes les utiliser pour programmer notre ATmega328P, mais nous allons en expliquer un certain nombre pouvant être utile.

Commandes avrdude:
______________________________________________________________________________________________________________
Cette commande permet de dire quel micro-contrôleur on souhaite configurer. Cette commande est indispensable.
-p.png
-p.png (3.89 Kio) Vu 947 fois

______________________________________________________________________________________________________________
Cette commande permet de régler la vitesse du port série.
-b.png
-b.png (4.11 Kio) Vu 947 fois

______________________________________________________________________________________________________________
Cette commande sert à paramétrer un fichier de configuration différent du fichier par défaut.
-C.png
-C.png (3.83 Kio) Vu 947 fois

______________________________________________________________________________________________________________
Cette commande permet de dire quel programmateur on utilise pour programmer notre micro-contrôleur. Cette commande est indispensable.
-c(1).png
-c(1).png (3.63 Kio) Vu 947 fois

______________________________________________________________________________________________________________
Cette commande permet de choisir le port série à utiliser pour la configuration d'un bootloader série.
-P(1).png
-P(1).png (3.47 Kio) Vu 947 fois

______________________________________________________________________________________________________________
Cette commande efface la mémoire du micro-contrôleur.
-e.png
-e.png (2.73 Kio) Vu 947 fois

______________________________________________________________________________________________________________
C'est la commande principale. Elle permet d'effectuer une action (écriture/lecture/vérification) sur le micro-contrôleur.
La variable "memtype" peut prendre comme termes flash, eeprom, efuse, hfuse et lfuse.
Les termes "r|w|v" correspondent respectivement aux actions Read|Write|Verify.
La variable "filename" correspond au fichier ".hex" à utiliser pour la programmation du micro-contrôleur.
-U.png
-U.png (12.17 Kio) Vu 947 fois

______________________________________________________________________________________________________________
Cette commande vous place en lecture seule. Elle vous permet de voir les paramètres d'une carte ou d'un micro-contrôleur sans prendre le risque de modifier quoi que ce soit.
-n.png
-n.png (4.5 Kio) Vu 947 fois

______________________________________________________________________________________________________________
Cette commande annule la vérification après la programmation.
-V.png
-V.png (2.65 Kio) Vu 947 fois

______________________________________________________________________________________________________________
Cette commande affiche les erreurs lorsqu'une commande ne fonctionne pas et que avrdude n'affiche pas d'erreur par défaut.
-v(1).png
-v(1).png (4.07 Kio) Vu 947 fois


- PROGRAMMATION DE L'ATMEGA:
Une fois avrdude installé, il faut déjà savoir quel programmateur on utilise et savoir si il est supporté par avrdude. Pour cela, il faut effectuer la commande:
Code: Tout sélectionner
avrdude -c ?

La liste suivante devrait apparaitre.
2.1.png
2.1.png (63.13 Kio) Vu 947 fois

2.2.png
2.2.png (80.97 Kio) Vu 947 fois

2.3.png
2.3.png (48.23 Kio) Vu 947 fois

2.4.png
2.4.png (64 Kio) Vu 947 fois

2.5.png
2.5.png (94.87 Kio) Vu 947 fois

Notre programmateur est l'AVR Dragon d'Atmel que nous utilisons en mode ISP. La variable à renseigner après "avrdude -c" est donc "dragon_isp".
Maintenant, il faut préciser quel micro-contrôleur nous souhaitons programmer avec la bonne syntaxe. Pour cela, même procédé qu'au-dessus.
On effectue la commande suivante:
Code: Tout sélectionner
avrdude -p ?

La liste suivante devrait apparaitre.
3.1.png
3.1.png (75.11 Kio) Vu 947 fois

3.2.png
3.2.png (52.4 Kio) Vu 947 fois

3.3.png
3.3.png (77.23 Kio) Vu 947 fois

3.4.png
3.4.png (58.63 Kio) Vu 947 fois

Nous voulons programmer un ATmega328P, la variable à renseigner après "avrdude -p" est donc "m328p".
Pour savoir si le programmateur arrive à communiquer correctement avec le micro-contrôleur et voir la valeur des ses fusibles, il faut taper les deux dernières commandes.
avr_DeviceSignature.png
avr_DeviceSignature.png (45.66 Kio) Vu 947 fois

Si le programmateur arrive à communiquer le "Device signature" devrait donner l'ID suivant: 0x1e950f et la valeur des 3 fusibles en hexadécimale.

Avant d'installer le bootloader dans l'ATmega, il faut configurer les différents fusibles du micro-contrôleur. Il y a 3 registres EXTENDED, HIGH et LOW. Ils sont configurés en hexadécimales.

Les valeurs des registres de l'ATmega328P sont:
    0xFD pour EXTENDED
    0xDE pour HIGH
    0xFF pour LOW
La commande à écrire pour les configurer est la suivante:
avr_cmdFuse.png
avr_cmdFuse.png (10.39 Kio) Vu 947 fois

Comme vous pouvez le voir on peut réaliser la configuration des 3 registres en une fois. On doit obligatoirement préciser le programmateur utilisé et le micro-contrôleur visé avant.
"efuse" correspond au fusible EXTENDED. Le "w" à l'action souhaitée, écriture. Et "0xfd" à sa valeur en hexadécimal. On réitère cette commande pour les 3 fusibles.
Pour vérifier que la valeur des fusibles a bien été modifiée on peut ré-effectuer la commande:
Code: Tout sélectionner
avrdude -c dragon_isp -p m328p

avr_fuseOK.png
avr_fuseOK.png (44.79 Kio) Vu 947 fois


Maintenant que les fusibles sont configurés, on peut flasher le bootloader dans notre ATmega.
Pour cela, on utilise la même commande que pour configurer les fusibles.
Code: Tout sélectionner
avrdude -c dragon_isp -p m328p -U flash:w:NomDuFichier.hex

Le fichier pour le bootloader se trouve dans votre fichier Arduino puis hardware/arduino/bootloaders/optiboot/optiboot_atmega328.hex.
avr_cmdFlash+flash.png
avr_cmdFlash+flash.png (173.69 Kio) Vu 947 fois


Pour vérifier que la configuration s'est bien passée, vous pouvez mettre votre ATmega dans un Uno vide et y charger un sketch (ex: Blink) voir si tout fonctionne correctement.

Voilà pour ce tutoriel.
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é

cron