added flasher which does not require udev rules
This commit is contained in:
parent
db6a4166f8
commit
03d7c65856
|
@ -0,0 +1,73 @@
|
|||
#!/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)
|
Loading…
Reference in New Issue