# HG changeset patch # User Paul Boddie # Date 1421714472 -3600 # Node ID afad18e14ce9d4bb4369d94584af800365e73ef0 # Parent 082a1288126973d16c7cc3202474da62ec4af9dd Added a simple client program for uploading data. diff -r 082a12881269 -r afad18e14ce9 upload.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upload.py Tue Jan 20 01:41:12 2015 +0100 @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +from serial import Serial +import sys + +def console(initial=None): + if initial: + s.write(initial) + + try: + while 1: + s.write(raw_input(s.readline()) + "\n") + except EOFError: + print "Session closed." + +def upload(filename, sector): + data = open(filename, "rb").read() + + if len(data) != 0x4000: + print >>sys.stderr, "File", filename, "is not", 0x4000, "bytes long." + return False + + print >>sys.stderr, "Erasing sector", sector, "..." + + s.write("S%x\n" % sector) + resp = s.readline().rstrip("\r\n") + if resp != "S": + print >>sys.stderr, "Sector %d erase failed: %s" % (sector, resp) + return False + + print >>sys.stderr, "Uploading", filename, "to sector", sector, "..." + + i = 0 + while i < 0x4000: + value = ord(data[i]) + addr = (sector << 14) | i + s.write("P%04x%02x\n" % (addr, value)) + print >>sys.stderr, "P%04x%02x" % (addr, value) + resp = s.readline().rstrip("\r\n") + if resp != "P": + print >>sys.stderr, "Program of location %04x failed: %s" % (addr, resp) + return False + #s.write("R%04x\n" % addr) + #print >>sys.stderr, "R%04x" % addr + #readvalue = s.readline().rstrip("\r\n") + #if readvalue != ("%X" % value): + # print >>sys.stderr, "Program of location %04x failed: %s read for %s written." % (addr, readvalue, "%X" % value) + # return False + i += 1 + + return True + +if __name__ == "__main__": + port = "/dev/ttyUSB0" + rate = 115200 + + s = Serial(port, rate) + + if "-i" in sys.argv: + console() + elif len(sys.argv) > 1: + s.readline() + for sector, filename in enumerate(sys.argv[1:]): + upload(filename, sector) + else: + print >>sys.stderr, sys.argv[0], "-i | ..." + sys.exit(1) + +# vim: tabstop=4 expandtab shiftwidth=4