crashtest-r0ket/tools/bootloader/simpleflash

74 lines
1.6 KiB
Plaintext
Raw Normal View History

#!/usr/bin/python
import time
import os
import sys
def getMounts():
d = {}
f = open('/proc/mounts')
for l in f:
if l[0] == '/':
l = l.split()
d[l[0]] = l[1].replace("\\040"," ")
return d
def check(path):
filename = path + '/firmware.bin'
try:
f = open(filename,'r')
size = os.path.getsize(filename)
if f and size == 32*1024:
f.close()
return filename
except:
pass
return None
flashed = []
if len(sys.argv) < 2:
print "Please specify a file to flash."
exit(1)
if len(sys.argv) < 3:
loop = False
else:
loop = True
firmwarefile = sys.argv[1]
print "Firmware to flash:", firmwarefile
print "Searching for a mounted r0ket flash file system."
print "Please connect a r0ket in ISP mode and mount it or have it mounted by your system."
while True:
mounts = getMounts()
unflashed = []
for device in mounts:
if not device in flashed:
unflashed.append(device)
tmp = list(flashed)
flashed = []
for device in tmp:
if device in mounts:
flashed.append(device)
for device in unflashed:
filename = check(mounts[device])
if filename:
print "writing firmware to", filename
ff = open(filename, "r+")
firmware = open(firmwarefile)
ff.write(firmware.read())
ff.flush()
os.fsync(ff.fileno())
ff.close()
firmware.close()
print 'done'
flashed.append(device)
if not loop:
exit(0)
#print mounts
time.sleep(1)