LPC2148 Bootloader defekt

Gast #481448
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
Gast #481624
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
#481688
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.