Pcileech/src/flash_fpga.py

39 lines
1.0 KiB
Python
Raw Normal View History

2025-06-26 00:25:16 +08:00
#!/usr/bin/env python3
"""
Flash a LambdaConcept Squirrel/Screamer (Artix-7 75T) with usbloader.
Usage:
sudo python3 flash_fpga.py output/firmware.bin
Needs:
usbloader binary in $PATH (https://docs.lambdaconcept.com/screamer/programming.html)
Board in JTAG/flash-mode (default power-on state)
"""
import argparse
import pathlib
import shutil
import subprocess
import sys
def run(cmd):
print(f"[flash] {cmd}")
subprocess.run(cmd, shell=True, check=True)
if __name__ == "__main__":
p = argparse.ArgumentParser()
p.add_argument("bitfile", help=".bin produced by build.py")
args = p.parse_args()
if shutil.which("usbloader") is None:
sys.exit("usbloader not found in PATH. Install it and retry.")
bit = pathlib.Path(args.bitfile).resolve()
if not bit.exists():
sys.exit(f"File not found: {bit}")
# Screamer/Squirrel default VID:PID = 1d50:6130
run(f"usbloader --vidpid 1d50:6130 -f {bit}")
print("[✓] Flash complete power-cycle or warm-reset the card.")