962b3eb40c
This adds support for JTAG programming by bitbanging GPIOs exposed on the RaspberryPi's expansion header. Tested by connecting directly to an STM32VLDiscovery board, without any additional circuity. I observed maximum about 4MHz on the TCK pin with an old analogue 'scope and about 100kHz when setting the speed to 100kHz. Busyloop waiting is needed because even with a single 0ns nanosleep call (with FIFO priority) it lowers the TCK speed to ~30kHz which is way too low to be useful. The speed testing with adapter_khz 2000 gave the following results: sudo chrt -f 1 nice -n -19 ./src/openocd \ -f interface/raspberrypi-native.cfg \ -c "set WORKAREASIZE 0x2000" \ -f target/stm32f1x.cfg -c "adapter_khz 2000" wrote 131072 bytes from file random.bin in 3.973677s (32.212 KiB/s) dumped 131072 bytes in 1.445699s (88.538 KiB/s) This is 3.7 times faster for writing and 14.3 times faster for reading compared to the generic sysfsgpio driver; probably the writing speed is limited by the target itself here and reading speed might be considerably higher too with appropriate connection and a capable target. BCM2835 name is choosen over BCM2708 because the published peripherals datasheet uses the particular model name and not family name. Change-Id: Ib78168be27f53c2a3c88c3dd8154d1190c318c78 Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/758 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
34 lines
951 B
INI
34 lines
951 B
INI
#
|
|
# Config for using Raspberry Pi's expansion header
|
|
#
|
|
# This is best used with a fast enough buffer but also
|
|
# is suitable for direct connection if the target voltage
|
|
# matches RPi's 3.3V and the cable is short enough.
|
|
#
|
|
# Do not forget the GND connection, pin 6 of the expansion header.
|
|
#
|
|
|
|
interface bcm2835gpio
|
|
|
|
# Transition delay calculation: SPEED_COEFF/khz - SPEED_OFFSET
|
|
# These depend on system clock, calibrated for stock 700MHz
|
|
# bcm2835gpio_speed SPEED_COEFF SPEED_OFFSET
|
|
bcm2835gpio_speed_coeffs 113714 28
|
|
|
|
# Each of the JTAG lines need a gpio number set: tck tms tdi tdo
|
|
# Header pin numbers: 23 22 19 21
|
|
bcm2835gpio_jtag_nums 11 25 10 9
|
|
|
|
# If you define trst or srst, use appropriate reset_config
|
|
# Header pin numbers: TRST - 26, SRST - 18
|
|
|
|
# bcm2835gpio_trst_num 7
|
|
# reset_config trst_only
|
|
|
|
# bcm2835gpio_srst_num 24
|
|
# reset_config srst_only srst_push_pull
|
|
|
|
# or if you have both connected,
|
|
# reset_config trst_and_srst srst_push_pull
|
|
|