Forum: Mikrocontroller und Digitale Elektronik OpenOCD: AT91SAM7A3 bleibt nach Programmierung im Reset


von Daniel J. (deejay)


Lesenswert?

Moin,

ich habe hier folgende Situation: Und zwar programmiere ich einen 
AT91SAM7A3 mit OpenOCD (2007-09-05 09:00 CEST) via Wiggler unter Ubuntu 
mit der OpenOCD-Konfiguration, die es auf der Seite von Martin Thomas 
gibt.

Das Programmieren funktioniert soweit. Allerdings startet das Programm 
nicht automatisch, sondern der Reset bleibt low. Erst nachdem ich 
entweder die Versorgungsspannung wegnehme und wieder anlege oder 
alternativ den Wiggler abziehe, wird das Programm ausgeführt.
Da ich mit der gleichen OpenOCD-Konfiguration problemlos AT91SAM7S 
programmiere und hier das Programm direkt nach der Programmierung 
ausgeführt wird, bin ich ein wenig ratlos...

Hier nochmal die Skripte für OpenOCD:
openocd_at91sam7a3_flash.script:
--------------------------------
1
halt
2
sleep 10
3
wait_halt
4
5
6
# Init - taken form the script openocd_at91sam7_ecr.script 
7
mww 0xfffffd44 0x00008000  # disable watchdog
8
mww 0xfffffd08 0xa5000001  # enable user reset
9
mww 0xfffffc20 0x00000601  # CKGR_MOR : enable the main oscillator
10
sleep 10
11
mww 0xfffffc2c 0x00481c0e   # CKGR_PLLR: 96.1097 MHz
12
sleep 10
13
mww 0xfffffc30 0x00000007  # PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
14
sleep 10
15
mww 0xffffff60 0x003c0100  # MC_FMR: flash mode (FWS=1,FMCN=60)
16
# arm7_9 force_hw_bkpts enable  # program resides in flash
17
18
# AT91SAM7 flash command-"batch"
19
arm7_9 dcc_downloads enable
20
flash probe 0
21
flash write 0 ../bin/main.bin 0x0
22
#flash erase 0 0 15
23
24
sleep 10
25
reset run
26
sleep 10
27
halt
28
sleep 10
29
mww 0xfffffd08 0xa5000000  # disable user reset
30
reset run
31
sleep 10
32
poll
33
shutdown

openocd_at91sam7a3_flash_wiggler.cfg:
-------------------------------------
1
telnet_port 4444
2
gdb_port 3333
3
4
interface parport
5
parport_port /dev/parport0
6
parport_cable wiggler
7
# try to increase value after jtag_speed if programming does not work!
8
jtag_speed 0
9
# try to increase value after jtag_nsrst_delay if programming does not work!
10
jtag_nsrst_delay 50
11
12
#use combined on interfaces or targets that can't set TRST/SRST separately
13
reset_config srst_only srst_pulls_trst
14
15
#jtag scan chain
16
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
17
jtag_device 4 0x1 0xf 0xe
18
19
#target configuration
20
daemon_startup reset
21
22
#target <type> <startup mode>
23
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
24
target arm7tdmi little run_and_init 0 arm7tdmi
25
run_and_halt_time 0 30
26
27
# flash-options AT91
28
target_script 0 reset openocd_at91sam7a3_flash.script
29
working_area 0 0x00200000 0x4000 nobackup
30
flash bank at91sam7 0 0 0 0 0

Ich habe mich auch schonmal testweise an einem Reset-Skript versucht, 
das nur den Mikrocontroller resettet (per JTAG). Für einen Moment läuft 
während der Skript-Abarbeitung dann auch das Programm, aber sobald mit 
"shutdown" das Skript endet, landet der Controller wieder im Reset. Mit 
entsprechenden Delays kann man eindeutig feststellen, dass der 
Controller hingegen vor dem shutdown nicht im Reset hängt...

Was muss ich ändern / hinzufügen, damit das Programm nach dem Flashen 
des AT91SAM7A3 automatisch startet? Ich bin für jeden Tipp dankbar.

Gruß,
 Daniel

von Daniel J. (deejay)


Lesenswert?

hochschieb

Hat keine eine Idee?

von OR (Gast)


Lesenswert?

Hallo,

bei mir führe ich nach dem flashen:

reset run
resume
exit

aus.

Grüße
Oliver

von Daniel J. (deejay)


Lesenswert?

Hi,

danke für den Tipp, aber leider führt das dazu, dass sich OpenOCD nicht 
beendet. Der µC läuft zwar dann und führt das Programm aus, aber der 
OpenOCD-Aufruf wird nicht beendet... Mit "shutdown" statt "exit" beendet 
OpenOCD, aber dann hängt auch wieder der µC im Reset.

Gruß,
 Daniel

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.