aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/flashing/eva_ramboot.py
blob: b825d2768b9897b9735f0a761a6ef57c624545dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/python

from ftplib import FTP
from sys import argv
from os import stat

assert len(argv) == 3
ip = argv[1]
image = argv[2]

size = stat(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")

ftp = FTP(ip, 'adam2', 'adam2')

def adam(cmd):
	print("> %s"%(cmd))
	resp = ftp.sendcmd(cmd)
	print("< %s"%(resp))
	assert resp[0:3] == "200"

ftp.set_pasv(True)
# The following parameters allow booting the avm recovery system with this
# script.
adam('SETENV memsize 0x%08x'%(addr))
adam('SETENV kernel_args_tmp mtdram1=0x%08x,0x88000000'%(haddr))
adam('MEDIA SDRAM')
ftp.storbinary('STOR 0x%08x 0x88000000'%(haddr), img)
img.close()
ftp.close()