scripts: make eva_ramboot.py offset configurable
authorDavid Bauer <mail@david-bauer.net>
Mon, 18 Feb 2019 22:58:32 +0000 (23:58 +0100)
committerChristian Lamparter <chunkeey@gmail.com>
Thu, 28 Feb 2019 10:32:55 +0000 (11:32 +0100)
The current eva_ramboot.py script is currently only compatible with
Lantiq based AVM devices. For IPQ40xx devices, the offset needs to be
changed. Also an alignment is not necessary here.

Adjust the script to be able to pass an optional offset to load the
image to. In case no offset is provided, the script behaves exactly as
before this commit.

Signed-off-by: David Bauer <mail@david-bauer.net>
scripts/flashing/eva_ramboot.py

index b825d27..b182f09 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))