1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/upload.py Tue Jan 20 01:41:12 2015 +0100
1.3 @@ -0,0 +1,69 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +from serial import Serial
1.7 +import sys
1.8 +
1.9 +def console(initial=None):
1.10 + if initial:
1.11 + s.write(initial)
1.12 +
1.13 + try:
1.14 + while 1:
1.15 + s.write(raw_input(s.readline()) + "\n")
1.16 + except EOFError:
1.17 + print "Session closed."
1.18 +
1.19 +def upload(filename, sector):
1.20 + data = open(filename, "rb").read()
1.21 +
1.22 + if len(data) != 0x4000:
1.23 + print >>sys.stderr, "File", filename, "is not", 0x4000, "bytes long."
1.24 + return False
1.25 +
1.26 + print >>sys.stderr, "Erasing sector", sector, "..."
1.27 +
1.28 + s.write("S%x\n" % sector)
1.29 + resp = s.readline().rstrip("\r\n")
1.30 + if resp != "S":
1.31 + print >>sys.stderr, "Sector %d erase failed: %s" % (sector, resp)
1.32 + return False
1.33 +
1.34 + print >>sys.stderr, "Uploading", filename, "to sector", sector, "..."
1.35 +
1.36 + i = 0
1.37 + while i < 0x4000:
1.38 + value = ord(data[i])
1.39 + addr = (sector << 14) | i
1.40 + s.write("P%04x%02x\n" % (addr, value))
1.41 + print >>sys.stderr, "P%04x%02x" % (addr, value)
1.42 + resp = s.readline().rstrip("\r\n")
1.43 + if resp != "P":
1.44 + print >>sys.stderr, "Program of location %04x failed: %s" % (addr, resp)
1.45 + return False
1.46 + #s.write("R%04x\n" % addr)
1.47 + #print >>sys.stderr, "R%04x" % addr
1.48 + #readvalue = s.readline().rstrip("\r\n")
1.49 + #if readvalue != ("%X" % value):
1.50 + # print >>sys.stderr, "Program of location %04x failed: %s read for %s written." % (addr, readvalue, "%X" % value)
1.51 + # return False
1.52 + i += 1
1.53 +
1.54 + return True
1.55 +
1.56 +if __name__ == "__main__":
1.57 + port = "/dev/ttyUSB0"
1.58 + rate = 115200
1.59 +
1.60 + s = Serial(port, rate)
1.61 +
1.62 + if "-i" in sys.argv:
1.63 + console()
1.64 + elif len(sys.argv) > 1:
1.65 + s.readline()
1.66 + for sector, filename in enumerate(sys.argv[1:]):
1.67 + upload(filename, sector)
1.68 + else:
1.69 + print >>sys.stderr, sys.argv[0], "-i | <filename>..."
1.70 + sys.exit(1)
1.71 +
1.72 +# vim: tabstop=4 expandtab shiftwidth=4