Ce n’est pas une question pour le bar, c’est bien une question générale ➜ je déplace
Pour la question, on peut flasher le bootloader sur une Arduino Nano, il faut utiliser un programmateur ISP, et ça peut être une autre carte Arduino en mode “Arduino as ISP”. La Nano doit être connectée via les broches SPI (MISO, MOSI, SCK, RESET, GND, VCC). Le câblage correct est indispensable.
Une autre méthode consiste à utiliser un programmateur externe dédié comme l’USBasp ou l’USBtinyISP. Il se connecte directement aux broches ISP de la Nano.
Ensuite, dans l’IDE Arduino, vous sélectionnez le programmateur correspondant (ex: “USBasp”) et choisissez le bon type de carte et cliquez sur “Graver la séquence d’initialisation”.
Je me suis mal exprimé, je veux lire le comptenue de l'Arduino, copier le bootloader et le programme sur mon ordinateur, la le tuto dit comment flasher le bootloader !
La communication dans le tuto se fait de l'ordinateur vers l'Arduino, moi ma requette est de lire le contenu de l'Arduino vers l'ordinateur de copier le contenut de l'Arduino.
vous voulez donc extraire le contenu de la mémoire du Nano.
➜ Pour extraire ce contenu (Flash et EEPROM) on connecte la carte via USB comme pour la programmer (identifiez le port série utilisé) et dans un terminal ensuite on utilise avrdude pour lire la mémoire.
Si /dev/ttyUSB0 est le port exact de votre Arduino Nano,
pour la mémoire Flash, c'est un truc du genre avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 115200 -U flash:r:flash.hex:i
➜ crée le fichier flash.hex
et pour la mémoire EEPROM avrdude -c arduino -p m328p -P /dev/ttyUSB0 -b 115200 -U eeprom:r:eeprom.hex:i
➜ crée le fichier eeprom.hex
(vérifiez avec le doc de avrdude - je dis ça en regardant un historique de commandes que j'ai dans mon terminal mais je ne suis plus sûr à 100% que c'était fonctionnel).
Le bootloader doit être présent pour que la communication USB fonctionne correctement.
Cela n’extrait pas le bootloader (ce n'est généralement pas nécessaire - c'est souvent le "old bootloader" que vous trouverez dans les clones de Nano asiatiques et on trouve cela sur internet). car la commande avrdude avec l’option -U flash:r:... ne lit que la section application de la mémoire Flash, c’est-à-dire la zone où le sketch est stocké.
Le bootloader se trouve dans une section protégée de la Flash, généralement en haut de l’espace mémoire, et avrdude ne la lit pas.
Si je me souviens bien, pour lire aussi le bootloader, il faut utiliser un programmateur ISP comme l’USBasp, car la lecture via le port série ne permet pas d’accéder à cette zone et vous pourrez alors récupérer l’intégralité des 32 Ko dont les derniers 512 (eg Optiboot) ou 2048 (eg "old bootloader" utilisé sur les anciens Arduino Nano ou leurs clones — basé sur ATmegaBOOT) octets contiennent le bootloader.
Il suffit de lire la flash au lieu de l'écrire mais je ne vois vraiment pas quel intérêt cela peut présenter. De mémoire c'est une opération que l'on effectuait pour vérifier que le bootloader était effectivement similaire à celui d'un produit fonctionnel et c'était plutôt à titre indicatif; cela ressemblait plus à une opération du désespoir qu'à l'obtention d'une certitude opérationnelle
Tout est possible au moyen de l'interface ICSP; à savoir:
Lecture de la signature du chip
Effacement complet (flash et/ou eeprom et/ou fusibles)
Lecture/écriture des fusibles
Lecture/écriture de la flash (pour peu que le fusible l'autorise) et de l'eeprom
...
Maintenant, cela passe une lecture appronfondie de la datasheet et son application de l'ATmega328P qui équipe l'Arduino nano
Lire et appliquer le § 27.8 Serial Downloading - Page 254/294
NB1: C'est comme cela que je recycle des Arduino Chinois avec ou sans bootloader et que je les reprogramme à mon goût et gagner notamment la place d'un bootloader inutile en exploitation au profit d'un micro-OS
Pas forcément, il faut avoir été confronté à des problèmes similaires à ceux exposés dans le fil de discussion Modifier le Bootloader d'un Arduino Nano pour se donner les moyens et apporter une solution, certes réservée peut-être à des développeurs, mais tellement instructif lorsque cela fonctionne
Je sais à quoi sert le bootloader et qu'il peut être utile de le modifier mais la question est de lire et copier le bootloader d'où Il suffit de lire la flash(c'est même une possibilité directe dans AVRStudio) par contre à ma connaissance la recopie dans le micro n'est pas possible, mais je n'ai jamais essayé (edit)
ailleurs qu'au travail où c'était impossible