Subscribe RSS

Spydemon's personal blog

  • Clef GPG

Compilation et upload d’un programme sur l’AVR Atmel M1280

27 mars 2012 Posté par Spydemon sous Embarqué
Pas de commentaire
Salut tout le monde ! Aujourd’hui, on parlera un peu de programmation embarquée 🙂 Je vais vous présenter l’AVR M1280, c’est un microcontrôleur que j’utilise en cours. Ce n’est pas un tuto qui explique comment ca fonctionne, mais plus un récapitulatif qui liste où se trouve quoi. Parce qu’avec les milliers de variables et de bits différents qu’il existe là dessus, c’est un gros bordel. Du coup, ne comptez pas comprendre comment tout ça fonctionne à l’aide de mon article, désolé 🙁

Descreamer :

Ça va faire deux mois que je fais ce genre de choses. Mon expérience dans le domaine et donc nulle et ma compréhension du sujet loin d’être parfaite. Ainsi, il important de ne pas considérer le contenu suivant comme sûr !

Si vous décelez des erreurs, ou avez des précisions supplémentaires à ajouter, je vous invite à m’en faire part. Merci 😉

Deux façons différentes pour envoyer des programmes sur la board existent, et du coup pour changer le driver de l’AVR. Enfin, je dis « deux », mais il y en a peut-être plus… J’en connais deux en tout cas, et je vais vous en parler. 🙂 La première est de passer par le port prévu pour (appelé “on board programmer port”) et la seconde via le port de « configuration » ( port JTAG). J’ai indiqué où ils se situent sur la platine sur la photo ci-dessous.

Utilisation du “On board programmer” port.

C’est la façon basique et commune d’installation des drivers. Celle à privilegier, normalement, dans tous les cas qui ne sont pas en rapport avec la configuration même de la platine. Comment compiler un programme sous Linux à destination du microcontrôleur et l’envoyé sur celui-ci ? On procède en trois étapes : la première consiste à cross-compiler notre fichier .c pour être compatible avec le processeur AVR (le binaire crée ne sera donc pas exécutable sur notre ordinateur). Pour cela on utilise avr-gcc. On n’oubliera pas de bien précisé le type de microcontrôleur que nous ciblons avec l’option -mmcu. C’est principalement pour avoir les bonnes déclarations des variables. Dans un second temps, avr-objcopy convertira le programme obtenu en Intel HEX. À quoi ça sert ? Apparemment il faut que ça soit en ihex pour effectuer le fransfert… Ouais j’avoue, c’est bizarre, mais sans ça, ça ne marche pas. On fera avec. Et au final, maintenant qu’on a notre fichier bien comme il faut, il ne reste plus qu’à l’envoyer sur notre cher microcontrôleur ! Pour cela, on utilisera le programme avrdude. Dans mon cas, je passe par un port USB, le mode de communication est donc usbasp. En résumé, on doit faire ça :
avr-gcc programme.c -o programme.hex -mmcu=atmega1280
avr-objcopy -0 ihex programme.hex programme.ihex
avrdude -c usbasp -p m1280 -U flash:w:programme.ihex:i

Utilisation de “l’AVR Dragon” via le port JTAG.

