Forum: Mikrocontroller und Digitale Elektronik LPC2148 Bootloader defekt


von hahgeh (Gast)


Lesenswert?

Hallo,
ist es möglich, im genannten Controller durch ein konfuses Programm oder 
Adressüberschreitung den Bootloader zu zerstören?

Ich habe das Beispielprogramm von LPCUSB mit dem Memorytest ausprobiert, 
und die Blockgröße im PC-Programm auf 2^24 gestellt, vielleicht habe ich 
damit irgendwie den Bootloader überschrieben. Zumindest startet er nicht 
mehr richtig, weil der TXD-Pin auf low bleibt, heißt das wohl, dass die 
UART nichtmal initialisiert wird.

Könnte/Wie könnte man den Bootloader wieder neu aufspielen?

MfG hahgeh

von hahgeh (Gast)


Lesenswert?

Vielleicht habe ich auch in den IO-Bereich geschrieben und den RXD von 
der UART zufällig als Ausgang geschaltet, so dass ein Kurzschluss 
entsteht und der Port zerstört wird.

von Robert Teufel, NXP (Gast)


Lesenswert?

Also den Bootloader zu ueberschreiben, dazu gehoert sehr viel mehr als 
ein Speichertest oder einfach ein Programm-Irrlaeufer.  Die 
Programmierung im LPC2148 und allen anderen LPC2000 wird durch den 
Bootloader gemacht. Der Bootloader hat Addresspruefungen drin und testet 
ob die Zieladresse fuer Programmierung im eigenen Bereich ist 
(Selbstzerstoerung). Falls ja, wird der Programmieraufruf einfach mit 
einer Fehlermeldung quittiert.

Also das ist extrem unwahrscheinlich, dass der Bootloader geloescht 
wird, da handelt es sich ja nicht nur um einen Schreibzugriff auf die 
Adressen des BL sondern dazu muesste eine ganze Reihe von Registern, die 
der Bootloader verwaltet, versehentlich mit verschiedensten Werten 
geladen werden und dann ein Loeschbefehl kommen.

Ueberigens auch ein "Chiperase" wird nicht den Bootloader loschen aber 
alles ausser dem Bootloader.

Gruss, Robert

von Dominic R. (dominic)


Lesenswert?

Ein Problem ist, dass das User Manual nicht darauf hinweist, dass auf 
den Bereich zwischen 0x3fff8000 und 0x40000000 auf keinen Fall 
zugegriffen werden darf. Stattdessen sagt das UM, dass dieser 
reservierte Bereich (wie alle reservierten Bereiche) eine Exception 
auslösen würde, was offensichtlich falsch ist. In einem anderen 
Dokument, das via ARM IQ Online (gratis Registrierung erforderlich) 
verfügbar ist, bestätigt Philips übrigens die Existenz dieser "Special 
Registers" zwischen 0x3fff8000 und 0x40000000.

In der LPC2000 Group auf Yahoo gab es im Juni 2006 einen ziemlich 
ausführlichen Thread zu dem Thema: "[lpc2000] Killing MCU by watching 
memory below 0x4000'0000 !?!"
Ob nun "watching" ausreicht, oder Schreibzugiffe nötig ist, konnte wohl 
nicht endgültig geklärt werden.

Gruss,

dominic

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.