scripts: make eva_ramboot.py offset configurable
[openwrt/openwrt.git] / scripts / flashing / eva_ramboot.py
index b825d2768b9897b9735f0a761a6ef57c624545dc..b182f09d21c7232b5cc66d9fdefa489c523bc60f 100755 (executable)
@@ -1,24 +1,32 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
+
+import argparse
 
 from ftplib import FTP
 from sys import argv
 from os import stat
 
-assert len(argv) == 3
-ip = argv[1]
-image = argv[2]
+parser = argparse.ArgumentParser(description='Tool to boot AVM EVA ramdisk images.')
+parser.add_argument('ip', type=str, help='IP-address to transfer the image to')
+parser.add_argument('image', type=str, help='Location of the ramdisk image')
+parser.add_argument('--offset', type=lambda x: int(x,0), help='Offset to load the image to in hex format with leading 0x. Only needed for non-lantiq devices.')
+args = parser.parse_args()
 
-size = stat(image).st_size
+size = stat(args.image).st_size
 # arbitrary size limit, to prevent the address calculations from overflows etc.
 assert size < 0x2000000
 
-# We need to align the address. A page boundary seems to be sufficient on 7362sl
-# and 7412
-addr = ((0x8000000 - size) & ~0xfff)
-haddr = 0x80000000 + addr
-img = open(image, "rb")
+if args.offset:
+       addr = size
+       haddr = args.offset
+else:
+       # We need to align the address.
+       # A page boundary seems to be sufficient on 7362sl and 7412
+       addr = ((0x8000000 - size) & ~0xfff)
+       haddr = 0x80000000 + addr
 
-ftp = FTP(ip, 'adam2', 'adam2')
+img = open(args.image, "rb")
+ftp = FTP(args.ip, 'adam2', 'adam2')
 
 def adam(cmd):
        print("> %s"%(cmd))