www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arm debuggen mit openOCD + Yagart0


Autor: Thorsten F. (thorstenf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche derzeit ein MCB2300 mit lpc2388 Board mit Eclipse, der 
Yagarto Toolchain,openOCD sowie einem Olimex arm-usb-ocd zu bearbeiten 
insbesondere zu debuggen.

Was mich verwirrt ist, dass ich an einem Rechner halbwegs zuverlässig 
debuggen kann, am anderen hab ich es noch nie geschafft. Dabei haben 
beide Rechner identische Versionen. Hier mal die von mir verwendete 
Software:

Cygwin
Yagarto Toolchain
openOCD (Freddie Chopin)
Eclipse Galileo mit Zylin CDT

Der Aufruf von OOCD erhält folgende Argumente:
-f D:\Programme\openOCD\tcl\interface\olimex-arm-usb-ocd.cfg
-f D:\Programme\openOCD\tcl\target\lpc2378.cfg
-c

und ergibt folgende Ausgabe:
Open On-Chip Debugger 0.2.0 (2009-10-26-15:00) Release
$URL: http://svn.berlios.de/svnroot/repos/openocd/tags/openocd-0.2.0/src/openocd.c $
For bug reports, read http://svn.berlios.de/svnroot/repos/openocd/trunk/BUGS
jtag_nsrst_delay: 200
jtag_ntrst_delay: 200
500 kHz
Info : device: 4
Info : deviceID: 364511235
Info : SerialNumber: FTSASBRWA
Info : Description: Olimex OpenOCD JTAG A
Info : JTAG tap: lpc2378.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)
Info : JTAG Tap/device matched
Warn : EmbeddedICE version 7 detected, EmbeddedICE handling might be broken
target state: halted
target halted in ARM state due to breakpoint, current mode: Abort
cpsr: 0xa00000d7 pc: 0x00000084

Bei Aufruf des arm-elf-gdb von Yagarto kriegt er folgende "run" 
Argumente mit:
target remote localhost:3333
monitor sleep 500
monitor poll
monitor flash probe 0
monitor flash erase_sector 0 0 0
monitor flash write_image main.bin 0x0
monitor reset run
monitor sleep 500
monitor soft_reset_halt
monitor arm7_9 force_hw_bkpts enable
symbol-file main.elf
info mem
thbreak main
continue

Und ich erhalte folgende Ausgabe:
Warning: /cygdrive/D/workspace/merses/LCD/.dep: No such file or directory.
Warning: /cygdrive/D/workspace/merses/LCD: No such file or directory.
mi_cmd_break_watch: Missing <expression>
No registers.
target remote localhost:3333
0x00000400 in lcd_print (string=0x8 "xG\300F\355") at LCD.c:293
293    while (*string)  {
monitor sleep 500
monitor poll
background polling: on
TAP: lpc2378.cpu (enabled)
target state: halted
target halted in ARM state due to breakpoint, current mode: Supervisor
cpsr: 0x200000d3 pc: 0x00000400
monitor flash probe 0
flash 'lpc2000' found at 0x00000000
monitor flash erase_sector 0 0 0
erased sectors 0 through 0 on flash bank 0 in 0.546875s
monitor flash write_image main.bin 0x0
Verification will fail since checksum in image(0xea0000e4) written to flash was different from calculated vector checksum(0x26fedf8f).
To remove this warning modify build tools on developer PC to inject correct LPC vector checksum.
wrote 1216 byte from file main.bin in 0.453125s (2.620690 kb/s)
monitor reset run
JTAG tap: lpc2378.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)
JTAG Tap/device matched
monitor sleep 500
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x200000d3 pc: 0x00000000
monitor arm7_9 force_hw_bkpts enable
Unknown command: arm7_9 force_hw_bkpts enable
called at file "command.c", line 469
symbol-file main.elf
Using memory regions provided by the target.
Num Enb Low Addr   High Addr  Attrs 
0   y    0x00000000 0x0007d000 flash blocksize 0x1000 nocache 
1   y    0x0007d000 0x100000000 rw nocache 
info mem
thbreak main
Hardware assisted breakpoint 1 at 0x412: file main.c, line 6.
continue

