www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC2148 Bootloader defekt


Autor: hahgeh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: hahgeh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Robert Teufel, NXP (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.