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.
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)
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()
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