6 from GoodFETAVR import GoodFETAVR;
7 from intelhex import IntelHex16bit, IntelHex;
10 print "Usage: %s verb [objects]\n" % sys.argv[0];
11 print "%s test" % sys.argv[0];
12 print "%s info" % sys.argv[0];
13 print "%s lockbits [value]" % sys.argv[0];
14 print "%s dumpflash $foo.hex [0x$start 0x$stop]" % sys.argv[0];
15 print "%s erase" % sys.argv[0];
16 #print "%s flash $foo.hex [0x$start 0x$stop]" % sys.argv[0];
17 #print "%s verify $foo.hex [0x$start 0x$stop]" % sys.argv[0];
18 print "%s peekeeprom 0x$start [0x$stop]" % sys.argv[0];
21 #Initialize FET and set baud rate
28 if(sys.argv[1]=="glitch"):
29 print "Identifies as %s" % client.identstr();
30 client.glitchVoltages(0x880, 0xfff);
33 print "Identifies as %s, fused 0x%02x" % (
36 if(sys.argv[1]=="glitchgraph"):
37 print "Identifies as %s" % client.identstr();
38 for voltage in range(0x860,0x890,5):
41 #five minutes for 1,80
42 #thirty minutes for 1,500
45 client.glitchVoltages(voltage, voltage);
47 if(client.lockbits()==0xFF):
50 print "%04x %s" % (voltage,str);
51 #print "%f, %i" % (voltage*(3.3/4096.0),count);
52 if(sys.argv[1]=="info"):
53 print "Identifies as %s" % client.identstr();
54 if(sys.argv[1]=="erase"):
55 print "Erasing %s" % client.identstr();
57 if(sys.argv[1]=="lockbits"):
58 print "Lockbits are 0x%02x" % client.lockbits();
60 print "Lockbits set 0x%02x" % client.setlockbits(int(sys.argv[2],16));
61 #if(sys.argv[1]=="lock"):
62 #if(sys.argv[1]=="unlock"):
66 if(sys.argv[1]=="dumpflash"):
71 start=int(sys.argv[3],16);
73 stop=int(sys.argv[4],16);
75 print "Dumping from %04x to %04x as %s." % (start,stop,f);
76 #h = IntelHex16bit(None);
80 data=client.flashpeekblock(i);
81 print "Dumped %06x."%i;
83 if i<=stop: h[i]=ord(j);
88 if(sys.argv[1]=="peekeeprom"):
91 start=int(sys.argv[2],16);
94 stop=int(sys.argv[3],16);
95 print "Peeking from %06x to %06x." % (start,stop);
97 print "%06x: %02x" % (start,client.eeprompeek(start));
100 if(sys.argv[1]=="peekflash"):
103 start=int(sys.argv[2],16);
106 stop=int(sys.argv[3],16);
107 print "Peeking from %06x to %06x." % (start,stop);
109 print "%06x: %02x" % (start,client.flashpeek(start));
112 if(sys.argv[1]=="pokeeeprom"):
116 start=int(sys.argv[2],16);
118 val=int(sys.argv[3],16);
119 client.eeprompoke(start,val);