Forum: Mikrocontroller und Digitale Elektronik Sam3S+openocd+gdb+GPNVM1 = Hardfault


von Arne Helms (Gast)


Lesenswert?

Hi,

ich habe vor, einen ATmel SAM3S Cortex M3 mit Openocd zu debuggen und zu 
programmieren. Ziel soll es sein, das Board nicht mit SAM-BA 
programmieren zu müssen. Damit das geflashte Programm läuft, muss das 
Flag GPNVM1 gesetzt sein.

Wenn es nicht gesetzt ist, kann ich das Programm über OpenOCD laden und 
ohne Probleme debuggen.

Ist es gesetzt, kann ich den Chip zwar flashen, aber der Debugger hängt 
sofort im Hardfault-handler. Nach einem Reset durch Power Off/On und 
ohne dass GDB auf den Chip will, startet das neu geflashte Programm ohne 
Probleme.
1
target remote localhost:3333
2
0x004033d4 in ResetException () at lowlevel/board_cstartup_gnu.c:137
3
137      LowLevelInit() ;
4
monitor sleep 500
5
monitor halt
6
monitor poll
7
monitor gdb_breakpoint_override soft
8
set mem inaccessible-by-default off
9
tbreak main
10
Temporary breakpoint 1 at 0x401186: file main.c, line 230.
11
continue
12
Note: automatically using hardware breakpoints for read-only addresses.
13
14
Program received signal SIGINT, Interrupt.
15
0x0040373a in HardFault_Handler () at libraries/libchip_sam3s/source/exceptions.c:112
16
112      __asm volatile

Hat jemand eine Idee, was ich tun kann, damit ich auch ein aus dem Flash 
startendes Programm debuggen kann?

Mit freundlichen Grüßen,

Arne

von Jim M. (turboj)


Lesenswert?

> monitor gdb_breakpoint_override soft

Nimm das mal raus, und mach aus "tbreak main" ein "thbreak main". Cortex 
M3 möchte Hardware Breakpoints fürs Flash benutzen.

Welche OpenOCD Version benutzt Du?

von Arne Helms (Gast)


Lesenswert?

Hi Jim,

ich benutze OpenOCD 0.60

ich bekommen jetzt folgendes log:
1
ResetException () at lowlevel/board_cstartup_gnu.c:133
2
133  {
3
monitor reset init
4
monitor sleep 500
5
monitor halt
6
set mem inaccessible-by-default off
7
load C:\\Users\\ark\\entwicklung\\eclipse_workspace\\CrystalAnalyzer_revA\\flash.elf 
8
Loading section .text, size 0xb440 lma 0x400000
9
Loading section .relocate, size 0x8a0 lma 0x40b440
10
Start address 0x4033d1, load size 48352
11
Transfer rate: 11 KB/sec, 12088 bytes/write.
12
continue
13
14
Program received signal SIGINT, Interrupt.
15
0x0040373a in HardFault_Handler () at libraries/libchip_sam3s/source/exceptions.c:112
16
112      __asm volatile
Das Problem besteht weiter noch. Bei Eclipse weiß ich nicht wir ich aus 
einem tbreak ein thbreak machen soll. Ich habe den Haken bei 
Breakpoint@main einfach mal gelöscht.

Hat noch jemand eine Idee?

Viele Grüße,

Arne

von Jim M. (turboj)


Lesenswert?

Arne Helms schrieb:
> benutze OpenOCD 0.60

Die ist aber schon längst nicht mehr aktuell. Versuch mal die 0.8.0 oder 
die 0.9-0-dev bei 
http://www.freddiechopin.info/en/download/category/10-openocd-dev

von Arne Helms (Gast)


Lesenswert?

Das ist übrigens das, was mein OpenOCD sagt, wenn er den Chip über GDB 
programmieren soll und das GPNVM gesetzt ist.

OpenOCD:
1
Info : accepting 'gdb' connection from 3333
2
Info : JTAG tap: sam3.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00
3
, ver: 0x4)
4
target state: halted
5
target halted due to debug-request, current mode: Thread
6
xPSR: 0x01000000 pc: 0x004033d4 msp: 0x2000bffc
7
Warn : acknowledgment received, but no packet pending
8
sam3-gpnvm0: 0
9
sam3-gpnvm1: 1
10
Info : JTAG tap: sam3.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00
11
, ver: 0x4)
12
target state: halted
13
target halted due to debug-request, current mode: Thread
14
xPSR: 0x01000000 pc: 0x37363238 msp: 0x50323120
15
background polling: on
16
TAP: sam3.cpu (enabled)
17
target state: halted
18
target halted due to debug-request, current mode: Thread
19
xPSR: 0x01000000 pc: 0x37363238 msp: 0x50323120
20
Info : sam3 auto-erases while programming (request ignored)
21
Error: sam3.cpu -- clearing lockup after double fault
22
Polling target sam3.cpu failed, GDB will be halted. Polling again in 100ms
23
Error: JTAG-DP STICKY ERROR
24
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
25
Error: JTAG-DP STICKY ERROR
26
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
27
Warn : Block read error address 0xfffffff8
28
Error: JTAG-DP STICKY ERROR
29
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
30
Error: JTAG-DP STICKY ERROR
31
Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
32
Warn : Block read error address 0xfffffff8
33
Polling target sam3.cpu succeeded again
34
Info : dropped 'gdb' connection

GDB:
1
target remote localhost:3333
2
ResetException () at lowlevel/board_cstartup_gnu.c:133
3
133  {
4
monitor at91sam3 gpnvm set 1
5
monitor reset init
6
monitor sleep 500
7
monitor halt
8
monitor poll
9
set mem inaccessible-by-default off
10
continue
11
12
Program received signal SIGINT, Interrupt.
13
0x0040373e in HardFault_Handler () at libraries/libchip_sam3s/source/exceptions.c:112
14
112      __asm volatile
15
kill

von Arne Helms (Gast)


Lesenswert?

noch jemand mit Ideen?

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.