Forum: Mikrocontroller und Digitale Elektronik Probleme mit openocd - AT91SAM7X und OS X


von Andreas del Galdo (Gast)


Lesenswert?

Hallo,

ich habe openocd unter intel-OS X folgendermaßen compiliert:
 ./configure --enable-ft2232_libftdi --prefix=/usr/local/arm

Vorher habe ich natürlich die libftdi und die libusb compiliert.

Nach einem aufruf von "openocd -f OCD_FLASH_ARM7.cfg -d" erhalte ich 
folgende Fehlermeldung bzw. Debugausgabe:

====================================
Info:    openocd.c:86 main(): Open On-Chip Debugger (2007-04-26 16:40 
CEST)
Debug:   jtag.c:1389 jtag_init(): -
Debug:   ft2232.c:1420 ft2232_init_libftdi(): 'ft2232' interface using 
libftdi with 'usbjtag' layout (0403:6010)
Debug:   ft2232.c:1462 ft2232_init_libftdi(): current latency timer: 2
Debug:   ft2232.c:1625 usbjtag_init(): 80 18 1b
Debug:   ft2232.c:252 ft2232_speed(): 86 00 00
Debug:   jtag.c:279 jtag_call_event_callbacks(): jtag event: TRST 
asserted
Debug:   jtag.c:1180 jtag_reset_callback(): -
Debug:   jtag.c:279 jtag_call_event_callbacks(): jtag event: TRST 
asserted
Debug:   jtag.c:1180 jtag_reset_callback(): -
Debug:   jtag.c:1274 jtag_examine_chain(): JTAG device found: 0x3f0f0f0f 
(Manufacturer: 0x787, Part: 0xf0f0, Version: 0x3
Debug:   jtag.c:279 jtag_call_event_callbacks(): jtag event: TRST 
asserted
Debug:   jtag.c:1180 jtag_reset_callback(): -
Debug:   openocd.c:104 main(): jtag init complete
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 4
Debug:   jtag.c:279 jtag_call_event_callbacks(): jtag event: TRST 
released
Debug:   jtag.c:1180 jtag_reset_callback(): -
Debug:   arm7_9_common.c:657 arm7_9_assert_reset(): target->state: 
unknown
Debug:   jtag.c:279 jtag_call_event_callbacks(): jtag event: SRST 
asserted
Debug:   jtag.c:1180 jtag_reset_callback(): -
Debug:   jtag.c:279 jtag_call_event_callbacks(): jtag event: TRST 
asserted
Debug:   jtag.c:1180 jtag_reset_callback(): -
Debug:   jtag.c:279 jtag_call_event_callbacks(): jtag event: SRST 
asserted
Debug:   jtag.c:1180 jtag_reset_callback(): -
Debug:   arm7_9_common.c:723 arm7_9_deassert_reset(): target->state: 
reset
Debug:   jtag.c:279 jtag_call_event_callbacks(): jtag event: SRST 
released
Debug:   jtag.c:1180 jtag_reset_callback(): -
Debug:   openocd.c:108 main(): target init complete
Debug:   openocd.c:112 main(): flash init complete
Debug:   openocd.c:116 main(): NAND init complete
Debug:   openocd.c:120 main(): pld init complete
Debug:   gdb_server.c:1347 gdb_init(): gdb service for target arm7tdmi 
at port 3333
Debug:   arm7_9_common.c:872 arm7_9_halt(): target->state: reset
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   jtag.c:279 jtag_call_event_callbacks(): jtag event: TRST 
released
Debug:   jtag.c:1180 jtag_reset_callback(): -
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
Debug:   embeddedice.c:228 embeddedice_read_reg_w_check(): 1
====================================

Mein cfg-File sieht so aus:

====================================
telnet_port 4444
gdb_port 3333

#reset the target on startup (reset | attach)
daemon_startup reset

#interface configuration
interface ft2232
jtag_speed 0            #use maximum speed

reset_config srst_only

jtag_device 4 0x1 0xF 0xE

#ft2232_device_desc "Dual RS232 A"
ft2232_layout usbjtag

#ft2232_vid_pid 0x00 0x00

#we use an arm7tdmi little endian system and request an
#immediate halt after reset of the processor

target arm7tdmi little run_and_halt 0 arm7tdmi_r4
run_and_halt_time 0 30

#flash instructions
target_script 0 reset ARM7_Flash.script
working_area 0 0x40000000 0x4000 nobackup
flash bank at91sam7 0 0 0 0 0
====================================

und das .script so:

====================================
arm7_9 dcc_downloads enable
#armv4_5 core_mode arm
wait_halt
sleep 10

#Disable watchdog and enable main oscillator
#otherwise flashing takes forever and ever
#Taken from Martin Thomas and the script "openocd_at91sam7_ecr.script"
mww 0xfffffd44 0x00008000       # disable watchdog
mww 0xfffffd08 0xa5000001       # enable user reset
mww 0xfffffc20 0x00000601       # CKGR_MOR : enable the main oscillator
sleep 10
mww 0xfffffc2c 0x00481c0e       # CKGR_PLLR: 96.1097 MHz
sleep 10                        # stabilize !
mww 0xfffffc30 0x00000007       # PMC_MCKR : MCK = PLL / 2 ~= 48 MHz
sleep 10                        # stabilize !
mww 0xffffff60 0x003c0100       # MC_FMR: flash mode (FWS=1,FMCN=60)

#erase the flash
flash erase 0 0 15
sleep 10
#write data to the flash
flash write 0 ../Release/ledtest.hex 0x0
sleep 10
reset
sleep 10
shutdown
====================================
Leider habe ich wie gesagt obigen Fehler und weiß leider auch nicht mehr 
weiter!

Hat vielleicht jemand von euch eine Idee?

Danke für die Hilfe
Andreas

von Dominic R. (dominic)


Lesenswert?

Hallo Andreas,

das sind eigentlich keine Fehlermeldungen, sondern nur die ganz normale 
Debug Ausgabe. Der OpenOCD ist als Daemon designed, d.h. er sollte im 
Hintergrund laufen, während der User via Telnet oder GDB auf ihn 
zugreift.

Das .cfg File konfiguriert den OpenOCD allerdings so, dass gleich nach 
dem Start ein Reset durchgeführt wird, in dessen Folge das Target 
angehalten werden soll. Sobald das Target anhält soll das Skript 
ausgeführt werden, das dann das Flash beschreibt und den OpenOCD wieder 
beenden soll.

Allerdings scheint das Anhalten fehlzuschlagen - der OpenOCD läuft 
einfach weiter, die Debug Ausgabe zeit, dass der OpenOCD das Target 
immer wieder nach seinem Zustand frägt.

Du könntest eine Verbindung via Telnet zu localhost port 4444 aufbauen, 
und versuchen, das Target via "halt" anzuhalten, und dann die Befehle 
des Skripts via Telnet eingeben.

Gruß,

Dominic

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.