ARDUINO : le BOOTLOADER

2. Le chargement
Charger un bootloader ne se fait pas par la ligne série, mais par le bus SPI, à l'aide des broches MISO, MOSI, SCK.

Cette interface se nomme ISP (In Site Programming).
Il n'y a aucun code associé à cette interface. Concrètement c'est une solution de programmation incluse dans le microcontrôleur. Certains processeurs (STM32 en tête) offrent la possibilité de charger une application via une ligne série, ou bien un bus SPI ou I2C. L'ATMEGA est plus ancien, et ne propose que le SPI.

Nous devrons aussi alimenter la carte à charger, et aurons donc besoin de deux broches supplémentaires VCC et GND.

La broche RESET sera utilisée pour redémarrer la carte et pour commuter le microcontrôleur cible en mode esclave.

Cela fait 6 broches en tout.

On peut utiliser le connecteur ICSP dont certaines cartes sont équipées (UNO, NANO) :


Connecteur ICSP sur UNO


Connecteur ICSP sur NANO

Sinon il faut utiliser les broches MISO, MOSI, SCK et RESET disponibles sur les deux rangées de broches classiques (PRO MINI par exemple) :

Il existe différents moyens d'effectuer l'opération :

  • un programmateur spécialisé :
  • ATMEL-ICE
  • USBASP
  • USBTINY
  • BusPirate
  • etc.
  • une carte UNO ou NANO utilisée comme programmateur "As ISP"

2.1. Programmateur USBASP

Comme on le voit sur cette image le programmateur USBASP est généralement livré avec un câble en nappe et un adaptateur à 6 broches.
Cet adaptateur est directement enfichable sur le connecteur ICSP d'une carte NANO ou UNO.
Si l'on veut raccorder ce programmateur sur une PRO MINI le schéma précédent doit être utilisé.