Bei Erreichen von continue friert das ganze ein. (bleibt bei 27% stehen 
laut eclipse) Auf einem anderen PC funktioniert das Debuggen mit 
identischer Software und Konfiguration "meistens".

Ich hoffe ihr könnt mir ein paar Tips geben was die Ursache sein könnte, 
beziehungsweise wie man das debuggen allgemein stabil hinkriegt. Bisher 
konnte mir leider kein Tutorial wirklich weiterhelfen.

Vielen Dank im Vorraus

Autor: KeinPlan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein paar Anmerkungen zur Software:

>Cygwin
überflüssig
>Yagarto Toolchain
>openOCD (Freddie Chopin)
ok, bei mir hat das dem libusb Treibern nie richtig funktioniert, hab es 
dann selbst mit libftd2xx erstellt. Vielleicht ist das auch das Problem 
bei dir?
>Eclipse Galileo mit Zylin CDT
überflüssig, kann CDT auch.
Install new software: 
http://download.eclipse.org/tools/cdt/releases/galileo
"Eclipse C/C++ GDB Hardware Debugging"

Autor: Thorsten F. (thorstenf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen dank schonmal für die Tips.

Ich hatte schonmal ein neueres OpenOCD gemäß 
http://piconomic.berlios.de/build_openocd.html#OPE... 
erstellt, bin jedoch wieder zurück zu Freddie Choppins Version nachdem 
ich keinen Unterschied feststellen konnte.
Ich bin mir allerdings auch nicht sicher ob es sich um die neueste 
Version handelte, da ich es nicht geschafft habe auf den svn zu 
connecten.

Evtl lief auch beim FTDI Treiber irgendwas schief, als Windows mich nach 
Treibern gefragt hat, wollte er trotzdem die CD von olimex :/

Ich glaube mich zu erinnern dass die binary im "gcc for dummies" auch 
direkt openocd-ftd22xx.exe  hieß? hätte das bei meiner Binary auch der 
Fall sein müssen wenn alles richtig läuft?

edit: Wie bringe ich das mit dem Hardware Debugging Plugin zum laufen? 
Hatte gehofft ich könnte die runcommands einfach übernehmen. Klappt 
allerdings nicht.

Autor: KeinPlan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Prinzip solltest du das einfach übernehmen können. Was genau klappt 
nicht?

Du musst unter Debugger:
arm-elf-gdb
Remote Target: JTAG Generic.
Hostname: localhost Port: 3333


Startup: (ohne gewähr)

Inizialisation:
x Reset and Delay 3s
x Halt

monitor sleep 500
monitor poll
monitor flash probe 0
monitor flash erase_sector 0 0 0
monitor flash write_image main.bin 0x0
monitor reset run
monitor sleep 500
monitor soft_reset_halt
monitor arm7_9 force_hw_bkpts enable
symbol-file main.elf
info mem


x Set breakpoint at: main
x Resume

Autor: KeinPlan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zu Openocd:
Beim selbst erstellen machst du nur die openocd.exe. Du kannst dann die 
openocd.exe von dem Freddie Chopin löschen und deine erstellte 
verwenden.
Die Treiber musst du dann trotzdem von Olimex bzw. direkt von FTDI 
installieren.
Ich habe es übrigends nach der Anleitung erstellt:
http://piconomic.berlios.de/build_openocd.html
Dazu brauchst du cygwin. Für eclipse benötigst du es aber nicht.

Autor: Thorsten F. (thorstenf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok musste noch das commandset umstellen, mit dem Windows commandset 
erkannte er wohl irgendwie "monitor" nicht.

jetzt erhalte ich folgenden Konsolenouput:
No symbol "new" in current context.
target remote localhost:3333
0x00000000 in __lcd_print_from_thumb ()

mi_cmd_break_watch: Missing <expression>
monitor sleep 500
monitor poll
monitor flash probe 0
monitor flash erase_sector 0 0 0
monitor flash write_image main.bin 0x0
monitor reset run
monitor sleep 500
monitor soft_reset_halt
monitor arm7_9 force_hw_bkpts enable
symbol-file main.elf
main.elf: No such file or directory.
info mem
Using memory regions provided by the target.
Num Enb Low Addr   High Addr  Attrs 
0   y    0x00000000 0x0007d000 flash blocksize 0x1000 nocache 
1   y    0x0007d000 0x100000000 rw nocache 
sowie
background polling: on
TAP: lpc2378.cpu (enabled)
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0xa00000d3 pc: 0x00000000
flash 'lpc2000' found at 0x00000000
erased sectors 0 through 0 on flash bank 0 in 0.265625s
Verification will fail since checksum in image(0xea0000e4) written to flash was different from calculated vector checksum(0x26fedf8f).
To remove this warning modify build tools on developer PC to inject correct LPC vector checksum.
wrote 1216 byte from file main.bin in 0.453125s (2.620690 kb/s)
JTAG tap: lpc2378.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)
JTAG Tap/device matched
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0xa00000d3 pc: 0x00000000
Unknown command: arm7_9 force_hw_bkpts enable
called at file "command.c", line 469

Danach hängt das ganze wieder, naja hatte ja nich direkt was mit dem 
eigentlichen Problem zu tun. Ich versuche jetzt erstmal wie das mit 
OpenOCD 0.3.0 aussieht.

Hat evtl jemand eine Erklärung warum er immer noch die Olimex CD für die 
Treiber will obwohl sie eigentlich in cygwin/tmp/ftd2xx vorliegen?

Autor: Thorsten F. (thorstenf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich musste inzwischen feststellen dass auch ein neueres OOCD 0.3.0 mir 
nicht geholfen hat, jetzt sieht es eben so aus:

OOCD anwerfen:
Open On-Chip Debugger 0.3.0 (2009-11-09-14:35)
$URL$
For bug reports, read
  http://openocd.berlios.de/doc/doxygen/bugs.html
User : 5 0 command.c:400 command_print(): debug_level: 3
C:\cygwin\tmp\openocd-0.3.0\src\openocd.exe: option requires an argument -- c
Debug: 6 0 configuration.c:83 find_file(): found C:\cygwin\tmp\openocd-0.3.0\tcl\interface\olimex-arm-usb-ocd.cfg
Debug: 8 0 command.c:68 script_debug(): command - interface
Debug: 9 0 command.c:77 script_debug(): interface - argv[0]=ocd_interface
Debug: 10 0 command.c:77 script_debug(): interface - argv[1]=ft2232
Debug: 12 32 command.c:68 script_debug(): command - ft2232_device_desc
Debug: 13 32 command.c:77 script_debug(): ft2232_device_desc - argv[0]=ocd_ft2232_device_desc
Debug: 14 32 command.c:77 script_debug(): ft2232_device_desc - argv[1]=Olimex OpenOCD JTAG
Debug: 16 32 command.c:68 script_debug(): command - ft2232_layout
Debug: 17 32 command.c:77 script_debug(): ft2232_layout - argv[0]=ocd_ft2232_layout
Debug: 18 32 command.c:77 script_debug(): ft2232_layout - argv[1]=olimex-jtag
Debug: 20 32 command.c:68 script_debug(): command - ft2232_vid_pid
Debug: 21 32 command.c:77 script_debug(): ft2232_vid_pid - argv[0]=ocd_ft2232_vid_pid
Debug: 22 32 command.c:77 script_debug(): ft2232_vid_pid - argv[1]=0x15ba
Debug: 23 32 command.c:77 script_debug(): ft2232_vid_pid - argv[2]=0x0003
Debug: 24 32 configuration.c:83 find_file(): found C:\cygwin\tmp\openocd-0.3.0\tcl\target\lpc2378.cfg
Debug: 26 32 command.c:68 script_debug(): command - jtag_nsrst_delay
Debug: 27 32 command.c:77 script_debug(): jtag_nsrst_delay - argv[0]=ocd_jtag_nsrst_delay
Debug: 28 32 command.c:77 script_debug(): jtag_nsrst_delay - argv[1]=200
User : 29 32 command.c:400 command_print(): jtag_nsrst_delay: 200
Debug: 31 32 command.c:68 script_debug(): command - jtag_ntrst_delay
Debug: 32 32 command.c:77 script_debug(): jtag_ntrst_delay - argv[0]=ocd_jtag_ntrst_delay
Debug: 33 32 command.c:77 script_debug(): jtag_ntrst_delay - argv[1]=200
User : 34 32 command.c:400 command_print(): jtag_ntrst_delay: 200
Debug: 36 32 command.c:68 script_debug(): command - reset_config
Debug: 37 32 command.c:77 script_debug(): reset_config - argv[0]=ocd_reset_config
Debug: 38 32 command.c:77 script_debug(): reset_config - argv[1]=trst_and_srst
Debug: 39 32 command.c:77 script_debug(): reset_config - argv[2]=srst_pulls_trst
User : 40 32 command.c:400 command_print(): trst_and_srst srst_pulls_trst srst_gates_jtag trst_push_pull srst_open_drain
Debug: 41 32 tcl.c:245 jim_newtap_cmd(): Creating New Tap, Chip: lpc2378, Tap: cpu, Dotted: lpc2378.cpu, 8 params
Debug: 42 32 tcl.c:262 jim_newtap_cmd(): Processing option: -irlen
Debug: 43 32 tcl.c:262 jim_newtap_cmd(): Processing option: -ircapture
Debug: 44 32 tcl.c:262 jim_newtap_cmd(): Processing option: -irmask
Debug: 45 32 tcl.c:262 jim_newtap_cmd(): Processing option: -expected-id
Debug: 46 79 core.c:1314 jtag_tap_init(): Created Tap: lpc2378.cpu @ abs position 0, irlen 4, capture: 0x1 mask: 0xf
Debug: 47 79 target.c:4514 jim_target(): Target command params:
Debug: 48 79 target.c:4515 jim_target(): target create lpc2378.cpu arm7tdmi -endian little -chain-position lpc2378.cpu -variant arm7tdmi-s_r4 
Debug: 50 141 command.c:68 script_debug(): command - bank
Debug: 51 141 command.c:77 script_debug(): bank - argv[0]=ocd_flash_bank
Debug: 52 141 command.c:77 script_debug(): bank - argv[1]=lpc2000
Debug: 53 141 command.c:77 script_debug(): bank - argv[2]=0x0
Debug: 54 141 command.c:77 script_debug(): bank - argv[3]=0x0007D000
Debug: 55 141 command.c:77 script_debug(): bank - argv[4]=0
Debug: 56 141 command.c:77 script_debug(): bank - argv[5]=0
Debug: 57 141 command.c:77 script_debug(): bank - argv[6]=lpc2378.cpu
Debug: 58 141 command.c:77 script_debug(): bank - argv[7]=lpc2000_v2
Debug: 59 141 command.c:77 script_debug(): bank - argv[8]=4000
Debug: 60 141 command.c:77 script_debug(): bank - argv[9]=calc_checksum
Debug: 62 282 command.c:68 script_debug(): command - jtag_khz
Debug: 63 282 command.c:77 script_debug(): jtag_khz - argv[0]=ocd_jtag_khz
Debug: 64 282 command.c:77 script_debug(): jtag_khz - argv[1]=500
Debug: 65 282 core.c:1581 jtag_config_khz(): handle jtag khz
Debug: 66 282 core.c:1537 jtag_khz_to_speed(): convert khz to interface specific speed value
User : 67 282 command.c:400 command_print(): 500 kHz
Debug: 69 282 command.c:68 script_debug(): command - init
Debug: 70 282 command.c:77 script_debug(): init - argv[0]=ocd_init
Debug: 71 407 openocd.c:129 handle_init_command(): target init complete
Debug: 72 407 ft2232.c:2109 ft2232_init(): ft2232 interface using shortest path jtag state transitions
Debug: 73 407 ft2232.c:1855 ft2232_init_ftd2xx(): 'ft2232' interface using FTD2XX with 'olimex-jtag' layout (15ba:0003)
Debug: 74 594 ft2232.c:1966 ft2232_init_ftd2xx(): current latency timer: 2
Info : 75 610 ft2232.c:1993 ft2232_init_ftd2xx(): device: 4 "2232C"
Info : 76 610 ft2232.c:1994 ft2232_init_ftd2xx(): deviceID: 364511235
Info : 77 610 ft2232.c:1995 ft2232_init_ftd2xx(): SerialNumber: FTSASBRWA
Info : 78 610 ft2232.c:1996 ft2232_init_ftd2xx(): Description: Olimex OpenOCD JTAG A
Debug: 79 610 ft2232.c:2447 olimex_jtag_init(): 80 08 1b
Debug: 80 610 ft2232.c:2491 olimex_jtag_init(): 82 09 0f
Debug: 81 610 core.c:1537 jtag_khz_to_speed(): convert khz to interface specific speed value
Debug: 82 610 core.c:1541 jtag_khz_to_speed(): have interface set up
Debug: 83 610 ft2232.c:520 ft2232_speed(): 86 0b 00
Debug: 84 625 core.c:1537 jtag_khz_to_speed(): convert khz to interface specific speed value
Debug: 85 625 core.c:1541 jtag_khz_to_speed(): have interface set up
Info : 86 625 core.c:1364 jtag_interface_init(): clock speed 500 kHz
Debug: 87 625 openocd.c:136 handle_init_command(): jtag interface init complete
Debug: 88 625 ft2232.c:1373 olimex_jtag_reset(): trst: 0, srst: 0, high_output: 0x01, high_direction: 0x0f
Debug: 89 625 core.c:702 jtag_add_reset(): SRST line released
Debug: 91 625 core.c:727 jtag_add_reset(): TRST line released
Debug: 92 625 core.c:327 jtag_call_event_callbacks(): jtag event: TAP reset
Debug: 93 1063 core.c:1378 jtag_init_inner(): Init JTAG chain
Debug: 94 1063 core.c:327 jtag_call_event_callbacks(): jtag event: TAP reset
Debug: 95 1063 core.c:1039 jtag_examine_chain(): DR scan interrogation for IDCODE/BYPASS
Debug: 96 1063 core.c:327 jtag_call_event_callbacks(): jtag event: TAP reset
Info : 97 1079 core.c:948 jtag_examine_chain_display(): JTAG tap: lpc2378.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)
Debug: 98 1079 core.c:1204 jtag_validate_ircapture(): IR capture validation scan
Debug: 99 1079 core.c:1257 jtag_validate_ircapture(): lpc2378.cpu: IR capture 0x01
Debug: 100 1079 openocd.c:142 handle_init_command(): jtag init complete
Info : 101 1079 embeddedice.c:206 embeddedice_build_reg_cache(): Embedded ICE version 7
Error: 102 1079 embeddedice.c:256 embeddedice_build_reg_cache(): EmbeddedICE v7 handling might be broken
Debug: 103 1079 embeddedice.c:452 embeddedice_write_reg(): 0: 0x00000000
Debug: 104 1079 arm7_9_common.c:61 arm7_9_clear_watchpoints(): -
Debug: 105 1079 embeddedice.c:452 embeddedice_write_reg(): 12: 0x00000000
Debug: 106 1079 embeddedice.c:452 embeddedice_write_reg(): 20: 0x00000000
Debug: 107 1079 openocd.c:145 handle_init_command(): jtag examine complete
Debug: 108 1079 openocd.c:151 handle_init_command(): flash init complete
Debug: 109 1079 openocd.c:155 handle_init_command(): mflash init complete
Debug: 110 1079 openocd.c:159 handle_init_command(): NAND init complete
Debug: 111 1079 openocd.c:163 handle_init_command(): pld init complete
Debug: 112 1157 gdb_server.c:2243 gdb_init(): gdb service for target arm7tdmi at TCP port 3333

Der Output im Debugger:
Warning: /cygdrive/D/workspace/merses/LCD/.dep: No such file or directory.
Warning: /cygdrive/D/workspace/merses/LCD: No such file or directory.
mi_cmd_break_watch: Missing <expression>
No registers.
target remote localhost:3333
0x00000000 in __lcd_print_from_thumb ()
monitor sleep 500
monitor poll
background polling: on
TAP: lpc2378.cpu (enabled)
target state: running
monitor flash probe 0
flash 'lpc2000' found at 0x00000000
monitor flash erase_sector 0 0 0
Target not halted
failed erasing sectors 0 to 0 (-304)
monitor flash write_image main.bin 0x0
Target not halted
error writing to flash at address 0x00000000 at offset 0x00000000 (-304)

called at file "command.c", line 473
called at file "embedded:startup.tcl", line 89
called at file "embedded:startup.tcl", line 91
called at file "embedded:startup.tcl", line 93
monitor reset run
JTAG tap: lpc2378.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)
monitor sleep 500
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x000000d3 pc: 0x00000000
monitor arm7_9 force_hw_bkpts enable
Unknown command: arm7_9 force_hw_bkpts enable
called at file "command.c", line 473
symbol-file main.elf
Using memory regions provided by the target.
Num Enb Low Addr   High Addr  Attrs 
0   y    0x00000000 0x0007d000 flash blocksize 0x1000 nocache 
1   y    0x0007d000 0x100000000 rw nocache 
info mem
thbreak main
Hardware assisted breakpoint 1 at 0x412: file main.c, line 6.
continue

