Add files for openocd v0.11

The protocol used by the spi bridge firmware changed as of openocd
v0.11. As this is the version packaged by Debian Bullseye, add the
firmware for convince.

Signed-off-by: Joel Stanley <joel@jms.id.au>
remove-potato-uart
Joel Stanley 3 years ago
parent 6523acc743
commit 24a34899b4

@ -23,10 +23,11 @@ Info : JTAG tap: xc7.tap tap/device found: 0x0362d093 (mfg: 0x049 (Xilinx), part
Error: Unknown flash device (ID 0x00ffffff) Error: Unknown flash device (ID 0x00ffffff)


If you find yourself with a later openocd version that contians 867bdb2e9248 If you find yourself with a later openocd version that contians 867bdb2e9248
("jtagspi: new protocol that includes transfer length") you should fetch the ("jtagspi: new protocol that includes transfer length"), such as v0.11 as
bitstream from the master branch: packaged by Debian Bullseye, you should use the bitstream from the master
branch:


https://github.com/quartiq/bscan_spi_bitstreams/blob/master/bscan_spi_xc7a35t.bit?raw=true https://github.com/quartiq/bscan_spi_bitstreams/blob/master/bscan_spi_xc7a35t.bit?raw=true
https://github.com/quartiq/bscan_spi_bitstreams/blob/master/bscan_spi_xc7a100t.bit?raw=true https://github.com/quartiq/bscan_spi_bitstreams/blob/master/bscan_spi_xc7a100t.bit?raw=true



These are in the microwatt repository as bscan_spi_xc7a*t_openocd_v0.11.bit.

@ -20,6 +20,15 @@ def flash(config, flash_proxy, address, data, filetype="", set_qe=False):
print(script) print(script)
subprocess.call(["openocd", "-f", config, "-c", script]) subprocess.call(["openocd", "-f", config, "-c", script])


def get_version():
a = subprocess.run(["openocd", "-v"], capture_output=True)
if a.returncode != 0:
return ""
if a.stderr.count(b"0.10"):
return ""
if a.stderr.count(b"0.11"):
return "_openocd_v0.11"

parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("file", help="file to write to flash") parser.add_argument("file", help="file to write to flash")
parser.add_argument("-a", "--address", help="offset in flash", type=lambda x: int(x,0), default=0) parser.add_argument("-a", "--address", help="offset in flash", type=lambda x: int(x,0), default=0)
@ -27,12 +36,14 @@ parser.add_argument("-f", "--fpga", help="a35, a100 or a200", default="a35")
parser.add_argument("-t", "--filetype", help="file type such as 'bin'", default="") parser.add_argument("-t", "--filetype", help="file type such as 'bin'", default="")
args = parser.parse_args() args = parser.parse_args()


version = get_version()

if args.fpga.lower() == "a35": if args.fpga.lower() == "a35":
proxy = "bscan_spi_xc7a35t.bit" proxy = "bscan_spi_xc7a35t{}.bit".format(version)
elif args.fpga.lower() == "a100": elif args.fpga.lower() == "a100":
proxy = "bscan_spi_xc7a100t.bit" proxy = "bscan_spi_xc7a100t{}.bit".format(version)
elif args.fpga.lower() == "a200": elif args.fpga.lower() == "a200":
proxy = "bscan_spi_xc7a200t.bit" proxy = "bscan_spi_xc7a200t{}.bit".format(version)
else: else:
print("error: specify a35, a100 or a200 when flashing") print("error: specify a35, a100 or a200 when flashing")
sys.exit() sys.exit()

@ -51,10 +51,10 @@ proc jtagspi_program {bin addr {type ""} } {
global _FLASHNAME global _FLASHNAME
if { $type eq "" } { if { $type eq "" } {
flash write_image erase $bin $addr flash write_image erase $bin $addr
flash verify_bank $_FLASHNAME $bin $addr flash verify_image $bin $addr
} else { } else {
flash write_image erase $bin $addr $type flash write_image erase $bin $addr $type
flash verify_bank $_FLASHNAME $bin $addr $type flash verify_image $bin $addr $type
} }
} }
# end jtagspi.cfg # end jtagspi.cfg

Loading…
Cancel
Save