1
0
mirror of https://github.com/antonblanchard/microwatt.git synced 2026-04-28 13:08:01 +00:00
Files
antonblanchard.microwatt/openocd/flash-arty
Joel Stanley 24a34899b4 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>
2021-02-24 17:12:39 +10:30

54 lines
1.7 KiB
Python
Executable File

#!/usr/bin/python3
import argparse
import os
import subprocess
import sys
BASE = os.path.dirname(os.path.abspath(__file__))
CONFIG = os.path.join(BASE, "xilinx-xc7.cfg")
def flash(config, flash_proxy, address, data, filetype="", set_qe=False):
script = "; ".join([
"init",
"jtagspi_init 0 {{{}}}".format(flash_proxy),
"jtagspi set_qe 0 1" if set_qe else "",
"jtagspi_program {{{}}} 0x{:x} {}".format(data, address, filetype),
"fpga_program",
"exit"
])
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("-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".format(version)
elif args.fpga.lower() == "a100":
proxy = "bscan_spi_xc7a100t{}.bit".format(version)
elif args.fpga.lower() == "a200":
proxy = "bscan_spi_xc7a200t{}.bit".format(version)
else:
print("error: specify a35, a100 or a200 when flashing")
sys.exit()
proxy = os.path.join(BASE, proxy)
flash(CONFIG, proxy, args.address, args.file, args.filetype.lower())