Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Programmation > Apprendre à coder > Programmation Arduino > Flasher le bootloader d’une carte Arduino

Flasher le bootloader d’une carte Arduino

mercredi 8 janvier 2014, par Gilles O.

J’ai tout cassé ma belle carte Arduino Leonardo (un clone en fait), elle ne fonctionne plus. Elle n’est plus reconnue sur le port USB, c’est la cata. C’était ma première en plus, elle avait une certaine valeur sentimentale...

J’en ai parlé à Julien qui m’a dit qu’il restait une ultime chance : tenter de reprogrammer le logiciel de démarrage (bootloader) dans la puce de la carte, on ne sait jamais... Et là il plonge la main dans un carton et me sort un programmateur USB pour AVR de derrière les fagots.

Après quelques petits tâtonnements, nous avons pu faire revenir à la vie le petit Leonardo. Voici la procédure pour y arriver si vous souhaitez faire pareil, également avec une autre version d’Arduino. Nous avons utilisé une installation sous Windows. Pour une configuration Linux, il faudra peut-être adapter un peu.

  • Repérez d’abord le répertoire d’installation de l’IDE Arduino, nous avions pour exemple "C :\Program Files\Arduino". On le notera [Arduino] pour plus de facilité.
  • Branchez le programmeur USB sur un port et connectez-le au port ISP (2 x 3 points mâles sur le bord le moins long). Attention au sens du connecteur : il n’y a pas de détrompeur. Pour s’en sortir, repérez le fil rouge et branchez-le comme sur la photo. Repérez le port de communication sur lequel le programmeur est connecté, nous c’était COM30. On peut le faire via le gestionnaire de périphériques ou bien en regardant le menu "Port" de l’IDE Arduino.

  • Copiez le fichier [Arduino]\hardware\tools\avr\etc\avrdude.conf dans C :\Program Files\Arduino\hardware\tools\avr\bin
  • Récupérez le .hex à flasher dans [Arduino]/hardware/arduino/bootloaders, le nôtre s’appelle Leonardo-prod-firmware-2012-12-10.hex dans le sous-répertoire catilina et nous l’avons renommé leonardo.hex
  • Ouvrez une fenêtre de commande sur le répertoire puis tapez les commandes :
> cd C:\Program Files\Arduino\hardware\tools\avr\bin"
> C:
  • Lancez la commande d’écriture adaptée au programmateur stk500 choisi (mySmartUSB) :
> avrdude -p m32u4 -P COM30 -c stk500 -U flash:w:leonardo.hex"

Sur une Arduino classique, il faudra changer le nom de la puce : m32u4 est sur les cartes Léonardo, mais c’est un m328 ou un m168 sur les autres cartes (liste des puces supportées à rechercher dans le fichier de configuration avrdude).

Le programme cause un peu et en 30 secondes, l’affaire est conclue. Et moi je suis content, mon Leonardo est de nouveau opérationnel !


Vos commentaires

  • Le 9 octobre 2015 à 16:31, par bech En réponse à : Flasher le bootloader d’une carte Arduino

    Cette page web m’a servi de référence pour flasher des cartes Arduino uno avec le même programmateur.
    Deux omissions pour un débutant complet :
    - installer les drivers, notamment celui du programmateur qu’on trouve ici :
    http://www.visualmicro.com/post/2014/01/17/AvrIsp-MkII-Usb-Driver-for-Arduino.aspx
    - alimenter en électricité la carte Arduino (le cable nappe ne suffit pas)
    Il est plus simple de préparer sur l’ordinateur un répertoire contenant les fichiers
    - [Arduino]\hardware\tools\avr\bin\avrdude.exe
    - [Arduino]\hardware\tools\avr\bin\libusb0.dll
    - [Arduino]\hardware\tools\avr\etc\avrdude.conf
    - [Arduino]\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex
    Depuis ce répertoire, lancer :
    .\avrdude -p m328 -P usb -c stk500 -U flash:w:optiboot_atmega328.hex -F

    Répondre à ce message

  • Le 24 janvier 2014 à 19:35, par Frédéric Bernat En réponse à : Flasher le bootloader d’une carte Arduino

    J’ai utilisé une autre méthode pour flasher le bootloader de mon arduino MEGA 1280 ... J’ai utilisé un autre arduino MEGA 1280 comme programmateur. avec IDLE arduino ça prend 5 minutes. Il suffit de brancher le port SPI du premier arduino (ie : 50 Miso, 51 Mosi, 52 sck, 53 Rst) sur les même pin du port ISCP du second Mega que l’on veut flasher, ne pas oublier d’alimenter le second mega par le premier en connectant le gnd et le 5v. installer sur le premier le sketch arduino ISP puis sélectionner le programmateur "arduino as ISP" et enfin clicker sur graver la séquence d’initialisation, 30 seconde plus tard la carte Mega renait à la vie, YOUPI !!!!
    Il faut dire que sans cet article je n’aurait pas eu l’idée de le faire ... cela faisait deux ans que ma carte mega trainait dans un tiroir.....
    Bref, Merci !!!

    Répondre à ce message

  • Le 8 janvier 2014 à 22:52, par Eric P. En réponse à : Flasher le bootloader d’une carte Arduino

    L’utilisation d’avrdude est identique sous Linux, en remplaçant juste COMxx par le /dev/ttyUSBxx sous lequel apparait le programmateur.

    D’ailleurs, une fois qu’on a compris comment charger un binaire sur une Arduino par cette méthode, on peut faire l’économie des 2k du bootloader et s’en passer totalement en utilisant le programmateur et avrdude pour charger le code de votre appli au lieu du mécanisme de l’IDE Arduino.

    Au passage, si l’IDE Arduino commence à vous gêner un peu aux entournures, on peut s’en passer totalement au profit de l’éditeur de votre choix (un vrai cette fois-ci), voire d’un IDE comme Eclipse, grâce à inotools décrit dans un article publié précédemment.

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document