Ich glaube dass es bei OOCD 0.3.0 derzeit allgemein noch Probleme gibt, 
unter anderem auch deshalb weil es mir vorher wenigstens möglich war 
erfolgreich den Flash zu löschen/füllen, aber trotz neuinstallation der 
FTDI Treiber funktioniert es nach wie vor auch nicht mit OOCD 0.2.0

Wie kann ich den verifizieren ob ich die richtigen Treiber habe?
Oder hat sonst noch jemand Theorien woran es liegen könnte?

Vielen Dank im Vorraus!

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

Bewertung
0 lesenswert
nicht lesenswert
Das Ganze sieht doch nicht so schlecht aus. Denke nicht, dass 
herumprobieren mit verschiedenen FTDI-Treiberversionen etwas bringt.

Da flash erase_sector und flash write_image mit "Target not haltet" 
quittiert wird, scheint ein monitor soft_reset_halt vor Verwendung 
dieser Anweisungen angebracht. Weiter unten in der gezeigten Ausgabe 
erkannt man, dass soft_reset_halt offensichtlich funktioniert und das 
Target in den halt-mode bringt (nur zu spät für erase u. write).

arm7_9 force_hw_bkpts enable sollte inzwischen überflüssig sein und wird 
auch nicht "verstanden" - Fehlermeldung deutet darauf hin. In der 
Standardeinstellung kann gdb inzwischen von OpenOCD erfragen, in welchem 
Speicherbereich HW-Breakpoints erforderlich sind und setzt automatisch 
HW-Breakpoints falls erforderlich (und sofern seitens Controller noch 
welche verfügbar).

