mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehlerhaftes debuggen in Eclipse für LPC2378


Autor: Steffen H. (mcst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe ein Problem mit dem Debugger bei Eclipse und hoffe ihr könnt 
mir helfen!

Der Reihe nach: Ich will mein Programm auf dem Entwicklungsboard 
LPC-2378-STK-A von Olimex debuggen und nutze hierfür einen 
USB-JTAG-Adapter (ARM-USB-TINY; ebenfalls Olimex). Dieser ist über 
OpenOCD im Eclipse eingebunden. Unter Debuge-Configurations nutze ich 
„Zylin Embedded Debuger (Native)“ mit GUNRAM arm-elf-gdb.exe
Bei den Run-Commands habe ich
target remote localhost:3333
monitor reset
monitor sleep 500
monitor poll
monitor soft_reset_halt
monitor arm7_9 force_hw_bkpts enable
monitor flash erase_sector 0 0 0
monitor flash write_image Debug\\test1.hex 0x0
break main
load
continue
eingetragen, Initialize Commands habe ich keine.

Nun zum eigentlichen Problem:
Nur jeder zweite Start des Debuggers funktioniert. Läuft der Debugger 
mal, so kann ich schön sehen wie Variablen verändert werden aber wenn 
ich Registerinhalte ändere um z.B. einen digitalen Eingang zu aktivieren 
um eine LED zum Blinken zu bringen passiert nix. Ich sehe zwar wie sich 
die angezeigten Registerplätze ändern aber am Board tut sich nichts.

Hier mal das Listung für einen positiven Start des Debugers:
mi_cmd_break_watch: Missing <expression>
No registers.
target remote localhost:3333
0x7fffe154 in ?? ()
monitor reset
JTAG device found: 0x4f1f0f0f (Manufacturer: 0x787, Part: 0xf1f0, Version: 0x4)
monitor sleep 500
monitor poll
target state: halted
target halted in Thumb state due to debug request, current mode: Supervisor
cpsr: 0xa00000f3 pc: 0x7fffe156
monitor soft_reset_halt
requesting target halt and executing a soft reset
monitor arm7_9 force_hw_bkpts enable
force hardware breakpoints enabled
monitor flash erase_sector 0 0 0
erased sectors 0 through 0 on flash bank 0 in 0.578125s
monitor flash write_image Debug\\test1.hex 0x0
wrote 2568 byte from file Debug\\test1.hex in 1.718750s (1.459091 kb/s)
Breakpoint 10 at 0x41c: file ../main.c, line 30.
break main
load
Loading section .text, size 0xa08 lma 0x0
Start address 0x0, load size 2568
Transfer rate: 1 KB/sec, 2568 bytes/write.
continue
Note: automatically using hardware breakpoints for read-only addresses.

Breakpoint 1, main () at ../main.c:30
30    long    j = 0;  
Wo liegt mein Fehler und was muss ich ändern damit ich das Problem 
beseitige?
Über jede Hilfe freu ich mich, mir sind mittlerweile die Ideen 
ausgegangen.

Steffen

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lieber Steffan,

hast du schon eine Lösung für das Problem gefunden??

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. So wie auch bei dir:

>target remote localhost:3333
>0x7fffe154 in ?? ()
>monitor reset

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 außer uns das selbe Problem?

LG,
Philipp

Autor: Steffen H. (mcst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Philipp,

das Problem was ich hatte war:
Beim ersten Durchlauf war es nich möglich den µC aus Eclipse heraus zu 
flashen, da dieser in einem Modus sich befand in dem er keinen Zugriff 
auf den Speicher erlaubte. ->Fehlermeldung danach wechselt der µC 
komischerweise den Modus...
Debuggen war möglich aber der Code ja nich auf dem Controller
Beim zweiten Durchlauf ging dann immer das flashen aber debuggen war 
nich mehr drin :-C

vll. trifft die Beschreibung auch bei dir zu und hilft dir weiter.

Da ich nicht unendlich Zeit hatte, hab ich das Problem (meiner Meinung 
nach sehr unelegant) umgangen:
Ich übersetze meinen Code wie gewohnt im Eclipse in ein .hex und brenn 
diesen über FlashMagic in den LPC2378

Beim Debuggen ruf ich Zylin mit folgender Ini. auf:
target remote localhost:3333
monitor reset
monitor sleep 500
monitor poll
monitor soft_reset_halt
monitor arm7_9 sw_bkpts disable
monitor arm7_9 force_hw_bkpts enable
monitor mww 0xE01FC040 0x01
monitor mdw 0xE01FC040
break main.c:97
load
continue
PC steht durch Reset an stelle Null im Speicher;
Das "breake" Kommando setzt dabei einen Hardware-Breakpoint an der 
Stelle:
 File:Zeile
load und continue bewerkstelligen das der Controller los läuft und du 
was siehst.

Das funktioniert bei mir super und es sind auch keine Probleme wieder 
aufgetreten. Ich kann alles im Speicher beobachten :-)

Das mit dem Pin hat bei mir nich viel gebracht und mich eigentlich sogar 
noch mehr verwirrt.

Hoff echt das hilft dir weiter! Ich selbst hab ewig gebraucht um das 
hinzubekomm.

LG Steffen

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.