User Tools

Site Tools


avr:linux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
avr:linux [2013/09/10 12:50] sdoltavr:linux [2013/09/10 13:09] sdolt
Line 28: Line 28:
 </file> </file>
  
-===== Premier programme =====+====== Utilisation ======
  
-Squelette de base pour les programmes AVR à créer dans un fichier main.c +Vous pouvez ensuite suivre les instructions  [[avr:usage|avr:usage]]
-<file.c> +
-#include<stdint.h> // Ajout des types int#_t et uint#_t, # vaut 8 , 16 ou 32 +
-#include<avr/io.h> // Utilisation des entrées sorties +
-#define F_CPU 1000000UL // 1MHZ, réglage de la fréquence du CPU +
-#include<util/delay.h> // Gestion des temporisations +
- +
-int main(void) +
-+
-    return(0); +
-+
-</file> +
- +
- +
-===== Câblage pour STK500 ===== +
- +
-[[http://blog.flipwork.nl/?x=entry:entry081008-113244;comments:1]] +
- +
-===== Compilation et programmation ===== +
- +
-Les commandes ci-dessous compile le fichier main.c en fichier main.elf, puis convertisse le fichier elf en fichier hex qui est ensuite programmé dans notre micro-processeur.  +
- +
-Bien sur, il faut adapter les options au type de microprocesseur et au programmateur utilisé +
-^uP^GCC^AVRDUDE^ +
-|ATtiny85|attiny85|t85| +
-|Autre|voir : [[http://www.nongnu.org/avr-libc/user-manual/using_tools.html|le manuel]]|Voir [[http://www.nongnu.org/avrdude/user-manual/avrdude_4.html|le manuel]]| +
- +
-^Programmateur^AVRDUDE^ +
-|Atmel STK500|stk500| +
-|Autre|Voir [[http://www.nongnu.org/avrdude/user-manual/avrdude_4.html|le manuel]]| +
- +
- +
-<file.sh> +
-avr-gcc -mmcu=attiny85 -o main.elf main.c +
-objcopy -O ihex -R .eeprom main.elf main.hex +
-avrdude -p t85 -c stk500 -P /dev/ttyUSB0 -U flash:w:main.hex +
- +
- +
-</file> +
- +
-===== Déboguage ===== +
- +
-Debug-wire est une norme de communication basée sur le one-wire permettant une programmation basique ainsi que le déboguage de la série ATtiny. +
- +
-==== Initialisation ==== +
- +
-Pour l'enclencher, il faut modifier la valeur +
-des fusibles de configurations à l'aide du STK500 +
-<note important>Le STK500 ne gère pas le mode debug-wire, il faudra ensuite utiliser le JTAGICEmkII</note> +
- +
-Exemple pour l'Attiny85, avec utilisation de l'horloge interne 8MHz sans divisions et debug-wire activé. +
-<file.sh> +
-avrdude -p t85 -c stk500 -P /dev/ttyUSB0 -U lfuse:w:0xfe:m -U hfuse:w:0x9f:m -U efuse:w:0xff:m  +
-</file> +
- +
-==== Câblage du JTAGICE mkII pour debug-wire ==== +
- +
-Il faut brancher trois câble : +
-^STK500 PORTB^JTAGICE^ +
-|PB5|6-nSRST| +
-|VTG|4-VTREF| +
-|GND|2-GND| +
- +
-==== Compilation et programmation ==== +
- +
-<note important>Pour permettre l'utilisation de GDB, il faut activer les symboles de débugage (-g) et désactivé les optimisations du compilateur. </note> +
- +
-<note warning>La désactivation des optimisations empêche le fonctionnement normal des fonctions de <util/delay.h> comme _delay_us() </note> +
- +
-<file.sh> +
-avr-gcc -g -mmcu=attiny85 -o main.elf main.c +
-objcopy -O ihex -R .eeprom main.elf main.hex +
-avrdude -c jtag2dw -P usb -p t85 -U flash:w:main.hex +
-</file> +
- +
-Si l'upload ne fonctionne pas, un redémarrage de l'Attiny peut aider. +
- +
-==== Déboguage ==== +
- +
-Pour débuguer, il faut tout d'abord lance avarice : +
-<file.sh> +
-avarice -2 -w -P attiny85 --jtag usb :4242 +
-</file> +
-Puis, dans un autre terminal, on lance avr-gdb: +
-<file.sh> +
-avr-gdb main.elf +
-</file> +
- +
-Dans l'invite de commande gdb, on peut connecter gdb à avarice avec la commande: +
-<file.sh> +
-target remote :4242 +
-</file> +
- +
-==== Commande GDB ==== +
- +
-^Commande^Effet^ +
-|continue|Continue jusqu'au prochaint point d'arrêt| +
-|break main.c:26|Met un point d'arrêt à la ligne 26 de main.c| +
-|break initADC|Met un point d'arrêt sur la fonction initADC| +
-|print variable|Affiche la variable si le programme est à l'arrêt| +
-|set variable hello = 12|Met la variable hello à la valeur 12| +
- +
-Tutoriel : [[http://beej.us/guide/bggdb/]] +
-Info : [[http://avr.2057.n7.nabble.com/avr-gdb-use-td6037.html]] +
- +
-===== Désactivation de DebugWire ===== +
- +
-Avec le mode debugWire, on ne peux pas lire les fusibles. Pour désactiver le mode debugWire, il faut connecter le programmateur JTAGICE mkII en mode ISP, soit : +
- +
-^JTAG 10pin^ISP 6pin^STK500^ +
-|1-TCK|3|PB2 (SCK)| +
-|2-GND|6|GND| +
-|3-TDO|1|PB1 (MISO)| +
-|4-VTref|2|Vcc| +
-|5-TMS|x|x| +
-|6-nSRST|5|PB5 (RST)| +
-|7-Vsupply|x|x| +
-|8-nTRST|x|x| +
-|9-TDI|4|PB0 (MOSI )| +
-|10-GND|x| x| +
- +
- +
-Mainteant, si on essaie de programmer de désactiver debugWire : +
- +
-<file.sh> +
-avrdude -c jtag2isp  -P usb:070000004DAA  -p t85 -U hfuse:w:0xdf:+
-</file> +
- +
-On obtient le message suivant : +
-<file.sh> +
-avrdude: jtagmkII_setparm(): bad response to set parameter command: RSP_FAILED +
-avrdude: jtagmkII_getsync(): ISP activation failed, trying debugWire +
-avrdude: Target prepared for ISP, signed off. +
-avrdude: Please restart avrdude without power-cycling the target. +
- +
-avrdude done.  Thank you. +
-</file> +
- +
-<note important>AVRDUDE a désactiver provisoirement debugWire, il ne faut pas redémarrer la processeur</note> +
-On peut donc relancer la commande pour programmer le fusible hfuse. +
- +
-<file.sh> +
-avrdude -c jtag2isp  -P usb:070000004DAA  -p t85 -U hfuse:w:0xdf:+
-</file> +
- +
-Source : [[http://www.nongnu.org/avrdude/user-manual/avrdude_20.html]] +
-===== Liens utiles ===== +
- +
-^Description^Liens^ +
-|Calculateur de fusible|[[http://www.engbedded.com/fusecalc/]]|+
avr/linux.txt · Last modified: 2013/09/18 12:53 by sdolt