Bonjour Carburapeur
La notion de bootloader n'est pas si compliquée.
Déjà rappelons qu'une carte Arduino c'est 90% le chip ATmega328P de Mr Atmel autour duquel Mr Arduino à mis quelques composants pour que çà tourne et quelques connecteurs. Mais l'environnement Arduino c'est pas que la carte, c'est aussi la notion de shield et l'environnement de programmation qui bien que 100% C/C++ est rendu facile d'accès pour les débutant, ainsi que la communauté crée autour.
La flash interne des ATmega est partitionnable, c'est à dire que l'on peu l'effacer par morceau. C'est peut être pas évident pour vous mais il y à 15 ans, les flash n'étaient pas partitionnables et l'effacement était toujours à 100%.
L'intérêt c'est qu'on va pouvoir mettre 2 programmes dans la flash :
- le premier, petit, va être au début de la flash et démarrer tout seul au reset. C'est le bootloader.
- le 2nd qui s'étale dans ce qui reste de la flash c'est ton application
Au début, le chip ATmega est vierge. Le seul moyen d'écrire un programme dans la flash c'est un programmateur ICSP. C'est pas méchant, ca coute entre 5 et 20€ et il y a des softs, y compris l'environnement Arduino pour s'en servir.
Quand tu achète une carte Arduino, Mr Arduino a déjà mis le bootloader (et souvent le programme blink)
Le bootloader est donc un premier petit programme qui démarre à la mise sous tension.
A son démarrage, il va configurer la liaison série à un certain débit, attendre quelques instants et s'il ne reçoit rien, il lance le programme principal.
S'il reçoit quelque chose, il va tenter de dialoguer avec le programme qui se trouve à l'autre bout de la liaison série sur le PC. S'ils se comprennent, le PC va pouvoir demander au bootloader d'effacer le haut de la flash (mais pas le bootloader lui même hein !) puis lui envoyer un nouvau programme à écrire dans la flash. Une fois finit, on redemarre et le nouveau programme commence.
Il existe essentiellement 2 type de bootloaders :
- celui d'Atmel qui s'appelle si je ne me trompe pas DFU et qui fonctionne avec un certain protocole et un soft PC de chez Atmel
- ceux de l'OpenSource qui fonctionne avec le logiciel open-source AVRdude
Les différents bootloaders utilisés sur Arduino fonctionnent avec AVRdude qui est le programme que l'IDE Arduino lance une fois la compilation finie : quand tu voit passer dans la fenetre noire en bas des truc genre "sync" "trying to connect" etc... c'est AVRdude.
Mais il y a plusieurs bootloaders Arduino. Je n'ai pas les détails de l'historique mais par exemple sur DueMilanove et sur UNO la vitesse de la liaison série n'est pas la même. La taille du bootloader est légèrement différente.
Il y ausi Optiboot qui vient d'une autre partie de la communauté, ....
Il n'y a pas forcement de criticité à choisir un bootloader si tu part d'un chip vierge. Après il faut configurer correctement l'IDE Arduino pour qu'il sache causer avec.