mirror of https://github.com/m-labs/artiq.git
add netboot tool
This commit is contained in:
parent
462cf5967e
commit
88dbff46f4
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import socket
|
||||||
|
import struct
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description="ARTIQ netboot tool")
|
||||||
|
parser.add_argument("hostname", metavar="HOSTNAME",
|
||||||
|
help="hostname of the target board")
|
||||||
|
parser.add_argument("-f", "--firmware", nargs=1,
|
||||||
|
help="firmware to load")
|
||||||
|
parser.add_argument("-b", "--boot", action="store_true",
|
||||||
|
help="boot the device")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
sock = socket.create_connection((args.hostname, 4269))
|
||||||
|
try:
|
||||||
|
if args.firmware is not None:
|
||||||
|
with open(args.firmware[0], "rb") as input_file:
|
||||||
|
sock.sendall(b"F")
|
||||||
|
sock.sendall(struct.pack(">I", os.fstat(input_file.fileno()).st_size))
|
||||||
|
while True:
|
||||||
|
data = input_file.read(4096)
|
||||||
|
if not data:
|
||||||
|
break
|
||||||
|
sock.sendall(data)
|
||||||
|
sock.sendall(b"OK")
|
||||||
|
if args.boot:
|
||||||
|
sock.sendall(b"B")
|
||||||
|
finally:
|
||||||
|
sock.close()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
1
setup.py
1
setup.py
|
@ -25,6 +25,7 @@ console_scripts = [
|
||||||
"artiq_coremgmt = artiq.frontend.artiq_coremgmt:main",
|
"artiq_coremgmt = artiq.frontend.artiq_coremgmt:main",
|
||||||
"artiq_ctlmgr = artiq.frontend.artiq_ctlmgr:main",
|
"artiq_ctlmgr = artiq.frontend.artiq_ctlmgr:main",
|
||||||
"artiq_ddb_template = artiq.frontend.artiq_ddb_template:main",
|
"artiq_ddb_template = artiq.frontend.artiq_ddb_template:main",
|
||||||
|
"artiq_netboot = artiq.frontend.artiq_netboot:main",
|
||||||
"artiq_devtool = artiq.frontend.artiq_devtool:main",
|
"artiq_devtool = artiq.frontend.artiq_devtool:main",
|
||||||
"artiq_influxdb = artiq.frontend.artiq_influxdb:main",
|
"artiq_influxdb = artiq.frontend.artiq_influxdb:main",
|
||||||
"artiq_influxdb_schedule = artiq.frontend.artiq_influxdb_schedule:main",
|
"artiq_influxdb_schedule = artiq.frontend.artiq_influxdb_schedule:main",
|
||||||
|
|
Loading…
Reference in New Issue