1
0
mirror of https://github.com/antonblanchard/microwatt.git synced 2026-01-11 23:43:15 +00:00

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>
This commit is contained in:
Joel Stanley 2021-02-17 17:09:47 +10:30
parent 6523acc743
commit 24a34899b4
6 changed files with 20 additions and 8 deletions

View File

@ -23,10 +23,11 @@ Info : JTAG tap: xc7.tap tap/device found: 0x0362d093 (mfg: 0x049 (Xilinx), part
Error: Unknown flash device (ID 0x00ffffff)
If you find yourself with a later openocd version that contians 867bdb2e9248
("jtagspi: new protocol that includes transfer length") you should fetch the
bitstream from the master branch:
("jtagspi: new protocol that includes transfer length"), such as v0.11 as
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_xc7a100t.bit?raw=true
These are in the microwatt repository as bscan_spi_xc7a*t_openocd_v0.11.bit.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -20,6 +20,15 @@ def flash(config, flash_proxy, address, data, filetype="", set_qe=False):
print(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.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)
@ -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="")
args = parser.parse_args()
version = get_version()
if args.fpga.lower() == "a35":
proxy = "bscan_spi_xc7a35t.bit"
proxy = "bscan_spi_xc7a35t{}.bit".format(version)
elif args.fpga.lower() == "a100":
proxy = "bscan_spi_xc7a100t.bit"
proxy = "bscan_spi_xc7a100t{}.bit".format(version)
elif args.fpga.lower() == "a200":
proxy = "bscan_spi_xc7a200t.bit"
proxy = "bscan_spi_xc7a200t{}.bit".format(version)
else:
print("error: specify a35, a100 or a200 when flashing")
sys.exit()

View File

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