Forum: Mikrocontroller und Digitale Elektronik OpenOCD. AtmelICE und Linux


von gauna (Gast)


Lesenswert?

Hallo,

ich verwende OpenSUSE 42.3, openocd 0.10.0 und einen Atmel ICD Debugger 
(idVendor=03eb, idProduct=2141) mit Eclipse um einen AT91sam3ax8e von 
Atmel zu debuggen.

Versuche ich das Programm auf den Chip zu flashen und anschließend zu 
debuggen, gibt mir openocd eine Reihe Meldungen zurück um dann irgendwo 
vor dem Start des Programms stehen zu bleiben.

Starte ich einmalig das AVRStudio (in einer virtuellen Maschine mit 
Win10) und spiele einen x-beliebigen Code auf den Chip, kann ich im 
Anschluss (die virtuelle Maschine ist wieder aus) auch mit Eclipse unter 
Linux alles wunderbar flashen und debuggen, bis ich einen Neustart 
meines Rechners durchführe. Jetzt würden mich die Einstellungen 
interessieren, die AVRStudio offenbar vornimmt.


Jemand eine Idee?

Danke und Grüße

Hier meine CFG-Datei
1
source [find interface/cmsis-dap.cfg]
2
3
transport select jtag
4
5
set CHIPNAME at91sam3ax8e
6
7
source [find target/at91sam3ax_8x.cfg]
8
9
$_TARGETNAME configure -event gdb-attach {
10
   halt
11
 }
12
 $_TARGETNAME configure -event gdb-attach {
13
   reset init
14
 }
15
16
 gdb_memory_map enable
17
 gdb_flash_program enable

und hier die Rückmeldung beim Debuggen vor der Ausführung von AVRStudi
1
Open On-Chip Debugger 0.10.0
2
Licensed under GNU GPL v2
3
For bug reports, read
4
  http://openocd.org/doc/doxygen/bugs.html
5
adapter speed: 500 kHz
6
adapter_nsrst_delay: 100
7
jtag_ntrst_delay: 100
8
cortex_m reset_config sysresetreq
9
Started by GNU MCU Eclipse
10
Info : CMSIS-DAP: SWD  Supported
11
Info : CMSIS-DAP: JTAG Supported
12
Info : CMSIS-DAP: Interface Initialised (JTAG)
13
Info : CMSIS-DAP: FW Version = 01.21.0076
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 : cmsis-dap JTAG TLR_RESET
18
Info : cmsis-dap JTAG TLR_RESET
19
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
20
Info : at91sam3ax8e.cpu: hardware has 6 breakpoints, 4 watchpoints
21
Info : accepting 'gdb' connection on tcp/3333
22
Info : cmsis-dap JTAG TLR_RESET
23
Info : cmsis-dap JTAG TLR_RESET
24
Info : cmsis-dap JTAG TLR_RESET
25
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
26
target halted due to debug-request, current mode: Thread 
27
xPSR: 0x01000000 pc: 0x0010004c msp: 0x20001000
28
Info : cmsis-dap JTAG TLR_RESET
29
Info : cmsis-dap JTAG TLR_RESET
30
Info : cmsis-dap JTAG TLR_RESET
31
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
32
target halted due to debug-request, current mode: Thread 
33
xPSR: 0x01000000 pc: 0x0010004c msp: 0x20001000
34
semihosting is enabled
35
Info : sam3 auto-erases while programming (request ignored)
36
Warn : keep_alive() was not invoked in the 1000ms timelimit. GDB alive packet not sent! (4671). Workaround: increase "set remotetimeout" in GDB
37
Info : cmsis-dap JTAG TLR_RESET
38
Info : cmsis-dap JTAG TLR_RESET
39
Info : cmsis-dap JTAG TLR_RESET
40
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
41
target halted due to debug-request, current mode: Thread 
42
xPSR: 0x01000000 pc: 0x0010004c msp: 0x20001000, semihosting
43
Info : cmsis-dap JTAG TLR_RESET
44
Info : cmsis-dap JTAG TLR_RESET
45
Info : cmsis-dap JTAG TLR_RESET
46
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
47
target halted due to debug-request, current mode: Thread 
48
xPSR: 0x01000000 pc: 0x0010004c msp: 0x20001000, semihosting
49
===== arm v7m registers
50
(0) r0 (/32): 0x000000FF
51
(1) r1 (/32): 0x20000790
52
(2) r2 (/32): 0x200008E5
53
(3) r3 (/32): 0x00000000
54
(4) r4 (/32): 0x2000096C
55
(5) r5 (/32): 0x200008E5
56
(6) r6 (/32): 0x00000002
57
(7) r7 (/32): 0x200008E7
58
(8) r8 (/32): 0x2000096C
59
(9) r9 (/32): 0x05040001
60
(10) r10 (/32): 0x71200440
61
(11) r11 (/32): 0x0021411A
62
(12) r12 (/32): 0x00000000
63
(13) sp (/32): 0x20001000
64
(14) lr (/32): 0xFFFFFFFF
65
(15) pc (/32): 0x0010004C
66
(16) xPSR (/32): 0x01000000
67
(17) msp (/32): 0x20001000
68
(18) psp (/32): 0x49210920
69
(19) primask (/1): 0x00
70
(20) basepri (/8): 0x00
71
(21) faultmask (/1): 0x00
72
(22) control (/2): 0x00
73
===== Cortex-M DWT registers
74
(23) dwt_ctrl (/32)
75
(24) dwt_cyccnt (/32)
76
(25) dwt_0_comp (/32)
77
(26) dwt_0_mask (/4)
78
(27) dwt_0_function (/32)
79
(28) dwt_1_comp (/32)
80
(29) dwt_1_mask (/4)
81
(30) dwt_1_function (/32)
82
(31) dwt_2_comp (/32)
83
(32) dwt_2_mask (/4)
84
(33) dwt_2_function (/32)
85
(34) dwt_3_comp (/32)
86
(35) dwt_3_mask (/4)
87
(36) dwt_3_function (/32)
88
Info : DAP transaction stalled (WAIT) - slowing down


