howtos:bootloader

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
howtos:bootloader [2013/12/02 18:03] phykshowtos:bootloader [2022/05/05 19:51] (Version actuelle) hackens
Ligne 1: Ligne 1:
-Bootloaders pour ATmega8 +<!DOCTYPE markdown> 
-====+Bootloaders pour ATmega8 / ATmega328p 
 +=====================================
  
-Pour le projet [[projets:LedHill]], on a eu besoin de graver 30 bootloaders sur des ATmega8. On n'a pas de programmateur et on le fait donc avec des Arduinos. Comme toujours, il nous a fallu 2h de debug avant de graver le premier :) (mais cette fois, ça a été rentable avec 30 bootloaders gravés d'un coup !).+Pour le projet [[projets:acheves:LedHill]], on a eu besoin de graver 30 bootloaders sur des ATmega8. On n'a pas de programmateur et on le fait donc avec des Arduinos. Comme toujours, il nous a fallu 2h de debug avant de graver le premier :) (mais cette fois, ça a été rentable avec 30 bootloaders gravés d'un coup !).
  
 Du coup, voici une petite compil' des liens qui marchent et des trucs importants à vérifier pour ne pas perdre deux heures (les messages d'erreur du soft Arduino étant *tellement* explicites... et il y a 10 méthodes différentes, chacune aboutissant à une erreur différente sur le net). Du coup, voici une petite compil' des liens qui marchent et des trucs importants à vérifier pour ne pas perdre deux heures (les messages d'erreur du soft Arduino étant *tellement* explicites... et il y a 10 méthodes différentes, chacune aboutissant à une erreur différente sur le net).
Ligne 9: Ligne 10:
  
 ## Gravure de bootloader ## Gravure de bootloader
 +
 +On grave le bootloader à l'aide d'un autre ATmega qu'on utilise comme programmateur et qui communique avec l'ATmega à graver en SPI. Le montage à faire est le suivant :
  
 {{ http://arduino.cc/en/uploads/Tutorial/BreadboardAVR.png |}} {{ :howtos:burn.jpg?direct&500 |}} {{ http://arduino.cc/en/uploads/Tutorial/BreadboardAVR.png |}} {{ :howtos:burn.jpg?direct&500 |}}
 +
 +
 +Il faut envoyer le sketch ArduinoISP (trouvables dans les exemples) sur l'Arduino Uno, puis bien choisir « Arduino as ISP » dans le choix des programmateurs et graver la séquence d'initialisation, en choisissant comme type de carte « Arduino NG or older W/ ATmega8 ».
 +
  
 ## Envoi de programmes ## Envoi de programmes
 +
 +On envoie ensuite directement le programme sur l'ATmega grâce au câble FTDI. IL faut choisir « Arduino NG or older W/ ATmega8 » comme type de carte.
  
 {{ :howtos:upload.jpg?direct&500 |}}{{ :howtos:upload2.jpg?direct&500 |}} {{ :howtos:upload.jpg?direct&500 |}}{{ :howtos:upload2.jpg?direct&500 |}}
Ligne 26: Ligne 35:
 * Lorsque le bootloader est gravé, pour envoyer des programmes facilement, il faut qu'il puisse reset sur serial (sinon, il faut faire un reset manuel à chaque fois). Pour ça, il faut mettre une capacité et une résistance sur le pin de reset (cf schematics des Arduino). * Lorsque le bootloader est gravé, pour envoyer des programmes facilement, il faut qu'il puisse reset sur serial (sinon, il faut faire un reset manuel à chaque fois). Pour ça, il faut mettre une capacité et une résistance sur le pin de reset (cf schematics des Arduino).
  
-### Note interne+### Modification des fuse bits avec Arduino 
 + 
 +Il peut être utile de modifier les fuse bits, tout en gravant la séquence d'initialisation avec Arduino, pour plus de simplicité. En particulier, si vous prévoyez d'utiliser l'ATmega en l'alimentant en 3.3V, la valeur par défaut du brown out (2.7V) peut être un peu juste (le brown out étant une sécurité qui redémarre l'ATmega si la tension passe en-dessous d'une valeur limite). 
 + 
 +Pour ce faire, le plus simple est d'aller rajouter des entrées dans un fichier `boards.txt` personnalisé, par exemple `~/sketchbook/hardware/breadboard/boards.txt`. 
 + 
 +Exemple de lignes à ajouter : 
 +``` 
 +############################################################## 
 +# Arduino Uno with custom fuse bits to disable brown out detection 
 + 
 +uno_no_bo.name=Arduino Uno without brown out  
 +uno_no_bo.upload.protocol=arduino 
 +uno_no_bo.upload.maximum_size=32256 
 +uno_no_bo.upload.speed=115200 
 +uno_no_bo.bootloader.low_fuses=0xff 
 +uno_no_bo.bootloader.high_fuses=0xde 
 +uno_no_bo.bootloader.extended_fuses=0x07 
 +uno_no_bo.bootloader.path=optiboot 
 +uno_no_bo.bootloader.file=optiboot_atmega328.hex 
 +uno_no_bo.bootloader.unlock_bits=0x3F 
 +uno_no_bo.bootloader.lock_bits=0x0F 
 +uno_no_bo.build.mcu=atmega328p 
 +uno_no_bo.build.f_cpu=16000000L 
 +uno_no_bo.build.core=arduino 
 +uno_no_bo.build.variant=standard 
 + 
 + 
 +############################################################## 
 +# ATmega328p on a breadboard with 8 MHz internal clock 
 + 
 +atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock) 
 + 
 +atmega328bb.upload.protocol=stk500 
 +atmega328bb.upload.maximum_size=30720 
 +atmega328bb.upload.speed=57600 
 + 
 +atmega328bb.bootloader.low_fuses=0xE2 
 +atmega328bb.bootloader.high_fuses=0xDA 
 +atmega328bb.bootloader.extended_fuses=0x05 
 +atmega328bb.bootloader.path=arduino:atmega 
 +atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex 
 +atmega328bb.bootloader.unlock_bits=0x3F 
 +atmega328bb.bootloader.lock_bits=0x0F 
 + 
 +atmega328bb.build.mcu=atmega328p 
 +atmega328bb.build.f_cpu=8000000L 
 +atmega328bb.build.core=arduino:arduino 
 +atmega328bb.build.variant=arduino:standard 
 +``` 
 + 
 +Il faut aussi faire attention à ce que les bootloaders soient disponibles dans le même dossier (par exemple en créant un lien symbolique de `~/sketchbook/hardware/breadboards/bootloaders` vers `/usr/share/arduino/hardware/arduino/bootloaders/`. 
 + 
 +Les nouvelles cartes, ajoutées de cette manière, apparaîtront alors dans la liste des cartes utilisables dans Arduino. 
 + 
 +Cependant, à l'envoi du sketch, il vaut mieux utiliser le profil Arduino Uno normal, la compilation échoue avec l'autre profil (certainement à cause d'un mauvais chemin d'include), et le changement des fuses bits ne change pas le code binaire des sketchs.
  
-Il y a un dossier arduino-1.0.5 dans le dossier Utilities du PC de la cave. Le bootloader atmega8 est modifié pour booter sans vérification du serial (boot immédiat). Pour utiliser le serial (pour uploader un programme), il faut alors mettre le pin PC5 à la masse au boot. 
  • howtos/bootloader.1386007398.txt.gz
  • Dernière modification : 2022/05/05 07:40
  • (modification externe)