C’est un peu la porte des coulisses de la platine en fait. Celle qu’on utilise, par exemple pour travailler sur les autres puces disponibles sur la platine que notre AVR M1280. Par exemple, celle qui est permet a l’ordinateur de reconnaitre la board et d’envoyer des programmes dessus via celle-ci (la façon vue précédemment) 😀 Oui, j’ai en fait réussi à « casser » les programmes de « gestion interne » de la platine… Je ne peux plus passer par la première façon temps que je n’ai pas réinstallé les drivers du composant. Ne me demandez pas comment j’ai fait, je n’en ai aucune idée. Donc, comment uploader par Dragon et le port JTAG ? La compilation du fichier reste la même. Il suffit en fait de modifier l’option -c de avrdude pour faire indiquer que nous utilisons l’interface de Dragon via le port JTAG à la place du port USB simple. Ainsi, le mode de transfert usbasp est à remplacer par dragon_jtag. La deuxième subtilité se trouve dans l’option -P qu’il faut rajouter. Elle permet en fait de savoir vers où l’ordinateur doit envoyer le programme. En effet, avec -c on indique que Dragon est connecté à la board via le port JTAG, mais on indique pas comment Dragon communique avec l’ordinateur vu que c’est un module à part, extérieur à la platine. 😀 En résumé, on obtien ceci :
avrdude -c dragon_jtag -p m1280 -P usb -U flash:w:soft.hex:i
Et si, par le plus grand des hasards, vous avez une erreur du genre :
avrdude: ser_open(): can’t set attributes for device « /dev/parport0 »: Inappropriate ioctl for device avrdude: ser_send(): write error: Bad file descriptor
C’est que vous avez oublié cette fameuse option -P, et que du coup, avrdude utilise le port par défaut, à savoir le port parallèle à la place des ports USB !
Tags: Atmel, avr-gcc, avr-objcopy, avrdude, JTAG, M1280

Laisser un commentaire Annuler la réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

*

Code Anti-spam
Rafraîchir

*

Click to cancel reply
« Kony 2012
À l’orée d’une nouvelle ère. »
Catégories
  • DIY (4)
  • Electronique (3)
  • Expatriations (15)
    • 1. Squat Grenoble 2010 (8)
    • 2. Camping Haspelschiedt 2010 (5)
  • Informations (1)
  • LTDI (4)
  • Pensés abstraites (8)
  • Périples (7)
  • Programmation (22)
    • Embarqué (2)
    • Maintenance (1)
    • Sysadmin (7)
    • Théorie (6)
  • VIA (3)
Étiquettes
amplificateur ampoule ancien AOP Atmel bac backup blog C++ carton convertion crous Danemark DBus denmark dut début développeur facebook France GIO GTK Horsens infixe lampe led Linux lucie M1280 opérationnel orientation photo podcast postbac postfixe profil présentation Raspberry Pi réseaux sondage sécurité tension VIA voyage économie
Archives
  • août 2018 (1)
  • juin 2018 (1)
  • novembre 2017 (1)
  • juillet 2017 (1)
  • juin 2017 (1)
  • avril 2017 (1)
  • janvier 2017 (1)
  • juillet 2016 (1)
  • juin 2016 (1)
  • avril 2016 (1)
  • novembre 2015 (2)
  • mai 2015 (2)
  • avril 2015 (1)
  • février 2015 (1)
  • décembre 2014 (1)
  • décembre 2013 (1)
  • novembre 2013 (2)
  • septembre 2013 (2)
  • juin 2013 (1)
  • mai 2013 (1)
  • avril 2013 (1)
  • janvier 2013 (1)
  • novembre 2012 (1)
  • août 2012 (1)
  • juillet 2012 (2)
  • mai 2012 (2)
  • avril 2012 (2)
  • mars 2012 (1)
  • février 2012 (1)
  • janvier 2012 (2)
  • décembre 2011 (4)
  • novembre 2011 (1)
  • octobre 2011 (1)
  • juin 2011 (1)
  • mai 2011 (1)
  • décembre 2010 (1)
  • août 2010 (2)
  • juillet 2010 (4)
  • mai 2010 (9)
  • mars 2010 (3)
Blogs d'amis
  • Choix Libres
  • Johnn'y Space
  • Shades of blue
  • Soulou's blog
Articles récents
  • L’histoire de la création de Linux
  • Comment juger de la qualité de la connectivité d’un site Web ?
  • Une introduction aux graphiques avec R
  • Réalisation d’une (grosse) armoire en carton
  • Comprendre AppArmor
Commentaires récents
  • Raclet dans Bookeen et leur foutage de gueule
  • Gregory dans Bookeen et leur foutage de gueule
  • chataigne dans Bookeen et leur foutage de gueule
  • Alain Riou dans Bookeen et leur foutage de gueule
  • Rodrigues dans Bookeen et leur foutage de gueule
Spydemon's personal blog powered by WordPress and The Clear Line Theme

Compression Plugin created by Jake Ruston's Wordpress Plugins - Powered by Protection Racket and Kanye West.