|
From: <ge...@op...> - 2017-03-20 14:35:30
|
This is an automated email from Gerrit. Roger Lendenmann (len...@gm...) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/4075 -- gerrit commit 2caa41793e3a66e9a0800b717a5ecb4983d79fa9 Author: Roger Lendenmann <rog...@in...> Date: Mon Mar 20 15:20:59 2017 +0100 jtag: swd: Add support for adafruit ft232h TDO tri-stating * dynamically switch TDO depending on write/read operation * adafruit FT232 breakout board configuration files for SWD support * nrf52 adafruit board config for swd Change-Id: I385f1b3b94a3ddbb84e3fb0c4ff67278aa89d3ce Signed-off-by: Roger Lendenmann <rog...@in...> diff --git a/src/jtag/drivers/ftdi.c b/src/jtag/drivers/ftdi.c index 00fe37f..ff20139 100644 --- a/src/jtag/drivers/ftdi.c +++ b/src/jtag/drivers/ftdi.c @@ -1062,7 +1062,13 @@ static int ftdi_swd_init(void) static void ftdi_swd_swdio_en(bool enable) { + struct signal *tdo = find_signal_by_name("TDO"); struct signal *oe = find_signal_by_name("SWDIO_OE"); + + /* In case TDO is directly connected, switch to output write operation + or tri-state (input) output pin for read swd operation */ + if (tdo && (tdo->oe_mask == tdo->data_mask)) + ftdi_set_signal(tdo, enable ? '1' : 'z'); if (oe) ftdi_set_signal(oe, enable ? '1' : '0'); } diff --git a/tcl/board/nordic_nrf52_adafruit.cfg b/tcl/board/nordic_nrf52_adafruit.cfg new file mode 100644 index 0000000..edd8886 --- /dev/null +++ b/tcl/board/nordic_nrf52_adafruit.cfg @@ -0,0 +1,9 @@ +# +# nordic module NRF52 (nRF52832/52840) attached to an adafruit ft232h board +# + +source [find interface/ftdi/adafruit-ft232h-swd.cfg] + +transport select swd + +source [find target/nrf52.cfg] diff --git a/tcl/interface/ftdi/adafruit-ft232h-swd.cfg b/tcl/interface/ftdi/adafruit-ft232h-swd.cfg new file mode 100644 index 0000000..ba324b7 --- /dev/null +++ b/tcl/interface/ftdi/adafruit-ft232h-swd.cfg @@ -0,0 +1,44 @@ +# +# ADAFRUIT FTDI FT232H as a SWD direct connect interface +# +# http://www.ftdichip.com/Products/ICs/FT232H.htm +# +# + +interface ftdi + +ftdi_vid_pid 0x0403 0x6014 + +ftdi_layout_signal SWD_EN -data 0 + +# data MSB..LSB direction (1:out) MSB..LSB +# 0000'0000'0011'1100 0000'0011'0001'1011 +ftdi_layout_init 0x031a 0x031b +# 0xfff8 0xfffb +#ftdi_layout_signal nTRST -data 0x0100 -oe 0x0100 +#ftdi_layout_signal nSRST -data 0x0200 + +# re-configure TDO as tri-state +ftdi_layout_signal TDO -data 0x0002 -oe 0x0002 +ftdi_layout_signal TDI -data 0x0004 + +# Adafruit FT232H JTAG SWD +# Name Pin Name Func Func +# D0 J1-3 ADBUS0 TCK SWDCLK +# D1 J1-4 ADBUS1 TDO/DI SWDIO +# D2 J1-5 ADBUS2 TDI/DO SWDIO +# D3 J1-6 ADBUS3 TMS N/A +# D4 J1-7 ADBUS4 (GPIOL0) +# D5 J1-8 ADBUS5 (GPIOL1) +# D6 J1-9 ADBUS6 (GPIOL2) +# D7 J1-10 ADBUS7 (GPIOL3) +# C0 J2-1 ACBUS0 /TRST not used +# C1 J2-2 ACBUS1 /SRST module reset +# C2 J2-3 ACBUS2 (GPIOH2) +# C3 J2-4 ACBUS3 (GPIOH3) +# C4 J2-5 ACBUS4 (GPIOH4) +# C5 J2-6 ACBUS5 (GPIOH5) +# C6 J2-7 ACBUS6 (GPIOH6) +# C7 J2-8 ACBUS7 (GPIOH7) +# C8 J2-9 ACBUS8 +# C9 J2-10 ACBUS9 -- |