LPC2148 Bootloader defekt

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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.