Hallo, Ich möchte einen LPC1768 bzw. einen LPC2368 programmieren bzw. debuggen. Wenn ich den chip debuggen will, funktioniert es bei mir nur ca. jedes zweite mal. Wenn es funktioniert, kann ich alle variablen werte sehen, auch die Pins am µC toggeln. wenn ich das ganze jetzt nochmal debuggen will, steht der program counter bei einer Adresse um ca. 0x7FFF E152. Bei 0x7FFF E008 liegt der Bootloader... Nun gibt es den Pin P2.10. Ist dieser Pin auf Lo, so sollte der Chip in den ISP mode gehen. Ist der Pin Hi, sollt der Chip nur in den ISP mode gehen, wenn die checksumme nicht übereinstimmt (der user Code nicht valid ist). Wenn ich den Pin P2.10 auf 0V ziehe, funktioniert es jedesmal. Allerdings ist dann der ISP mode aktiv. Folglich sollte das debuggen ja eigentlich nicht funktionieren... wenn ich den µC flashe muss der Pin P2.10 auf Hi sein. In diesem Fall funktioniert es ca. bei jedem 2. mal flashen. wenn es nicht funktioniert, hängt der program counter bei ca. 0x7FFF E156. Hat jemand einen möglichen Lösungsvorschlag? Hatte noch jemand ein ähnliches Problem? LG, Philipp
Philipp schrieb: > Hat jemand einen möglichen Lösungsvorschlag? Testweise im Init-Skript der Debugger-Software MEMMAP auf Flash setzen (LPC17xx z.B. 0x400FC040 auf 1) > Hatte noch jemand ein ähnliches Problem? Ähnliche Symptome ja. Falls gdb und OpenOCD im Einsatz ist, kann ich noch ein paar Hinweise schreiben. Passen aber bei anderer Hard- und Software eher nicht.
Lieber Martin, Danke für deine Antwort. >Testweise im Init-Skript der Debugger-Software MEMMAP auf Flash setzen >(LPC17xx z.B. 0x400FC040 auf 1) Du meinst im Startupcode MEMMAP auf Flash setzen? Oder wie könnte ich das Lösen? Der Startupcode wird ja, meiner Meinung nach, gar nicht ausgeführt, sondern der Programcounter springt gleich auf die Adresse des Bootloaders. Kann / sollte ich das mit OpenOCD gleich einstellen? Ja, ich benutze OpenOCD und GDB und bin dir für Tipps sehr dankbar. Liebe Grüße, Philipp
Weißt du auch wie man mit OpenOCD und z.b. telnet den Flash auslesen und in eine Dateispeichern kann? Lg, Philipp
>[...] > Kann / sollte ich das mit OpenOCD gleich einstellen? Kann: ja, z.B. per mww in einer reset-init Funktion. Ob "sollte" weiß ich nicht, hatte das irgendwann beim Probieren so eingestellt und dann nicht mehr getestet, ob es auch nach den anderen Änderungen noch nötig ist. Schaden kann es nicht. > Ja, ich benutze OpenOCD und GDB und bin dir für Tipps sehr dankbar. Hatte mit LPC17xx und OpenOCD auch jüngst ein wenig "Spass". Die mitgelieferten Scripte sind manchmal noch nicht ausgegoren. Noch "druckfrisch": http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_lpc_cm3 . Darin eine OpenOCD config-Datei (LPC1766.cfg), die hier zuverlässig mit funktioniert hat. Die wenigen Änderungen im Vergleich zur LPC1768.cfg aus dem OpenOCD-Lieferumfang dürften schnell zu erkennen sein (reset-config, reset-init script). Im Makefile und den Eclipse Launches findet sich mglw. auch noch Brauchbares. >Weißt du auch wie man mit OpenOCD und z.b. telnet den Flash auslesen und >in eine Dateispeichern kann? Siehe Dokumentation zu dump_image.
Lieber Martin, vielen Dank für deine Antwort. das LPC1766.cfg hat mir etwas weitergeholfen. Allerdings steht der Program counter (pc) nachwievor bei jedem zweiten mal downloaden irgendwo im NXP bootloader. (sowohl beim Debuggen, als auch beim runterspielen der HEX file mit OpenOCD und anschließendem standalone laufen lassen) Ich habe das flash ausgelesen und habe festgestellt, dass jedes zweite mal downloaden der Flash-Speicher leer ist. Dazwischen steht jeweils genau der selbe (funktionierende) code im Flash. Hat jemand eine Ahnung woran das liegen kann? Gibt es so eine Art Flash-Enable bit, das ich setzen muss um in den Flash schreiben zu können? Ich habe nichts derartiges im User Manual gefunden. Oder der Chip ist im (Deep) Sleep oder Powerdown mode (jedes zweite mal). Was mir aber auch sehr unwahrscheinlich vorkommt bzw. ich noh keinen Weg gefunden habe dies zu verhindern. LG, Philipp
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.