Problem with OpenOCD 0.3.0 and ARM-USB-TINYH (very slow)

Hello!

I’m trying to get Olimex ARM-USB-TINYH working with a custom STM32 based board. The main problem is very slow flash programming speed (fastest i’ve got is 0,323838 KB/s). Previously we used Olimex ARM-JTAG-EW and with it got flash programming speeds around 11-12 KB/s.

Any ideas?

I’m using precompiled Windows OpenOCD that come in CD with Olimex ARM-USB-TINYH.

Flash programming is done with the following commands:

openocd -d2 -f “scripts/interface/olimex-arm-usb-tiny-h.cfg” -f “scripts/target/stm32.cfg” -c init -c halt -c targets -c “flash write_image erase image.elf” -c “verify_image image.elf” -c “reset run” -c shutdown

I have following configuration files:

olimex-arm-usb-tiny-h.cfg:

interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG ARM-USB-TINY-H"
ft2232_layout olimex-jtag
ft2232_vid_pid 0x15ba 0x002a

stm32.cfg (little-bit modified from original):

# script for stm32

if { [info exists CHIPNAME] } {
   set  _CHIPNAME $CHIPNAME
} else {
   set  _CHIPNAME stm32
}

if { [info exists ENDIAN] } {
   set  _ENDIAN $ENDIAN
} else {
   set  _ENDIAN little
}

# Work-area is a space in RAM used for flash programming
# By default use 16kB
if { [info exists WORKAREASIZE] } {
   set  _WORKAREASIZE $WORKAREASIZE
} else {
#   set  _WORKAREASIZE 0x4000
   set  _WORKAREASIZE 0x8000
}

# JTAG speed should be <= F_CPU/6. F_CPU after reset is 8MHz, so use F_JTAG = 1MHz
jtag_khz 500
#jtag_khz 100000
#jtag_speed 6

jtag_nsrst_delay 100
jtag_ntrst_delay 100

#use combined on interfaces or targets that can't set TRST/SRST separately
#reset_config trst_and_srst
reset_config trst_and_srst separate trst_push_pull srst_open_drain

#jtag scan chain
if { [info exists CPUTAPID ] } {
   set _CPUTAPID $CPUTAPID
} else {
  # See STM Document RM0008
  # Section 26.6.3
   set _CPUTAPID 0x3ba00477
}
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID

if { [info exists BSTAPID ] } {
   # FIXME this never gets used to override defaults...
   set _BSTAPID $BSTAPID
} else {
  # See STM Document RM0008
  # Section 29.6.2
  # Low density devices, Rev A
  set _BSTAPID1 0x06412041
  # Medium density devices, Rev A
  set _BSTAPID2 0x06410041
  # Medium density devices, Rev B and Rev Z
  set _BSTAPID3 0x16410041
  # High density devices, Rev A
  set _BSTAPID4 0x06414041
  # Connectivity line devices, Rev A and Rev Z
  set _BSTAPID5 0x06418041
}
jtag newtap $_CHIPNAME bs -irlen 5 -expected-id $_BSTAPID1 \
	-expected-id $_BSTAPID2 -expected-id $_BSTAPID3 \
	-expected-id $_BSTAPID4 -expected-id $_BSTAPID5

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_m3 -endian $_ENDIAN -chain-position $_TARGETNAME

$_TARGETNAME configure -work-area-virt 0 -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0

flash bank stm32x 0 0 0 0 $_TARGETNAME

# For more information about the configuration files, take a look at:
# openocd.texi

I’ve tried various jtag_khz values, but if I set it higher than 500, OpenOCD outputs “Error: SWJ-DP OVERRUN - check clock or reduce jtag speed” messages. “reset_config” parameter is taken from old configuraton file used with ARM-JTAG-EW.

Also, at the begining OpenOCD outputs following messages:

Error: AHBAP Cached values: dp_select 0x0, ap_csw 0xa2000012, ap_tar 0xffffffff
Error: SWJ-DP STICKY ERROR
Error: Read MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x4
Error: AHBAP Cached values: dp_select 0x0, ap_csw 0xa2000012, ap_tar 0xffffffff
Error: SWJ-DP STICKY ERROR
Error: Read MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x4

Don’t know what this means actually, but OpenOCD can write image successfully.

What drivers do you use? ftd2xx or libusb-win32?

OpenOCD 0.3.0 is broken and un-usable - use some other release.

4/3!!

when ı used openocd-ftd2xx.exe

and used argements : -f “olimex-arm-usb-tiny-h.cfg” -f “lpc2378.cfg”

then getting this info and error…

Info:    openocd.c:86 main(): Open On-Chip Debugger (2007-04-16 19:30 CEST)
Info:    configuration.c:50 configuration_output_handler(): Command if not found
Info:    configuration.c:50 configuration_output_handler(): Command set not found
Info:    configuration.c:50 configuration_output_handler(): Command } not found
Info:    configuration.c:50 configuration_output_handler(): Command set not found
Info:    configuration.c:50 configuration_output_handler(): Command } not found
Info:    configuration.c:50 configuration_output_handler(): Command if not found
Info:    configuration.c:50 configuration_output_handler(): Command set not found
Info:    configuration.c:50 configuration_output_handler(): Command } not found
Info:    configuration.c:50 configuration_output_handler(): Command set not found
Info:    configuration.c:50 configuration_output_handler(): Command } not found
Info:    configuration.c:50 configuration_output_handler(): Command if not found
Info:    configuration.c:50 configuration_output_handler(): Command set not found
Info:    configuration.c:50 configuration_output_handler(): Command } not found
Info:    configuration.c:50 configuration_output_handler(): Command set not found
Info:    configuration.c:50 configuration_output_handler(): Command } not found
Info:    configuration.c:50 configuration_output_handler(): Command jtag not found
Info:    configuration.c:50 configuration_output_handler(): Command set not found
Error:   target.c:1008 handle_target_command(): target 'create' not found

any ideas?

Idea: Don’t use ancient OpenOCD with modern config files.

4/3!!

I downloaded openocd 0.4.0 ver. then used argements : -f “olimex-arm-usb-tiny-h.cfg” -f “lpc2378.cfg”

again then getting this info and error…

Open On-Chip Debugger 0.4.0 (2010-02-22-19:05)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.berlios.de/doc/doxygen/bugs.html
jtag_nsrst_delay: 200
jtag_ntrst_delay: 200
trst_and_srst srst_pulls_trst srst_gates_jtag trst_push_pull srst_open_drain
500 kHz
Info : max TCK change to: 30000 kHz
Info : clock speed 500 kHz
Info : JTAG tap: lpc2378.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf1f0, ver: 0x4)
Info : Embedded ICE version 7
Error: EmbeddedICE v7 handling might be broken
Info : lpc2378.cpu: hardware has 2 breakpoint/watchpoint units

“Error: EmbeddedICE v7 handling might be broken” what does this mean dude? Do you think about where is my fault?

thx for supply.

regards

Ignore that - everything should work normally.

4/3!!

I have received this ‘error’ as well. If it is not something to be concerned about, why is it flagged as an error?

Is there a way to make it go away? I have a zero tolerance rule on warnings and errors!