Autor: Anselm 68 (anselm68)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also meinen Arm würd ich, wenn schon, von einem Orthopäden "debuggen" 
lassen ggg

Autor: Thorsten F. (thorstenf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Tipps, auch wenn sie mich bisher leider noch nicht 
zum erwünschten Erfolg geführt haben.

Nach einfügen eines soft_reset_halt sieht mein Output mittlerweile 
folgendermaßen aus:
Warning: /cygdrive/D/workspace/merses/LCD/.dep: No such file or directory.
Warning: /cygdrive/D/workspace/merses/LCD: No such file or directory.
mi_cmd_break_watch: Missing <expression>
No registers.
target remote localhost:3333
0x7fffe152 in ?? ()
monitor sleep 500
monitor poll
background polling: on
TAP: lpc2378.cpu (enabled)
target state: halted
target halted in Thumb state due to debug-request, current mode: Supervisor
cpsr: 0xa00000f3 pc: 0x7fffe152
monitor flash probe 0
flash 'lpc2000' found at 0x00000000
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0xa00000d3 pc: 0x00000000
monitor flash erase_sector 0 0 0
erased sectors 0 through 0 on flash bank 0 in 0.296875s
monitor flash write_image main.bin 0x0
Verification will fail since checksum in image(0xea0000e4) written to flash was different from calculated vector checksum(0x26fedf8f).
To remove this warning modify build tools on developer PC to inject correct LPC vector checksum.
wrote 1216 byte from file main.bin in 0.500000s (2.375000 kb/s)
monitor reset run
JTAG tap: lpc2378.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)
JTAG Tap/device matched
monitor sleep 500
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0xa00000d3 pc: 0x00000000
symbol-file main.elf
info mem
Using memory regions provided by the target.
Num Enb Low Addr   High Addr  Attrs 
0   y    0x00000000 0x0007d000 flash blocksize 0x1000 nocache 
1   y    0x0007d000 0x100000000 rw nocache 
thbreak main
Hardware assisted breakpoint 1 at 0x412: file main.c, line 6.
continue

