www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik NXP - Programcounter bleibt im Bootloader "hängen"


Autor: Philipp (Gast)
Datum:

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

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

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

Autor: Philipp (Gast)
Datum:

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

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weißt du auch wie man mit OpenOCD und z.b. telnet den Flash auslesen und 
in eine Dateispeichern kann?

Lg,
Philipp

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

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

Autor: Philipp (Gast)
Datum:

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

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.