JTAG exit.
[goodfet] / client / goodfet.avr
1 #!/usr/bin/env python
2
3 import sys;
4 import binascii;
5
6 from GoodFETAVR import GoodFETAVR;
7 from intelhex import IntelHex16bit, IntelHex;
8
9 if(len(sys.argv)==1):
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" % sys.argv[0];
14     #print "%s dump $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];
19     sys.exit();
20
21 #Initialize FET and set baud rate
22 client=GoodFETAVR();
23 client.serInit()
24
25 #Connect to target
26 client.start();
27
28 if(sys.argv[1]=="info"):
29     print "Identifies as %s" % client.identstr();
30 if(sys.argv[1]=="erase"):
31     print "Erasing %s" % client.identstr();
32     client.erase();
33 if(sys.argv[1]=="lockbits"):
34     print "Lockbits are 0x%02x" % client.lockbits();
35
36 if(sys.argv[1]=="dump"):
37     f = sys.argv[2];
38     start=0x0000;
39     stop=0xFFFF;
40     if(len(sys.argv)>3):
41         start=int(sys.argv[3],16);
42     if(len(sys.argv)>4):
43         stop=int(sys.argv[4],16);
44     
45     print "Dumping from %04x to %04x as %s." % (start,stop,f);
46     #h = IntelHex16bit(None);
47     h = IntelHex(None);
48     i=start;
49     while i<=stop:
50         data=client.flashpeekblock(i);
51         print "Dumped %06x."%i;
52         for j in data:
53             if i<=stop: h[i]=ord(j);
54             i+=1;
55     h.write_hex_file(f);
56
57
58 if(sys.argv[1]=="peekeeprom"):
59     start=0x0000;
60     if(len(sys.argv)>2):
61         start=int(sys.argv[2],16);
62     stop=start;
63     if(len(sys.argv)>3):
64         stop=int(sys.argv[3],16);
65     print "Peeking from %06x to %06x." % (start,stop);
66     while start<=stop:
67         print "%06x: %02x" % (start,client.eeprompeek(start));
68         start=start+1;
69 if(sys.argv[1]=="peekflash"):
70     start=0x0000;
71     if(len(sys.argv)>2):
72         start=int(sys.argv[2],16);
73     stop=start;
74     if(len(sys.argv)>3):
75         stop=int(sys.argv[3],16);
76     print "Peeking from %06x to %06x." % (start,stop);
77     while start<=stop:
78         print "%06x: %02x" % (start,client.flashpeek(start));
79         start=start+1;
80
81 if(sys.argv[1]=="pokeeeprom"):
82     start=0x0000;
83     val=0x00;
84     if(len(sys.argv)>2):
85         start=int(sys.argv[2],16);
86     if(len(sys.argv)>3):
87         val=int(sys.argv[3],16);
88     client.eeprompoke(start,val);
89
90