Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
howtos:bootloader [2015/02/13 16:14] – [Bootloaders pour ATmega8] phyks | howtos:bootloader [2022/05/05 19:51] (Version actuelle) – hackens | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | < | ||
Bootloaders pour ATmega8 / ATmega328p | Bootloaders pour ATmega8 / ATmega328p | ||
===================================== | ===================================== | ||
- | Pour le projet [[projets: | + | 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' | Du coup, voici une petite compil' | ||
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' | ||
{{ http:// | {{ http:// | ||
+ | |||
+ | |||
+ | Il faut envoyer le sketch ArduinoISP (trouvables dans les exemples) sur l' | ||
+ | |||
## Envoi de programmes | ## Envoi de programmes | ||
+ | |||
+ | On envoie ensuite directement le programme sur l' | ||
{{ : | {{ : | ||
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' | ||
+ | |||
+ | Pour ce faire, le plus simple est d' | ||
+ | |||
+ | 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: | ||
+ | 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: | ||
+ | atmega328bb.build.variant=arduino: | ||
+ | ``` | ||
+ | |||
+ | 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 `~/ | ||
+ | |||
+ | Les nouvelles cartes, ajoutées de cette manière, apparaîtront alors dans la liste des cartes utilisables dans Arduino. | ||
+ | |||
+ | Cependant, à l' | ||
- | 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. |