🛠 Sauver une Due invisible : bouton Erase, SAM-BA et bossac en secours

Arduino Due · avance · Schéma : IMG-due-avance-3-reparer-due-bouton-erase-sam-ba.svg — Arduino Due vue de dessus avec les boutons RESET et ERASE surlignés près du connecteur ICSP/JTAG, port Programming relié au PC, étapes numérotées maintenir ERASE puis téléverser, et outil SAM-BA en secours.

Objectifs

Contre-intuitif mais documenté : contrairement aux AVR, le SAM3X doit EFFACER sa flash avant toute re-programmation quand un sketch tourne déjà. Normalement l'IDE s'en charge via la commande 1200 bauds (le « touch » qui fait retomber la carte dans le bootloader sam-ba). Mais quand la carte devient invisible — plus de port Programming, plus de port Native, sketch fou qui éteint l'USB dès le démarrage — il faut la procédure manuelle : bouton Erase + bossac ou SAM-BA. Ce tuto est l'assurance-anti-panique de tous les autres.

Matériel

Code complet

Procedure 1 — reprogrammation manuelle au bouton Erase
1. Brancher le port Programming au PC ; vérifier qu'un port série apparait.
2. Maintenir le bouton ERASE enfonce.
3. Tout en maintenant ERASE, lancer Televerser dans l'IDE.
4. Relacher ERASE quand la progression démarre (le bootloader efface
   puis écrit). Le sketch précédent est perdu, le nouveau prend la main.

Procedure 2 — bossac en ligne de commande (equivalent de l'IDE)
bossac --port COM7 -b -e -R -U flash:w:sketch.bin:i
#  -b reset vers le bootloader, -e efface la flash, -R relance après écriture

Procedure 3 — carte totalement invisible (bootloader brické)
1. Tester un autre cable (la cause n°1 reste le cable de charge seule).
2. Sur les clones, vérifier la puce du port Native : televerser via
   Programming (16U2 ou equivalent), le Native peut être inerte.
3. En dernier recours, lancer SAM-BA sur l'UART du port Programming
   (moniteur ROM present a l'adresse 0x00030000 du SAM3X) et effacer
   la flash depuis l'outil, puis re-téléverser normalement.
4. Le connecteur JTAG permet aussi une reprise par sonde (OpenOCD).

Sketch de test « je suis vivant » a televerser après récupération :
void setup {
  pinMode(13, OUTPUT);
  Serial.begin(115200);      // port Programming
  SerialUSB.begin(115200);   // port Native
  Serial.println("Due recuperee !");
}
void loop {
  digitalWrite(13, HIGH); delay(100);
  digitalWrite(13, LOW);  delay(100);
  Serial.print(".");
}

Vérification attendue

Après la procédure 1 ou 2, le téléversement aboutit sans erreur bossac et le sketch de test fait clignoter la LED 13 rapidement tout en écrivant des points sur le port Programming. En procédure 3, SAM-BA détecte le SAM3X sur l'UART (débit 1300000 ou celui proposé par l'outil) et l'efface ; la carte réapparaît ensuite dans l'IDE.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels