3 #GoodFET I2C eeprom Client
9 from GoodFETI2C import GoodFETI2C
10 #from intelhex import IntelHex
13 print "Usage: %s verb [objects]\n" % sys.argv[0]
14 print "%s dump 0x$target $filename.bin [0x$start [0x$length]]" % sys.argv[0]
15 print "%s read 0x$target [0x$start [0x$length]]" % sys.argv[0]
16 print "%s write 0x$target 0x$adr 0x$val [0x...]" % sys.argv[0]
19 #Initialize FET and set baud rate
25 control_chars = ''.join(map(chr, range(0,32) + range(127,256)))
26 control_char_re = re.compile('[%s]' % re.escape(control_chars))
29 """Replace non-printing-characters with dots"""
30 return control_char_re.sub('.', s)
33 for offset in range(0, len(data), 16):
34 line = data[offset:offset+16]
35 hex = binascii.hexlify(line)
36 print "%07x: %4s %4s %4s %4s %4s %4s %4s %4s %s" %tuple([offset] + [hex[s:s+4] for s in range(0,32,4)] + [dotnpc(line)])
38 if(sys.argv[1]=="dump"):
39 devadr = int(sys.argv[2],16)
44 start=int(sys.argv[4],16)
46 count=int(sys.argv[5],16)
48 print "Dumping %i bytes from device 0x%02x starting at 0x%02x to file: %s." % (count,devadr,start,f)
49 file = open(f, mode='wb')
50 data=client.I2Ctrans(count, [devadr, start])
51 print "Dumped %i bytes."%len(data)
55 if(sys.argv[1]=="read"):
56 devadr = int(sys.argv[2],16)
59 start=int(sys.argv[3],16)
62 count=int(sys.argv[4],16)
63 print "Reading %i bytes from device 0x%02x starting at 0x%02x." % (count,devadr,start)
64 data=client.I2Ctrans(count, [devadr, start])
68 print "No data received"
70 if(sys.argv[1]=="write"):
72 data=[int(x,16) for x in sys.argv[2:]]
73 for i,byte in enumerate(data):
74 print "0x%02x: 0x%02x" % (i,byte)
75 client.I2Cwritebytes(data)