forked from M-Labs/artiq
artiq_flash: support flashing satman
A bit ugly and ad-hoc but I cannot think of an easy and better option right now.
This commit is contained in:
parent
a897d82324
commit
38ce1f1d5d
|
@ -22,7 +22,7 @@ Valid actions:
|
||||||
* gateware: write gateware bitstream to flash
|
* gateware: write gateware bitstream to flash
|
||||||
* bootloader: write bootloader to flash
|
* bootloader: write bootloader to flash
|
||||||
* storage: write storage image to flash
|
* storage: write storage image to flash
|
||||||
* runtime: write runtime to flash
|
* firmware: write firmware to flash
|
||||||
* load: load gateware bitstream into device (volatile but fast)
|
* load: load gateware bitstream into device (volatile but fast)
|
||||||
* start: trigger the target to (re)load its gateware bitstream from flash
|
* start: trigger the target to (re)load its gateware bitstream from flash
|
||||||
|
|
||||||
|
@ -45,10 +45,10 @@ Prerequisites:
|
||||||
"when several are connected.")
|
"when several are connected.")
|
||||||
parser.add_argument("-f", "--storage", help="write file to storage area")
|
parser.add_argument("-f", "--storage", help="write file to storage area")
|
||||||
parser.add_argument("-d", "--dir", help="look for files in this directory")
|
parser.add_argument("-d", "--dir", help="look for files in this directory")
|
||||||
parser.add_argument("--srcbuild", help="look for bitstream, BIOS and runtime in this "
|
parser.add_argument("--srcbuild", help="look for bitstream, bootloader and firmware in this "
|
||||||
"ARTIQ source build tree")
|
"ARTIQ source build tree")
|
||||||
parser.add_argument("action", metavar="ACTION", nargs="*",
|
parser.add_argument("action", metavar="ACTION", nargs="*",
|
||||||
default="proxy gateware bootloader runtime start".split(),
|
default="proxy gateware bootloader firmware start".split(),
|
||||||
help="actions to perform, default: %(default)s")
|
help="actions to perform, default: %(default)s")
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
@ -196,30 +196,26 @@ def main():
|
||||||
"gateware": (0, 0x000000),
|
"gateware": (0, 0x000000),
|
||||||
"bootloader": (0, 0xaf0000),
|
"bootloader": (0, 0xaf0000),
|
||||||
"storage": (0, 0xb30000),
|
"storage": (0, 0xb30000),
|
||||||
"runtime": (0, 0xb40000),
|
"firmware": (0, 0xb40000),
|
||||||
},
|
},
|
||||||
"sayma": {
|
"sayma": {
|
||||||
"programmer_factory": ProgrammerSayma,
|
"programmer_factory": ProgrammerSayma,
|
||||||
"proxy_bitfile": "bscan_spi_xcku040-sayma.bit",
|
"proxy_bitfile": "bscan_spi_xcku040-sayma.bit",
|
||||||
"variants": ["standalone"],
|
"variants": ["standalone", "master", "satellite"],
|
||||||
"gateware": (0, 0x000000),
|
"gateware": (0, 0x000000),
|
||||||
"bootloader": (1, 0x000000),
|
"bootloader": (1, 0x000000),
|
||||||
"storage": (1, 0x040000),
|
"storage": (1, 0x040000),
|
||||||
"runtime": (1, 0x050000),
|
"firmware": (1, 0x050000),
|
||||||
},
|
},
|
||||||
}[opts.target]
|
}[opts.target]
|
||||||
|
|
||||||
variant = opts.variant
|
variant = opts.variant
|
||||||
if variant is not None and variant not in config["variants"]:
|
if variant is not None and variant not in config["variants"]:
|
||||||
raise SystemExit("Invalid variant for this board")
|
raise SystemExit("Invalid variant for this board")
|
||||||
if variant is None and config["variants"]:
|
if variant is None:
|
||||||
variant = config["variants"][0]
|
variant = config["variants"][0]
|
||||||
bin_dir = opts.dir
|
bin_dir = opts.dir
|
||||||
if bin_dir is None:
|
if bin_dir is None:
|
||||||
if variant is None:
|
|
||||||
bin_dir = os.path.join(artiq_dir, "binaries",
|
|
||||||
"{}".format(opts.target))
|
|
||||||
else:
|
|
||||||
bin_dir = os.path.join(artiq_dir, "binaries",
|
bin_dir = os.path.join(artiq_dir, "binaries",
|
||||||
"{}-{}".format(opts.target, variant))
|
"{}-{}".format(opts.target, variant))
|
||||||
if opts.srcbuild is None and not os.path.exists(bin_dir) and opts.action != ["start"]:
|
if opts.srcbuild is None and not os.path.exists(bin_dir) and opts.action != ["start"]:
|
||||||
|
@ -263,12 +259,17 @@ def main():
|
||||||
programmer.flash_binary(*config["bootloader"], os.path.join(path, "bootloader.bin"))
|
programmer.flash_binary(*config["bootloader"], os.path.join(path, "bootloader.bin"))
|
||||||
elif action == "storage":
|
elif action == "storage":
|
||||||
programmer.flash_binary(*config["storage"], opts.storage)
|
programmer.flash_binary(*config["storage"], opts.storage)
|
||||||
elif action == "runtime":
|
elif action == "firmware":
|
||||||
|
if variant == "satellite":
|
||||||
|
firmware_name = "satman"
|
||||||
|
else:
|
||||||
|
firmware_name = "runtime"
|
||||||
if opts.srcbuild is None:
|
if opts.srcbuild is None:
|
||||||
path = bin_dir
|
path = bin_dir
|
||||||
else:
|
else:
|
||||||
path = os.path.join(opts.srcbuild, "software", "runtime")
|
path = os.path.join(opts.srcbuild, "software", firmware_name)
|
||||||
programmer.flash_binary(*config["runtime"], os.path.join(path, "runtime.fbi"))
|
programmer.flash_binary(*config["firmware"],
|
||||||
|
os.path.join(path, firmware_name + ".fbi"))
|
||||||
elif action == "load":
|
elif action == "load":
|
||||||
if opts.srcbuild is None:
|
if opts.srcbuild is None:
|
||||||
path = bin_dir
|
path = bin_dir
|
||||||
|
|
Loading…
Reference in New Issue