Hi, nach vielem Googeln mit wenig brauchbaren Ergebnissen möchte ich an Leute vom Fach wenden. Ich habe vor Kurzem ein Olimexboard SAM7-LA2 mit einem Arm-USB-Tiny Jtag Debugger und möchte mit Yagarto / OpenOCD das Board zum Laufen bringen. Das Board ist mit einem MX26LV800BTC Flash Speicher 1Mb ausgerüstet. Zudem befindet sich noch ein Ethernetchip DM9000EB darauf. Der AT91SAM7A2 hat kein internes Flash. Das Aktivieren des Debuggers funktioniert. telnet_port 4444 gdb_port 3333 interface ft2232 ft2232_device_desc "Olimex OpenOCD JTAG TINY A" ft2232_layout "olimex-jtag" ft2232_vid_pid 0x15BA 0x0004 jtag_speed 1000 jtag_nsrst_delay 333 jtag_ntrst_delay 333 reset_config trst_and_srst srst_pulls_trst jtag_device 4 0x1 0xf 0xe daemon_startup reset target arm7tdmi little 0 target_script 0 reset script.ocd working_area 0 0x00300000 0x4000 nobackup flash bank cfi 0x40000000 0x00100000 2 2 0 Das Script lautet folgendermaßen: wait_halt armv4_5 core_state arm #flash protect 0 0 15 off # AMC_CS0 - FLASH 1MB (0x40000000-0x400FFFFF) + DM9000E (0x40100000) mww 0xFFE00000 0x40003EBD # AMC_CS1 - RAM low 2MB (0x40400000-0x405FFFFF) mww 0xFFE00004 0x404030A9 # AMC_CS2 - RAM high 2MB (0x40800000-0x405FFFFF) mww 0xFFE00008 0x404030A9 # AMC_MCR 1MB mww 0xFFE00024 0x00000004 # AMC_RCR force remap mww 0xFFE00020 0x00000001 sleep 1000 # disable watchdog mww 0xFFFA0000 0x00000000 sleep 50 # disable PLLClockmanager CM mww 0xFFEC0004 0x18070004 # PLL Divider = 10 ==> Coreclock = 6Mhz*10/2 = 30 Mhz mww 0xFFEC0010 0x762D800A # enable PLL mww 0xFFEC0000 0x23050004 sleep 100 reset halt sleep 100 at91sam7 gpnvm 0 2 set flash info 0 ####################Flash Part #arm7_9 dcc_downloads enable#poll #flash probe 0 #erase first 5 banks (0-4) #flash erase_sectors 0 0 4#flash erase_sectors 0 0 15#reset #sleep 10 #flash write 0 abc.bin 0x0 # program the onchip flash #sleep 10 #reset run # reset processor #sleep 10 #shutdown # stop OpenOCD Nach dem Starten: Open On-Chip Debugger (2008-06-19 19:00) svn: 717 URL: http://svn.berlios.de/svnroot/repos/openocd/trunk Info: options.c:50 configuration_output_handler(): jtag_speed: 1000, 1000 Info: options.c:50 configuration_output_handler(): Open On-Chip Debugger (2008-06-19 19:00) svn: 717 Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x1f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x1) Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x1f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x1) Info: options.c:50 configuration_output_handler(): nSRST pulls nTRST, falling back to "reset run_and_init" Info: target.c:237 target_init_handler(): executing reset script 'script.ocd' Info: options.c:50 configuration_output_handler(): core state: ARM Error: cfi.c:1947 cfi_probe(): Could not probe bank Error: flash.c:219 get_flash_bank_by_num(): auto_probe failed -900 Info: options.c:50 configuration_output_handler(): flash bank '#0' is out of bounds Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x1f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x1) Info: options.c:50 configuration_output_handler(): nSRST pulls nTRST, falling back to "reset run_and_halt" Info: options.c:50 configuration_output_handler(): Command at91sam7 not found Error: cfi.c:1947 cfi_probe(): Could not probe bank Info: options.c:50 configuration_output_handler(): dcc downloads are enabled Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x1f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x1) Warning: arm7_9_common.c:743 arm7_9_poll(): DBGACK set, but the target did not end up in the halted stated 1 User: target.c:436 target_process_reset(): Timed out waiting for halt after reset Öffen einer Telnetverbindung: telnet localhost 4444> flash probe 0 unknown error when probing flash bank '#0' at 0x40000000DANN:> arm_v4_5 reg Command arm_v4_5 not found > armv4_5 reg error: target must be halted for register accesses > reset halt JTAG device found: 0x1f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x1) nSRST pulls nTRST, falling back to "reset run_and_halt" target state: halted target halted in Thumb state due to debug request, current mode: Supervisor cpsr: 0x60000033 pc: 0x40002eacDANN:> armv4_5 reg r0: 4000380c r0: 4000380c r0: 4000380c r0: 4000380c r0: 4000380c r0: 4000380c r1: fffa8084 r1: fffa8084 r1: fffa8084 r1: fffa8084 r1: fffa8084 r1: fffa8084 r2: 0001c200 r2: 0001c200 r2: 0001c200 r2: 0001c200 r2: 0001c200 r2: 0001c200 r3: fffa8088 r3: fffa8088 r3: fffa8088 r3: fffa8088 r3: fffa8088 r3: fffa8088 r4: 00000000 r4: 00000000 r4: 00000000 r4: 00000000 r4: 00000000 r4: 00000000 r5: 00000000 r5: 00000000 r5: 00000000 r5: 00000000 r5: 00000000 r5: 00000000 r6: 0001c800 r6: 0001c800 r6: 0001c800 r6: 0001c800 r6: 0001c800 r6: 0001c800 r7: 02202800 r7: 02202800 r7: 02202800 r7: 02202800 r7: 02202800 r7: 02202800 r8: 42010008 r8_fiq: fffff000 r8: 42010008 r8: 42010008 r8: 42010008 r8: 42010008 r9: 4292c601 r9_fiq: 18819580 r9: 4292c601 r9: 4292c601 r9: 4292c601 r9: 4292c601 r10: 91252410 r10_fiq: 45030260 r10: 91252410 r10: 91252410 r10: 91252410 r10: 91252410 r11: 0b0b2816 r11_fiq: 427c8114 r11: 0b0b2816 r11: 0b0b2816 r11: 0b0b2816 r11: 0b0b2816 r12: 00000000 r12_fiq: 26808100 r12: 00000000 r12: 00000000 r12: 00000000 r12: 00000000 r13_usr: 42140413 r13_fiq: 02153813 r13_irq: 00004000 r13_svc: 00003f90 r13 _abt: 8221e030 r13_und: f5098190 lr_usr: 40102c17 lr_fiq: a4019206 lr_irq: 01412100 lr_svc: 40000cb5 lr _abt: 88020910 lr_und: 80295012 pc: 40002eac pc: 40002eac pc: 40002eac pc: 40002eac pc: 40002eac pc: 40002eac cpsr: 60000033 spsr_fiq: f00000ff spsr_irq: e00000ff spsr_svc: 60000033 spsr _abt: d00000ff spsr_und: e00000ff >> flash info 0 Could not probe bank DANN AUSFÜHREN EINES HARDWARE RESETS AM BOARD: > flash probe 0 Could not probe bank probing failed for flash bank '#0' at 0x40000000 > reset JTAG device found: 0x1f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x1) nSRST pulls nTRST, falling back to "reset run_and_init" target state: halted target halted in Thumb state due to debug request, current mode: Supervisor cpsr: 0x60000033 pc: 0x40002eaa executing reset script 'script.ocd' core state: ARM Could not probe bank auto_probe failed -900flash bank '#0' is out of bounds JTAG device found: 0x1f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x1) nSRST pulls nTRST, falling back to "reset run_and_halt" target state: halted target halted in Thumb state due to debug request, current mode: Supervisor cpsr: 0x60000033 pc: 0x40002eae Command at91sam7 not found Could not probe bank dcc downloads are enabled JTAG device found: 0x1f0f0f0f (Manufacturer: 0x787, Part: 0xf0f0, Version: 0x1) DBGACK set, but the target did not end up in the halted stated 1 Timed out waiting for halt after reset Was muß ich machen, damit das Teil läuft? Ich habe schon überall im Google versucht, da Ínfo zu bekommen. Anscheinend ist der Prozessor ein Auslaufteil (Atmelseite). Selbst Olimex zeigt sich wenig kooperativ und verweist auf käufliche Debugger, was mein Budget sprengen würde. Vielen, vielen Dank!
Hast du das mit dem Programmieren hinbekommen? Seltsamerweise kann ich das Board unter Linux mit einem Parallport JTAG Adapter (Wiggler) problemlos programmieren. Unter Windows mit einem FT2232 basierten JTAG Adapter (OpenOCD USB) funktioniert es nicht. Ich bekomme die gleiche Fehlermeldung wie du.
Falls es jemanden interessiert: ich hab es hinbekommen, das Olimex-Board über OpenOCD unter Windows zu programmieren. Folgendes habe ich gemacht: 1. von FTDI die Treiber besorgt http://www.ftdichip.com/Drivers/D2XX.htm Version 2.04.14 2. die neueste OpenOCD Version (Revision 1355) ausgecheckt: http://developer.berlios.de/projects/openocd 3. OpenOCD unter cygwin compiliert: ./bootstrap ./configure --enable-ft2232_ftd2xx --with-ftd2xx-win32-zipdir=/cygdrive/d/OpenOCD/ftd2xx (Achtung: der Pfad des Verzeichnisses ftd2xx muss angepasst werden!) ./make ./make install 4. OpenOCD gestartet: openocd -f at91sam7a_usb_openocd.cfg 5. mit telnet verbunden: telnet 127.0.0.1 4444 6. Flash programmiert: reset halt script prog.txt "prog.txt" ist ein Script, das ich mir zum programmieren geschrieben habe: at91sam7.cpu configure -work-area-virt 0 -work-area-phys 0x40800000 -work-area-size 0x100000 -work-area-backup 0 flash write_image erase test.bin 0x40000000 bin sleep 1000 verify_image test.bin 0x40000000 bin Anmerkung: Bei mir initialisiert die auf dem Board installierte Firmware den Momorycontroller so, das der Flash ab Adresse 0x40000000 eingeblendet ist. Seltsamerweise kann ich den AT91SAM7 nciht sofort nach dem reset anhalten, also der Befehl "reset halt" funktioniert nicht. Deshalb habe ich die Adresse des Flash mit 0x40000000 angegeben. Wenn ihr mit einem anderen Programmer den Controller sofort nach dem Reset anhalten könnt, dann liegt der Flash auf Adresse 0x00000000. PS: das ich den Controller nicht sofort anhalten kann liegt an der Einstellung: reset_config trst_and_srst srst_pulls_trst Mein Programmer/Board funktioniert aber nicht ohne das "srst_pulls_trst". Keine Ahnung warum.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.