und hier danach
1
Open On-Chip Debugger 0.10.0
2
Licensed under GNU GPL v2
3
For bug reports, read
4
  http://openocd.org/doc/doxygen/bugs.html
5
adapter speed: 500 kHz
6
adapter_nsrst_delay: 100
7
jtag_ntrst_delay: 100
8
cortex_m reset_config sysresetreq
9
Started by GNU MCU Eclipse
10
Info : CMSIS-DAP: SWD  Supported
11
Info : CMSIS-DAP: JTAG Supported
12
Info : CMSIS-DAP: Interface Initialised (JTAG)
13
Info : CMSIS-DAP: FW Version = 01.21.0076
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 : cmsis-dap JTAG TLR_RESET
18
Info : cmsis-dap JTAG TLR_RESET
19
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
20
Info : at91sam3ax8e.cpu: hardware has 6 breakpoints, 4 watchpoints
21
Info : accepting 'gdb' connection on tcp/3333
22
Info : cmsis-dap JTAG TLR_RESET
23
Info : cmsis-dap JTAG TLR_RESET
24
Info : cmsis-dap JTAG TLR_RESET
25
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
26
target halted due to debug-request, current mode: Thread 
27
xPSR: 0x01000000 pc: 0x00080154 msp: 0x20000850
28
Info : cmsis-dap JTAG TLR_RESET
29
Info : cmsis-dap JTAG TLR_RESET
30
Info : cmsis-dap JTAG TLR_RESET
31
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
32
target halted due to debug-request, current mode: Thread 
33
xPSR: 0x01000000 pc: 0x00080154 msp: 0x20000850
34
semihosting is enabled
35
Info : sam3 auto-erases while programming (request ignored)
36
Warn : keep_alive() was not invoked in the 1000ms timelimit. GDB alive packet not sent! (4663). Workaround: increase "set remotetimeout" in GDB
37
Info : cmsis-dap JTAG TLR_RESET
38
Info : cmsis-dap JTAG TLR_RESET
39
Info : cmsis-dap JTAG TLR_RESET
40
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
41
target halted due to debug-request, current mode: Thread 
42
xPSR: 0x01000000 pc: 0x00080164 msp: 0x20000f10, semihosting
43
Info : cmsis-dap JTAG TLR_RESET
44
Info : cmsis-dap JTAG TLR_RESET
45
Info : cmsis-dap JTAG TLR_RESET
46
Info : JTAG tap: at91sam3ax8e.cpu tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
47
target halted due to debug-request, current mode: Thread 
48
xPSR: 0x01000000 pc: 0x00080164 msp: 0x20000f10, semihosting
49
===== arm v7m registers
50
(0) r0 (/32): 0x00080420
51
(1) r1 (/32): 0x00000000
52
(2) r2 (/32): 0x400E0E00
53
(3) r3 (/32): 0x0000FFFF
54
(4) r4 (/32): 0x00000000
55
(5) r5 (/32): 0x80000000
56
(6) r6 (/32): 0x20000704
57
(7) r7 (/32): 0x00100000
58
(8) r8 (/32): 0x00000100
59
(9) r9 (/32): 0x05040001
60
(10) r10 (/32): 0x20000004
61
(11) r11 (/32): 0x00000001
62
(12) r12 (/32): 0x20000800
63
(13) sp (/32): 0x20000F10
64
(14) lr (/32): 0xFFFFFFFF
65
(15) pc (/32): 0x00080164
66
(16) xPSR (/32): 0x01000000
67
(17) msp (/32): 0x20000F10
68
(18) psp (/32): 0x49210920
69
(19) primask (/1): 0x00
70
(20) basepri (/8): 0x00
71
(21) faultmask (/1): 0x00
72
(22) control (/2): 0x00
73
===== Cortex-M DWT registers
74
(23) dwt_ctrl (/32)
75
(24) dwt_cyccnt (/32)
76
(25) dwt_0_comp (/32)
77
(26) dwt_0_mask (/4)
78
(27) dwt_0_function (/32)
79
(28) dwt_1_comp (/32)
80
(29) dwt_1_mask (/4)
81
(30) dwt_1_function (/32)
82
(31) dwt_2_comp (/32)
83
(32) dwt_2_mask (/4)
84
(33) dwt_2_function (/32)
85
(34) dwt_3_comp (/32)
86
(35) dwt_3_mask (/4)
87
(36) dwt_3_function (/32)

