6 from GoodFET import GoodFET;
7 from intelhex import IntelHex;
12 print "Usage: %s verb [objects]\n" % sys.argv[0];
13 print "%s test" % sys.argv[0];
14 print "%s info" % sys.argv[0];
15 print "%s dumpcode $foo.hex [0x$start 0x$stop]" % sys.argv[0];
16 print "%s dumpdata $foo.hex [0x$start 0x$stop]" % sys.argv[0];
17 print "%s erase" % sys.argv[0];
18 print "%s writedata $foo.hex [0x$start 0x$stop]" % sys.argv[0];
19 print "%s verify $foo.hex [0x$start 0x$stop]" % sys.argv[0];
20 print "%s peekdata 0x$start [0x$stop]" % sys.argv[0];
21 print "%s pokedata 0x$adr 0x$val" % sys.argv[0];
22 #print "%s peekcode 0x$start [0x$stop]" % sys.argv[0];
25 #Initailize FET and set baud rate
27 client.serInit("/dev/ttyUSB0")
33 if(sys.argv[1]=="test"):
35 if(sys.argv[1]=="dumpcode"):
40 start=int(sys.argv[3],16);
42 stop=int(sys.argv[4],16);
44 print "Dumping code from %04x to %04x as %s." % (start,stop,f);
48 h[i>>1]=client.CCpeekcodebyte(i);
50 print "Dumped %04x."%i;
53 if(sys.argv[1]=="dumpdata"):
58 start=int(sys.argv[3],16);
60 stop=int(sys.argv[4],16);
62 print "Dumping data from %04x to %04x as %s." % (start,stop,f);
66 h[i]=client.CCpeekdatabyte(i);
68 print "Dumped %04x."%i;
71 if(sys.argv[1]=="erase"):
72 print "Status: %s" % client.CCstatusstr();
74 print "Status: %s" %client.CCstatusstr();
76 if(sys.argv[1]=="flash"):
81 start=int(sys.argv[3],16);
83 stop=int(sys.argv[4],16);
87 client.MSP430masserase();
88 for i in h._buf.keys():
89 #print "%04x: %04x"%(i,h[i>>1]);
90 if(i>=start and i<=stop and i&1==0):
91 client.MSP430writeflash(i,h[i>>1]);
94 if(sys.argv[1]=="writedata"):
99 start=int(sys.argv[3],16);
101 stop=int(sys.argv[4],16);
105 for i in h._buf.keys():
106 if(i>=start and i<=stop):
107 client.CCpokedatabyte(i,h[i]);
110 if(sys.argv[1]=="flashtest"):
111 client.MSP430flashtest();
112 if(sys.argv[1]=="verifycode"):
117 start=int(sys.argv[3],16);
119 stop=int(sys.argv[4],16);
122 for i in h._buf.keys():
123 if(i>=start and i<=stop):
124 peek=client.MSP430peek(i)
126 print "ERROR at %04x, found %04x not %04x"%(i,peek,h[i>>1]);
129 if(sys.argv[1]=="peekdata"):
132 start=int(sys.argv[2],16);
135 stop=int(sys.argv[3],16);
136 print "Peeking from %04x to %04x." % (start,stop);
138 print "%04x: %02x" % (start,client.CCpeekdatabyte(start));
140 if(sys.argv[1]=="pokedata"):
144 start=int(sys.argv[2],16);
146 val=int(sys.argv[3],16);
147 print "Poking %04x to become %02x." % (start,val);
148 client.CCpokedatabyte(start,val);