Edit: ähem, nö, da klappt noch was nicht!
Das muss so (ungefähr) aussehen:
1 | Open On-Chip Debugger 0.9.0-dev-00363-g3dd4da9-dirty (2015-04-09-13:29)
|
2 | Licensed under GNU GPL v2
|
3 | For bug reports, read
|
4 | http://openocd.sourceforge.net/doc/doxygen/bugs.html
|
5 | adapter speed: 500 kHz
|
6 | Info : only one transport option; autoselect 'swd'
|
7 | adapter speed: 500 kHz
|
8 | adapter_nsrst_delay: 100
|
9 | cortex_m reset_config sysresetreq
|
10 | Info : CMSIS-DAP: SWD Supported
|
11 | Info : CMSIS-DAP: JTAG Supported
|
12 | Info : CMSIS-DAP: Interface Initialised (SWD)
|
13 | Info : CMSIS-DAP: FW Version = 01.16.0041
|
14 | Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 1 TDO = 1 nTRST = 0 nRESET = 1
|
15 | Info : CMSIS-DAP: Interface ready
|
16 | Info : clock speed 500 kHz
|
17 | Info : SWD IDCODE 0x2ba01477
|
18 | Info : sam4.cpu: hardware has 6 breakpoints, 4 watchpoints
|
(Hier ist es ein SAM4.)
Kabel auf die richtige Seite gesteckt? Steckerbelegung am Target
OK?
Erst, wenn das funktioniert (OpenOCD sitzt da und harrt der Dinge,
die da kommen mögen), hier weiterlesen:
-------------------------------
OK, jetzt kannst du da auf Port 3333 den GDB verbinden oder auf Port
4444 dich mit telnet draufsetzen und dann sagen:
1 | halt
|
2 | flash write_image <myfile.elf>
|
3 | reset run
|
4 | exit
|
Alternativ benutze ich sowas als Script:
1 | #!/bin/sh
|
2 |
|
3 | if [ ! -f "$1" ] ; then
|
4 | echo "Input file $1 not found" >&2
|
5 | exit 65
|
6 | fi
|
7 |
|
8 | echo openocd -c 'gdb_port 9999; telnet_port 9998; tcl_port 9997; adapter_khz 500; interface cmsis-dap; source [find target/at91sam4sXX.cfg]; program '"$1"' reset exit'
|
9 | openocd -c 'gdb_port 9999; telnet_port 9998; tcl_port 9997; adapter_khz 500; interface cmsis-dap; source [find target/at91sam4sXX.cfg]; program '"$1"' reset exit'
|
Dann einfach aufrufen mit „scriptname myfile.elf“. Das Umsetzen der
Ports am Beginn des Scripts verhindert Kollisionen mit einem
eventuell noch separat laufenden OpenOCD-Prozess; wenn dir das sowieso
nicht passieren kann, kannst du das auch weglassen. Man könnte die
Portnummern auch noch zufällig auswürfeln, um mehrere Scripts
parallel laufen zu lassen, aber dann musst du noch die Seriennummern
der Atmel-ICEs mit angeben (OpenOCD-Kommando: „cmsis_dap_serial $nr“).
Der reine Kommandomodus da oben ist vor allem wichtig, wenn man damit
dann debuggen möchte. Und natürlich um zu sehen, dass alles klappt.