Hallo Leute, das Debuggen des LPC2106 mit Openocd vom 01.08.2006 und Eclipse im RAM funktioniert (auf www.olimex.com gibt es beim LPC2106 Evaluationboard einen Link auf eine Schritt für Schritt Anleitung zur Arbeit mit Eclipse; leider ausgelegt für OCDDemon von Macraigor). Probleme habe ich mit dem Debuggen im Flash. Das Programm ist für den Flash übersetzt. Im ersten Schritt lade ich ersteinmal das File main.bin außerhalb von Eclipse per Hand in den Flash (läßt sich unter Umständen später integrieren!?). Dem GDB werden folgende Befehle zur Initialisierung übergeben: 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 0x0001 monitor mdw 0xE01FC040 symbol-file main.out set $pc=0x0 thbreak main continue Das Programm wird aber anscheinend auf der falschen Adresse gestoppt, also nicht am Begin von main(). Der Breakpoint den Eclipse anzeigt, scheint auf der letzten Adresse zu liegen, bei dem ich das Debuggen abgebrochen habe, daß anscheinend mehr zufällig und hackelig einmal funktioniert hat (wenn denn die Anzeige wirklich aktualisiert wurde). Im Moment funktioniert das Debuggen jedenfalls nicht. Die openocd-logs habe ich an diese Anfrage angehängt. Wo könnten die Probleme liegen? Tschau und Danke! Sven
Hallo Sven, wenn dein OpenOCD tatsächlich vom 01.08.2006 ist, ist er hoffnungslos veraltet. Auf www.yagarto.de gibt es aktuell Revision 115, die speziell auch ein Problem im Breakpointhandling behebt. Gegenüber einer Version von August diesen Jahres sind noch jede Menge weiterer Verbesserungen enthalten. Der Versions-String, der vom OpenOCD beim starten ausgegeben wird, ist leider nicht so aussagekräftig, da ich immer wieder versäume, ihn upzudaten. Gruss, Dominic
Hallo Dominic, vielen Dank für Deine schnelle Antwort! Ich habe mittlerweile das Openocd Revision 115 installiert. Leider hat das an meinem Problem nichts geändert. Ich teste das Debuggen mit einem Programm, das die LED auf dem Olimex LPC2106 Evaluationboard zum Blinken bringt. Wenn ich die Application starte blinkt diese LED. Das Progamm läuft also aus dem Flash heraus. Allerdings wird mir unter Eclipse immer noch eine Haltepunkt angezeigt der nicht am Anfang der main() Funktion liegt. Außerdem werden mir die Buttons zum schrittweisen Debuggen nicht angeboten. Ich werde morgen das Ganze mal auf der Kommandozeilenebene mit dem GDB direkt ausprobieren. Tschau Sven!
Hallo, ich habe doch schon mal ausprobiert ob es mit dem GDB direkt funktioniert. Wie fast erwartet klappte das Debuggen auf Kommandozeile problemlos. Es ist also ein Eclipse-Problem. Fällt jemaden ein, was das Problem sein könnte? Tschau Sven!
Hallo, es war wirklich ein Eclipse Problem, jedenfalls in Zusammenhang mit den Kommandos die ich zur Initialisierung des GDB's und des Openocd's übergeben haben. Mit der folgenden Kommandosequenz funktioniert nicht nur das Debuggen im Flash sondern auch die vorherige automatische Programmierung des Flash: target remote localhost:3333 monitor wait_halt monitor sleep 500 monitor poll monitor flash write 0 main.bin 0 monitor soft_reset_halt monitor arm7_9 sw_bkpts disable monitor arm7_9 force_hw_bkpts enable monitor mww 0xE01FC040 0x0001 monitor mdw 0xE01FC040 symbol-file main.out set $pc=0x0 Damit es funktioniert muß aber in der Konfiguration des Debuggers auf der Registerkarte Debugger die Option "Start on startup at" aktiviert sein. Dann scheint Eclipse selber einen temporären Breakpoint auf main() zusetzen. Das Programm läuft auf dessen Position, wenn man unter Eclipse den Button "Resume" drückt. Natürlich muß das Prgramm auch für den Flash gelinkt sein. Außerdem erwartet Openocd ein Binaryfile (main.bin) zur Programmierung des Flash. Tschau Leute!
Ok, mein letzter Beitrag war nicht ganz korrekt. Dem GDB muß Eclipse nur die folgenden Befehle übergeben: target remote localhost:3333 monitor wait_halt 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 0x0001 monitor mdw 0xE01FC040 symbol-file main.out set $pc=0x0 Das automatische Programmieren klappt so also nicht. Der Flash muß vor dem Debuggen programmiert werden. Dann funktioniert das Debuggen aus dem Flash richtig.
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.