So sieht es aber irgendwie nur beim jeweils ersten Versuch aus, 
ansonsten hängt das ganze etwas:
Warning: /cygdrive/D/workspace/merses/LCD/.dep: No such file or directory.
Warning: /cygdrive/D/workspace/merses/LCD: No such file or directory.
mi_cmd_break_watch: Missing <expression>
No registers.
target remote localhost:3333
0x00000004 in __lcd_print_from_thumb ()
monitor sleep 500
monitor poll
background polling: on
TAP: lpc2378.cpu (enabled)
target state: halted
target halted in ARM state due to debug-request, current mode: Undefined
cpsr: 0xa00000db pc: 0x00000004
monitor flash probe 0
flash 'lpc2000' found at 0x00000000
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0xa00000d3 pc: 0x00000000
monitor flash erase_sector 0 0 0
timed out while waiting for target halted
lpc2000 prepare sectors returned 11681144
failed erasing sectors 0 to 0 (-902)
monitor flash write_image main.bin 0x0
Target not halted
error writing to flash at address 0x00000000 at offset 0x00000000 (-304)

called at file "command.c", line 469
called at file "embedded:startup.tcl", line 89
called at file "embedded:startup.tcl", line 91
called at file "embedded:startup.tcl", line 93
monitor reset run
JTAG tap: lpc2378.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)
JTAG Tap/device matched
monitor sleep 500
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0xa00000d3 pc: 0x00000000
symbol-file main.elf
info mem
Using memory regions provided by the target.
Num Enb Low Addr   High Addr  Attrs 
0   y    0x00000000 0x0007d000 flash blocksize 0x1000 nocache 
1   y    0x0007d000 0x100000000 rw nocache 
thbreak main
Hardware assisted breakpoint 1 at 0x412: file main.c, line 6.
continue

