crashtest-r0ket/tools/bootloader/gangflash

116 lines
3.6 KiB
Python
Executable File

#!/usr/bin/env python
# -*- coding: utf8 -*-
import os
import time
import shutil
def flash(count, target, firmware):
flashed = []
while len(flashed) != count:
filelist = []
try:
filelist = os.listdir(target)
except:
pass
oldflashed = flashed
flashed = []
for x in oldflashed:
if x in filelist:
flashed.append(x)
else:
print "removed %s" % x
filelist = [x for x in filelist if x not in flashed]
print "filelist", filelist
for device in filelist:
try:
print "open", firmware
f = open(firmware, "r")
print "open", target + device
dev = open(target + device, "w")
dev.seek(0x800)
print "write"
dev.write(f.read())
print "close f"
f.close()
print "close dev"
dev.close()
print "flashed %s" % device
except Exception, ex:
print "error!"
print ex
flashed.append(device)
time.sleep(1)
def copy(count, target, dir):
flashed = []
#filestocopy = os.listdir(dir)
os.mkdir("/tmp/r0ket")
while len(flashed) != count:
filelist = []
while len(filelist) != count:
try:
filelist = os.listdir(target)
except:
pass
oldflashed = flashed
flashed = []
for x in oldflashed:
if x in filelist:
flashed.append(x)
else:
print "removed %s" % x
filelist = [x for x in filelist if x not in flashed]
print "filelist:",filelist
for device in filelist:
try:
time.sleep(0.3)
print "mkdir", "/tmp/r0ket/"+device
os.mkdir("/tmp/r0ket/"+device)
print "mount -t vfat "+target+device+" "+"/tmp/r0ket/"+device
x = 1
while x != 0:
x = os.system("mount -t vfat "+target+device+" "+"/tmp/r0ket/"+device)
print "returned", x
if x != 0:
time.sleep(5)
os.system("../tools/crypto/generate-keys")
#for file in filestocopy:
print "cp "+dir+"/* /tmp/r0ket/"+device
os.system("cp "+dir+"/* /tmp/r0ket/"+device)
print "flashed %s" % device
except Exception, ex:
print "error!"
print ex
flashed.append(device)
print "sync"
os.system("sync")
mounted = os.listdir("/tmp/r0ket")
print "mounted", mounted
for mount in mounted:
print "touch /tmp/r0ket/"+mount+"/flashed.cfg"
os.system("touch /tmp/r0ket/"+mount+"/flashed.cfg")
print "sync"
os.system("sync")
time.sleep(1)
print "umount /tmp/r0ket/"+mount
os.system("umount /tmp/r0ket/"+mount)
print "rm /tmp/r0ket/"+mount
os.rmdir("/tmp/r0ket/"+mount)
time.sleep(1)
print "rm /tmp/r0ket"
os.rmdir("/tmp/r0ket")
os.system("umount /tmp/r0ket/*")
os.system("rm /tmp/r0ket -rf")
os.system("rm /dev/r0ketflash/*")
while True:
raw_input("Flashed firmware.\nNow cycle power and press enter.")
flash(9, "/dev/lpcflash/", "initial.bin")
raw_input("Flashed bootstrap firmware.\nNow cycle power and press enter.")
copy(9, "/dev/r0ketflash/","files")
flash(9, "/dev/lpcflash/", "final.bin")