LPC2148 mit openOCD: kein halt nach reset

OP #1555940
Lesenswert?
• ▲
▼
Hallo,
seit ich vom Wiggler auf einen FTDI-kompatiblen JTAG-Adapter umgestiegen 
bin (openocd-usb von embeddedProjects) habe ich ein gravierendes Problem 
mit openOCD.
Ich kann mich zwar mit meinem LPC-2148 verbinden, aber nach halt reset 
(oder halt init) wird kein halt durchgeführt. Die Ausgabe von openOCD 
(habe mehrere Versionen versucht, zuletzt 0.4.0-r1 mit Unterstützung für 
lib-ftd2xx):

> openocd.exe -f interface\openocd-usb.cfg -f target\lpc2148.cfg

Open On-Chip Debugger 0.4.0-rc1 (2010-01-15-10:41)
For bug reports, read
  http://openocd.berlios.de/doc/doxygen/bugs.html
RCLK - adaptive
jtag_nsrst_delay: 200
jtag_ntrst_delay: 200
trst_and_srst srst_pulls_trst srst_gates_jtag trst_push_pull 
srst_open_drain
Info : device: 4 "2232C"
Info : deviceID: 67330064
Info : SerialNumber: A
Info : Description: Dual RS232 A
Info : RCLK (adaptive clock speed) not supported - fallback to 500 kHz
Info : JTAG tap: lpc2148.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, 
part: 0xf1f0, ver: 0x4)
Info : Embedded ICE version 4
Info : lpc2148.cpu: hardware has 2 breakpoints or watchpoints


> reset halt

Info : accepting 'telnet' connection from 0
Info : JTAG tap: lpc2148.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, 
part: 0xf1f0, ver: 0x4)
Warn : srst pulls trst - can not reset into halted mode. Issuing halt 
after reset.
target state: halted
target halted in ARM state due to debug-request, current mode: System
cpsr: 0x2000001f pc: 0x000004c8


Das Debuggen funktioniert einwandfrei (allerdings halt nicht vom Anfang 
des Programms, was eher ungünstig ist).

Außerdem führt die Verwendung von gdb_memory_map enable oder
gdb_flash_program enable im cfg-Skript zu einem "command handler 
execution failed". Das ist mit dem Wiggler auch nicht der Fall...

Falls jemand ne Idee hat, wäre ich sehr dankbar, ich komme hier einfach 
nicht weiter.

Viele Grüße,
Christian
#1729887
Lesenswert?
• ▲
▼
Ein ähnliches Problem hatte ich auch. Das Problem: Beim Hardwarereset 
wird auch JTAG neuinitialisiert. Da rennt der LPC erstmal fröhlich los, 
bis er die Breakpoints etc. mitgeteilt bekommt.

Einfache Abhilfe: Das Initialisierungsskript mit einer entsprechend 
langen Schleife ausstatten. Mit 500.000 Zyklen klappte es bei mir ganz 
gut. Der Effekt ist natürlich, dass man auch beim normalen starten immer 
etwas warten muss, bis der uC tut was er soll. Aber die Schleife kann 
man ja irgendwann verkleinern.

Ich hoffe das hilft euch.

Liebe Grüße,

Jan

Antwort schreiben

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.

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.