Scheinbar hängt das ganze Board dann irgendwie. Ohne Neustart bzw hard 
reset erhalte ich dann immer diesen Block:
monitor flash erase_sector 0 0 0
timed out while waiting for target halted
lpc2000 prepare sectors returned 11681144
failed erasing sectors 0 to 0 (-902)
monitor flash write_image main.bin 0x0
Target not halted
error writing to flash at address 0x00000000 at offset 0x00000000 (-304)

edit: Wird ja immer lustiger hab noch ne neue Fehlermeldung bekommen 
ohne (bewusst?) etwas verändert zu haben:
memory write caused data abort (address: 0x40000008, size: 0x4, count: 0x6)
lpc2000 prepare sectors returned 11721968
failed erasing sectors 0 to 0 (-902)

Autor: Thorsten F. (thorstenf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sry für Doppelpost, leider fehlt der Button zum editieren.

Inzwischen habe ich immer diese Fehlermeldung im ouput:
Warning: /cygdrive/D/workspace/merses/LCD/.dep: No such file or directory.
Warning: /cygdrive/D/workspace/merses/LCD: No such file or directory.
mi_cmd_break_watch: Missing <expression>
No registers.
target remote localhost:3333
lcd_print (string=0x20000000 "0@-\351") at LCD.c:292
292  {
monitor sleep 500
monitor poll
background polling: on
TAP: lpc2378.cpu (enabled)
target state: halted
target halted in ARM state due to debug-request, current mode: Abort
cpsr: 0x400000d7 pc: 0x000003e8
monitor flash probe 0
flash 'lpc2000' found at 0x00000000
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x400000d3 pc: 0x00000000
monitor flash erase_sector 0 0 0
memory write caused data abort (address: 0x40000000, size: 0x4, count: 0x2)
lpc2000 prepare sectors returned -307
failed erasing sectors 0 to 0 (-902)
monitor flash write_image main.bin 0x0
Verification will fail since checksum in image(0xea0000e4) written to flash was different from calculated vector checksum(0x26fedf8f).
To remove this warning modify build tools on developer PC to inject correct LPC vector checksum.
wrote 1216 byte from file main.bin in 0.453125s (2.620690 kb/s)
monitor reset run
JTAG tap: lpc2378.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)
JTAG Tap/device matched
monitor sleep 500
monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x400000d3 pc: 0x00000000
symbol-file main.elf
Using memory regions provided by the target.
Num Enb Low Addr   High Addr  Attrs 
info mem
0   y    0x00000000 0x0007d000 flash blocksize 0x1000 nocache 
1   y    0x0007d000 0x100000000 rw nocache 
Hardware assisted breakpoint 1 at 0x412: file main.c, line 6.
thbreak main
continue

Also gibt es wohl trotz halt noch Probleme mit dem Flashzugriff :/

Autor: Thorsten F. (thorstenf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal entschuldigung wenn ich diesen Thread wieder aus der Versenkung 
hole, aber ich bin leider immer noch nicht schlauer geworden.

Vor allem verwirrt mich, ich habe das ganze jetzt auf 4 verschiedenen 
Rechnern eingerichtet, jeweils nach der exakt selben vorgehensweise:

cygwin installiert (wegen make)
eclipse cdt
yagarto
gnuarm eclipse plugin + zylin plugin
openOCD 0.2.0 SR1 von Freddie Choppins seite
Lib-USB w32
Originaltreiber von Olimex für den Arm-usb-ocd

Allerdings funktioniert es auf einem Rechner sehr stabil, auf einem 
anderen halbwegs. Auf zwei weiteren erhalte ich entweder die 
Fehlermeldungen

lpc2000 prepare sectors returned -307
failed erasing sectors 0 to 0 (-902)

oder es hängt einfach bei continue. Ich habe alle Versionen 
untereinander verglichen und sie sind identisch. Hat jemand eine Idee 
woran es noch liegen könnte?

vielen dank im vorraus!

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.