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 revision
Previous revision
avr:linux [2013/09/10 12:11] sdoltavr:linux [2013/09/18 12:53] (current) sdolt
Line 1: Line 1:
-====== Programmation de microprocesseur AVR sous GNU/Linux ======+====== Installation de la chaine de compilation AVR pour Linux ======
  
 ===== 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
 </file> </file>
Line 23: Line 23:
 Pour utiliser un programmateur via un port série sous Linux sans droit administrateur, il faut que l'utilisateur fasse parti des groupes tty et dialout. Pour utiliser un programmateur via un port série sous Linux sans droit administrateur, il faut que l'utilisateur fasse parti des groupes tty et dialout.
  
-<file.sh+<file.bash
- usermod -a -G tty Nom_Utilisateur  + sudo usermod -a -G tty Nom_Utilisateur  
- usermod -a -G dialout Nom_Utilisateur + sudo usermod -a -G dialout Nom_Utilisateur 
 </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>Il faut activé les symbôles de débugage (-g) et désactivé les optimisations du compilateur. </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. 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) : +
- +
-<file.sh> +
-avrdude -u -V -c jtag2dw  -P usb:070000004DAA  -p t85 -U hfuse:w:0xdf:+
-</file> +
-===== Liens utiles ===== +
- +
-^Description^Liens^ +
-|Calculateur de fusible|[[http://www.engbedded.com/fusecalc/]]|+
avr/linux.1378815104.txt.gz · Last modified: 2013/09/10 12:11 by sdolt