diff options
author | Tim Newsome <tim@sifive.com> | 2023-09-12 12:55:10 -0700 |
---|---|---|
committer | Tim Newsome <tim@sifive.com> | 2023-09-12 12:55:10 -0700 |
commit | 8c1f1b77d33b4134fdf196df00c9896cd606221a (patch) | |
tree | 94be292a28a52a4453ceb9ac4f357833a2cc8a2d /tcl/interface | |
parent | 67c2835997c206ddeba58cfc0fad76789db7474b (diff) | |
parent | ee31f1578a333a75737bc5b183cd4ae98cdaf798 (diff) | |
download | riscv-openocd-8c1f1b77d33b4134fdf196df00c9896cd606221a.zip riscv-openocd-8c1f1b77d33b4134fdf196df00c9896cd606221a.tar.gz riscv-openocd-8c1f1b77d33b4134fdf196df00c9896cd606221a.tar.bz2 |
Merge commit 'ee31f1578a333a75737bc5b183cd4ae98cdaf798' into from_upstream
Conflicts:
Makefile.am
jimtcl
src/helper/Makefile.am
src/rtos/rtos.c
src/rtos/rtos.h
src/rtos/rtos_standard_stackings.c
Change-Id: I00c98d20089558744988184370a8cb7f95f03329
Diffstat (limited to 'tcl/interface')
-rw-r--r--[-rwxr-xr-x] | tcl/interface/ftdi/ashling-opella-ld-jtag.cfg | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | tcl/interface/ftdi/ashling-opella-ld-swd.cfg | 0 | ||||
-rw-r--r-- | tcl/interface/raspberrypi-gpio-connector.cfg | 42 | ||||
-rw-r--r-- | tcl/interface/raspberrypi-native.cfg | 91 | ||||
-rw-r--r-- | tcl/interface/raspberrypi2-native.cfg | 44 |
5 files changed, 104 insertions, 73 deletions
diff --git a/tcl/interface/ftdi/ashling-opella-ld-jtag.cfg b/tcl/interface/ftdi/ashling-opella-ld-jtag.cfg index 6256aa0..6256aa0 100755..100644 --- a/tcl/interface/ftdi/ashling-opella-ld-jtag.cfg +++ b/tcl/interface/ftdi/ashling-opella-ld-jtag.cfg diff --git a/tcl/interface/ftdi/ashling-opella-ld-swd.cfg b/tcl/interface/ftdi/ashling-opella-ld-swd.cfg index 4a4e4e0..4a4e4e0 100755..100644 --- a/tcl/interface/ftdi/ashling-opella-ld-swd.cfg +++ b/tcl/interface/ftdi/ashling-opella-ld-swd.cfg diff --git a/tcl/interface/raspberrypi-gpio-connector.cfg b/tcl/interface/raspberrypi-gpio-connector.cfg new file mode 100644 index 0000000..eff73fc --- /dev/null +++ b/tcl/interface/raspberrypi-gpio-connector.cfg @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +# +# Config for Raspberry Pi GPIO 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, e.g. pin 20 of the GPIO header. +# + +# GPIO 25 (pin 22) previously used for TMS/SWDIO is pulled-down by default. +# The JTAG/SWD specification requires pull-up at the target board +# for either signal. Connecting the signal pulled-up on the target +# to the pull-down on the adapter is not a good idea. +# GPIO 8 is pulled-up by default. +echo "Warn : TMS/SWDIO moved to GPIO 8 (pin 24). Check the wiring please!" + +# Each of the JTAG lines need a gpio number set: tck tms tdi tdo +# Header pin numbers: 23 24 19 21 +adapter gpio tck -chip 0 11 +adapter gpio tms -chip 0 8 +adapter gpio tdi -chip 0 10 +adapter gpio tdo -chip 0 9 + +# Each of the SWD lines need a gpio number set: swclk swdio +# Header pin numbers: 23 24 +adapter gpio swclk -chip 0 11 +adapter gpio swdio -chip 0 8 + +# If you define trst or srst, use appropriate reset_config +# Header pin numbers: TRST - 26, SRST - 18 + +# adapter gpio trst -chip 0 7 +# reset_config trst_only + +# adapter gpio srst -chip 0 24 +# reset_config srst_only srst_push_pull + +# or if you have both connected, +# reset_config trst_and_srst srst_push_pull diff --git a/tcl/interface/raspberrypi-native.cfg b/tcl/interface/raspberrypi-native.cfg index 02a3563..7224723 100644 --- a/tcl/interface/raspberrypi-native.cfg +++ b/tcl/interface/raspberrypi-native.cfg @@ -1,44 +1,71 @@ # SPDX-License-Identifier: GPL-2.0-or-later -# -# 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. -# +# Config for Raspberry Pi used as a bitbang adapter. +# https://www.raspberrypi.com/documentation/computers/raspberry-pi.html + +# Supports all models with 40-pin or 26-pin GPIO connector up to Raspberry Pi 4 B +# also supports Raspberry Pi Zero, Zero W and Zero 2 W. + +# Adapter speed calibration is computed from cpufreq/scaling_max_freq. +# Adjusts automatically if CPU is overclocked. adapter driver bcm2835gpio -bcm2835gpio peripheral_base 0x20000000 +proc read_file { name } { + if {[catch {open $name r} fd]} { + return "" + } + set result [read $fd] + close $fd + return $result +} -# 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 +proc measure_clock {} { + set result [exec vcgencmd measure_clock arm] + set clock_hz [lindex [split $result "="] 1] + expr { $clock_hz / 1000 } +} + +proc get_max_cpu_clock { default } { + set clock [read_file /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq] + if { $clock > 100000 } { + return $clock + } -# Each of the JTAG lines need a gpio number set: tck tms tdi tdo -# Header pin numbers: 23 22 19 21 -adapter gpio tck -chip 0 11 -adapter gpio tms -chip 0 25 -adapter gpio tdi -chip 0 10 -adapter gpio tdo -chip 0 9 + # cpufreq not available. As the last resort try Broadcom's proprietary utility + if {![catch measure_clock clock] && $clock > 100000} { + return $clock + } -# Each of the SWD lines need a gpio number set: swclk swdio -# Header pin numbers: 23 22 -adapter gpio swclk -chip 0 11 -adapter gpio swdio -chip 0 25 + echo "WARNING: Host CPU clock unknown." + echo "WARNING: Using the highest possible value $default kHz as a safe default." + echo "WARNING: Expect JTAG/SWD clock significantly slower than requested." -# If you define trst or srst, use appropriate reset_config -# Header pin numbers: TRST - 26, SRST - 18 + return $default +} -# adapter gpio trst -chip 0 7 -# reset_config trst_only +set compat [read_file /proc/device-tree/compatible] +set clocks_per_timing_loop 4 -# adapter gpio srst -chip 0 24 -# reset_config srst_only srst_push_pull +if {[string match *bcm2711* $compat]} { + set speed_offset 52 +} elseif {[string match *bcm2837* $compat] || [string match *bcm2710* $compat]} { + set speed_offset 34 +} elseif {[string match *bcm2836* $compat] || [string match *bcm2709* $compat]} { + set speed_offset 36 +} elseif {[string match *bcm2835* $compat] || [string match *bcm2708* $compat]} { + set clocks_per_timing_loop 6 + set speed_offset 32 +} else { + set speed_offset 32 + echo "WARNING: Unknown type of the host SoC. Expect JTAG/SWD clock slower than requested." +} + +set clock [get_max_cpu_clock 2000000] +set speed_coeff [expr { $clock / $clocks_per_timing_loop }] + +# Transition delay calculation: SPEED_COEFF/khz - SPEED_OFFSET +# The coefficients depend on system clock and CPU frequency scaling. +bcm2835gpio speed_coeffs $speed_coeff $speed_offset -# or if you have both connected, -# reset_config trst_and_srst srst_push_pull +source [find interface/raspberrypi-gpio-connector.cfg] diff --git a/tcl/interface/raspberrypi2-native.cfg b/tcl/interface/raspberrypi2-native.cfg index d5edded..fe9186f 100644 --- a/tcl/interface/raspberrypi2-native.cfg +++ b/tcl/interface/raspberrypi2-native.cfg @@ -1,44 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-or-later -# -# 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. -# +echo "WARNING: interface/raspberrypi2-native.cfg is deprecated." +echo "WARNING: Please use interface/raspberrypi-native.cfg for all Raspberry Pi models." -adapter driver bcm2835gpio - -bcm2835gpio peripheral_base 0x3F000000 - -# Transition delay calculation: SPEED_COEFF/khz - SPEED_OFFSET -# These depend on system clock, calibrated for scaling_max_freq 900MHz -# bcm2835gpio speed SPEED_COEFF SPEED_OFFSET -bcm2835gpio speed_coeffs 225000 36 - -# Each of the JTAG lines need a gpio number set: tck tms tdi tdo -# Header pin numbers: 23 22 19 21 -adapter gpio tck -chip 0 11 -adapter gpio tms -chip 0 25 -adapter gpio tdi -chip 0 10 -adapter gpio tdo -chip 0 9 - -# Each of the SWD lines need a gpio number set: swclk swdio -# Header pin numbers: 23 22 -adapter gpio swclk -chip 0 11 -adapter gpio swdio -chip 0 25 - -# If you define trst or srst, use appropriate reset_config -# Header pin numbers: TRST - 26, SRST - 18 - -# adapter gpio trst -chip 0 7 -# reset_config trst_only - -# adapter gpio srst -chip 0 24 -# reset_config srst_only srst_push_pull - -# or if you have both connected, -# reset_config trst_and_srst srst_push_pull +source [find interface/raspberrypi-native.cfg] |