avr:linux
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| avr:linux [2013/09/10 12:11] – sdolt | avr:linux [2013/09/18 12:53] (current) – 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> |
| - | | + | sudo usermod -a -G tty Nom_Utilisateur |
| - | | + | sudo usermod -a -G dialout Nom_Utilisateur |
| </ | </ | ||
| - | ===== 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. Seulement écrire la valeur de hfuse. Pour cela | + | |
| - | il faut désactiver la vérification et le mode sécurisé de avrdude avec les options -u -V | + | |
| - | + | ||
| - | Exemple : Pour un attiny85, pour passer de debugWire à SPI avec une horloge interne à 16MHz (PLL) : | + | |
| - | + | ||
| - | < | + | |
| - | avrdude -u -V -c jtag2dw | + | |
| - | </ | + | |
| - | ===== Liens utiles ===== | + | |
| - | + | ||
| - | ^Description^Liens^ | + | |
| - | |Calculateur de fusible|[[http:// | + | |
avr/linux.1378815104.txt.gz · Last modified: 2013/09/10 12:11 by sdolt