von Christopher J. (christopher_j23)


Lesenswert?

Als erstes würde ich da mal Semihosting verdächtigen. Hast du mal 
versucht mit einem "normalen" OpenOCD eine Verbindung herzustellen, also 
nicht aus Eclipse heraus?

von gauna (Gast)


Lesenswert?

Hallo,

ja, ich habe es auch mal per telnet und openocd probiert. Ergebnis ist 
gleich.
Nach meinem Post habe ich mich nochmal genauer rangesetzt. Man sieht 
anhand der Ausgaben, das der PC einmal bei 0x0010004c und bei 0x00080164 
zum stehen kommt. Ersterer liegt im Flash, zweiterer im ROM (irgendein 
Bootloader). Nach der Erkenntnis bin ich über die Atmel-Spezialtät der 
GPNVM bits gestoßen, die ich nicht auf dem Schirm hatte (Momentan 
hauptsächlich Infineon-ARMs), die den Bootvorgang kontrollieren. 
Ausgelesen über telnet stehen diese zwar richtig für einen Boot aus dem 
Flash. Der Schein trügt aber offensichtlich. Nach einem Toggle des 
betreffenden Bits geht es jetzt jedenfalls schon mal. Jetzt fehlt nur 
noch die Integration dieses Toggelns in mein Cfg-File. Aufgrund der für 
mich etwas dürftigen Dokumentation von openocd komme ich an der Stelle 
nicht weiter, aber damit kann ich leben.

Grüße

von Jim M. (turboj)


Lesenswert?

Mach mal vor dem Flashen manuell ein "reset init".

Im cfg oben sehe ich nicht ob da am Ende "halt" rauskommt, denn da wird 
versucht den gdb-attach event 2x zu setzen, das dürfte schief gehen.

Ansonsten: Addressen und Werte aus dem Datenblatt/Referenzhandbuch 
auslesen und per mww in den µC reinschreiben.

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
Noch kein Account? Hier anmelden.