avr:linux
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
avr:linux [2013/09/10 12:31] – [Désactivation de DebugWire] sdolt | avr:linux [2013/09/14 14:15] – sdolt | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
===== Installation ===== | ===== Installation ===== | ||
Line 15: | Line 15: | ||
Installation sous Debian et dérivé : | Installation sous Debian et dérivé : | ||
- | <file.sh> | + | <file.bash> |
sudo apt-get install gcc-avr gdb-avr avr-libc avrdude avrdude-doc binutils-avr avarice | sudo apt-get install gcc-avr gdb-avr avr-libc avrdude avrdude-doc binutils-avr avarice | ||
</ | </ | ||
Line 23: | Line 23: | ||
Pour utiliser un programmateur via un port série sous Linux sans droit administrateur, | Pour utiliser un programmateur via un port série sous Linux sans droit administrateur, | ||
- | <file.sh> | + | <file.bash> |
| | ||
| | ||
</ | </ | ||
- | ===== Premier programme | + | ====== Utilisation ====== |
- | Squelette de base pour les programmes AVR à créer dans un fichier main.c | + | Vous pouvez |
- | < | + | |
- | # | + | |
- | # | + | |
- | #define F_CPU 1000000UL // | + | |
- | # | + | |
- | + | ||
- | int main(void) | + | |
- | { | + | |
- | return(0); | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | ===== Câblage pour STK500 ===== | + | |
- | + | ||
- | [[http:// | + | |
- | + | ||
- | ===== 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 | + | |
- | + | ||
- | Bien sur, il faut adapter | + | |
- | ^uP^GCC^AVRDUDE^ | + | |
- | |ATtiny85|attiny85|t85| | + | |
- | |Autre|voir : [[http:// | + | |
- | + | ||
- | ^Programmateur^AVRDUDE^ | + | |
- | |Atmel STK500|stk500| | + | |
- | |Autre|Voir [[http:// | + | |
- | + | ||
- | + | ||
- | < | + | |
- | avr-gcc -mmcu=attiny85 -o main.elf main.c | + | |
- | objcopy -O ihex -R .eeprom main.elf main.hex | + | |
- | avrdude -p t85 -c stk500 -P / | + | |
- | + | ||
- | + | ||
- | </ | + | |
- | + | ||
- | ===== 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' | + | |
- | des fusibles de configurations à l'aide du STK500 | + | |
- | <note important> | + | |
- | + | ||
- | Exemple pour l' | + | |
- | < | + | |
- | avrdude -p t85 -c stk500 -P / | + | |
- | </ | + | |
- | + | ||
- | ==== 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> | + | |
- | + | ||
- | < | + | |
- | 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: | + | |
- | </ | + | |
- | + | ||
- | Si l' | + | |
- | + | ||
- | ==== Déboguage ==== | + | |
- | + | ||
- | Pour débuguer, il faut tout d' | + | |
- | < | + | |
- | avarice -2 -w -P attiny85 --jtag usb :4242 | + | |
- | </ | + | |
- | Puis, dans un autre terminal, on lance avr-gdb: | + | |
- | < | + | |
- | avr-gdb main.elf | + | |
- | </ | + | |
- | + | ||
- | Dans l' | + | |
- | < | + | |
- | target remote :4242 | + | |
- | </ | + | |
- | + | ||
- | ==== Commande GDB ==== | + | |
- | + | ||
- | ^Commande^Effet^ | + | |
- | |continue|Continue jusqu' | + | |
- | |break main.c: | + | |
- | |break initADC|Met un point d' | + | |
- | |print variable|Affiche la variable si le programme est à l' | + | |
- | |set variable hello = 12|Met la variable hello à la valeur 12| | + | |
- | + | ||
- | Tutoriel : [[http:// | + | |
- | Info : | + | |
- | + | ||
- | ===== 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| | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | < | + | |
- | avrdude -u -V -c jtag2dw | + | |
- | </ | + | |
- | + | ||
- | Source : [[http:// | + | |
- | ===== Liens utiles ===== | + | |
- | + | ||
- | ^Description^Liens^ | + | |
- | |Calculateur de fusible|[[http:// | + |
avr/linux.txt · Last modified: 2013/09/18 12:53 by sdolt