Forum: Mikrocontroller und Digitale Elektronik Problem beim Debuggen ATSAMD51, Error reported by NVM Controller


von Fabian N. (flyget)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe neuerdings ein Problem mit zwei Prototypen-Boards mit ATSAMD51 
Controllern. Die zwei Boards habe ich seit geraumer Zeit in Benutzung 
und sie haben einwandfrei funktioniert. Nun gab es folgenden Ablauf:
- Durch einen Programmfehler in der Firmware-Update-Routine wurde ein 
paar mal der gesamte Flash speicher durch folgende Routine gelöscht. Die 
Variable nblocks hatte dabei unbeabsichtigterweise Werte im Bereich 
+-32768 angenommen...
1
for(int i=0; i<=nblocks; i++)
2
          {
3
            NVMCTRL->ADDR.reg = Startaddress_bank_B + i * NVM_blocksize;
4
            NVMCTRL->CTRLB.reg = 0xa500 | NVMCTRL_CTRLB_CMD_EB;
5
            while(!NVMCTRL->STATUS.bit.READY);
6
          }

- Nachdem dieser Fehler gefunden und beseitigt wurde, wollte ich die 
neuen Features zum Programm hinzufügen und diese per Debugger testen. 
Hierzu wollte ich wie immer das Microchip-Studio und den Atmel ICE 
Programer nutzen. Wenn ich den grünen "Play"-Button betätige, kommt nun 
aber nur noch die Fehlermeldung: "Lauch Failed. Error: Error reported by 
NVM controller."

- Das Schreiben von neuen Programmen ins Memory funktioniert noch. 
Debuggen lassen sich die beiden Boards jedoch nicht mehr.

Hat jemand ne Idee wie ich das Debugg-Feature wieder zum Leben erweckt 
bekomme?

Anbei die Fuses/Userwords von einem der beiden Boards.

Viele Grüße und besten Dank,
Fabian

von Fabian N. (flyget)


Lesenswert?

Hallo zusammen,
keiner ne Idee oder fehlen Informationen?
Beste Grüße,
Fabian

von Rudolph R. (rudolph)


Lesenswert?

Ist jetzt angesichts der immer noch aktuellen Chipkrise bitter, aber 
vermutlich ist es das gesündeste die Controller zu ersetzen.

Die Memory Map gibt jetzt nichts her das neben der NVM User Page schlimm 
wäre gelöscht zu werden und die kann man per Erase Block command nicht 
löschen.
Aber die "Serial Number" liegt mit 0x008061fc und 0x00806010+ an 
Adressen die es laut Memory Map gar nicht geben dürfte, vielleicht ist 
ja ein nicht dokumentierter Block gelöscht worden.
Wenn dem so ist dürfte den zu ersetzen schwierig sein.

von Fabian N. (flyget)


Lesenswert?

Danke Rudolph,

ja, das fürchte ich auch. Fürs erste werd ichs wohl mit 
"Portpin-Debuggen" versuchen... die Controller sind VQFN64, und drumrum 
is alles dicht gepackt... Das wird keine spaßige Operation.

Beste Grüße,
Fabian

von Alex (haidanai)


Lesenswert?

Du hast es warscheinlich schon mit der Option: "erase entre Chip" 
versucht?

QFN64 habe ich schon etliche von Hand getauscht. Ja das ist nicht 
lustig.
Ich habe um den Chip mit Alufolie abgedeckt und von oben und unten mit 
Temp. geregelten Heißluftföns entlötet. Zum wieder Drauflöten hatte ich 
aber einen
professionellen Lötofen zur Verfügung.
Bei Kontaktproblemen habe ich mit dem Lötkolben die wettable Flanges an 
die überstehenden Pads gelötet, dann ging es.
Vorher beten! ;-)

von Fabian N. (flyget)


Lesenswert?

Hallo Alex,
ja, das hatte ich schon versucht...

Mit unten Erwärmen wird es leider au nix, da sitzen zwei ADCs als BGA 
mit ihrem Zubehör. Aber gut, wir werden sehen....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.