On m'a demandé de "graver le chargeur de démarrage" sur mon Arduino pour corriger une erreur que j'obtenais. Comment puis-je faire ceci? (Et quel est exactement le chargeur de démarrage?)
On m'a demandé de "graver le chargeur de démarrage" sur mon Arduino pour corriger une erreur que j'obtenais. Comment puis-je faire ceci? (Et quel est exactement le chargeur de démarrage?)
Réponses:
Le chargeur de démarrage est un petit programme qui est (presque) toujours sur un Arduino. Il gère le téléchargement et le démarrage des croquis que vous faites, et clignote la LED de la broche 13 à chaque réinitialisation de la carte.
Pour graver le chargeur de démarrage:
Tools ► Board ►
dans l'IDE. Revérifiez cela même si vous pouviez télécharger des programmes correctement; le téléchargement ne nécessite pas toujours la bonne carte.Tools ► Programmer ►
.Tools ► Burn Bootloader
et attendez. Cela ne devrait pas prendre plus d'une minute et ne prend souvent que quelques secondes.Sources:
{line 1} or other dedicated ISP programmer.
Et quel est exactement le chargeur de démarrage?
Le chargeur de démarrage est un petit morceau de code résidant dans la partie "haute" de la mémoire du programme. Normalement, il n'est pas effacé lorsque vous téléchargez de nouveaux croquis. Son but est qu'il soit activé immédiatement après une réinitialisation (les fusibles sont configurés pour commencer le code à l'adresse du chargeur de démarrage plutôt qu'à l'adresse 0x0000). Le chargeur de démarrage attendra un court instant (comme une seconde) pour voir si des données de "programmation" arrivent sur le port série.
Si tel est le cas, il lit ces données et les décode pour reprogrammer le reste de la mémoire flash. En collaboration avec le programme de téléchargement (normalement avrdude), le nouveau croquis est envoyé via le port série. Le chargeur de démarrage efface les pages de mémoire flash et les remplace par le nouveau code. Une fois terminé, il exécute le nouveau code.
Si aucune instruction n'arrive, le chargeur de démarrage passe à l'adresse 0x0000 pour exécuter l'esquisse existante sur la carte.
Une autre méthode pour programmer un chargeur de démarrage consiste à utiliser un croquis que j'ai écrit il y a quelque temps et qui s'exécute sur:
La carte "programmation" exécute l'esquisse qui contient des chargeurs de démarrage pour un certain nombre de cartes codées en dur. Vous connectez la carte de programmation à la carte cible (la carte voulant le chargeur de démarrage) avec 6 fils de raccordement comme indiqué.
Cette photo particulière illustre un Uno en programmant un autre.
Vous exécutez l'esquisse (en utilisant le moniteur série pour lui donner des commandes). Il identifie d'abord la puce cible:
Atmega chip programmer.
Written by Nick Gammon.
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xCF
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...
Type 'G' to program the chip with the bootloader ...
Vous appuyez sur G pour le programmer.
Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xCF
Done.
Type 'C' when ready to continue with another chip ...
Pour un Uno, cela prend une seconde. La programmation d'un Mega2560 prend 3 secondes.
Instructions détaillées au programmeur du chargeur de démarrage Atmega
Le code peut être téléchargé depuis Github: nickgammon / arduino_sketches