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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.