Nothing major.
[goodfet] / client / goodfet.monitor
1 #!/usr/bin/env python
2
3 import sys;
4 import binascii;
5
6 from GoodFET import GoodFET;
7 from intelhex import IntelHex16bit;
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 dump $foo.hex [0x$start 0x$stop]" % sys.argv[0];
13     print "%s ivt" % sys.argv[0];
14     print "%s peek [0x$start 0x$stop]" % sys.argv[0];
15     print "%s verify $foo.hex [0x$start 0x$stop]" % sys.argv[0];
16     print "%s ramfill" % sys.argv[0];
17     print "%s ramdepth" % sys.argv[0];
18     print "%s info" % sys.argv[0];
19     sys.exit();
20
21 #Initailize FET and set baud rate
22 client=GoodFET();
23 client.serInit()
24
25
26 if(sys.argv[1]=="info"):
27     a=client.peekbyte(0xff0);
28     b=client.peekbyte(0xff1);
29     print "GoodFET with %02x%02x MCU" % (a,b);
30 if(sys.argv[1]=="ramfill"):
31     client.monitor_ram_pattern();
32 if(sys.argv[1]=="ramdepth"):
33     print "0x%04x RAM bytes free." % client.monitor_ram_depth();
34 if(sys.argv[1]=="test"):
35     client.monitortest();
36 if(sys.argv[1]=="findbaud"):
37     client.findbaud();
38 if(sys.argv[1]=="dump"):
39     f = sys.argv[2];
40     start=0x0200;
41     stop=0xFFFF;
42     if(len(sys.argv)>3):
43         start=int(sys.argv[3],16);
44     if(len(sys.argv)>4):
45         stop=int(sys.argv[4],16);
46     
47     print "Dumping from %04x to %04x as %s." % (start,stop,f);
48     h = IntelHex16bit(None);
49     i=start;
50     while i<stop:
51         h[i>>1]=client.peekword(i);
52         if(i%0x100==0):
53             print "Dumped %04x."%i;
54         i+=2;
55     h.write_hex_file(f);
56 if(sys.argv[1]=="erase"):
57     client.masserase();
58 if(sys.argv[1]=="ivt"):
59     client.dumpmem(0xFFE0,0xFFFF);
60
61 if(sys.argv[1]=="peek"):
62     start=0xFFE0;
63     stop=0xFFFF;
64     if(len(sys.argv)>2):
65         start=int(sys.argv[2],16);
66         stop=start+1
67     if(len(sys.argv)>3):
68         stop=int(sys.argv[3],16);
69     
70     client.dumpmem(start,stop);
71 if(sys.argv[1]=="verify"):
72     f=sys.argv[2];
73     start=0;
74     stop=0xFFFF;
75     if(len(sys.argv)>3):
76         start=int(sys.argv[3],16);
77     if(len(sys.argv)>4):
78         stop=int(sys.argv[4],16);
79     
80     h = IntelHex16bit(f);
81     for i in h._buf.keys():
82         if(i>=start and i<stop and i&1==0):
83             peek=client.peek(i)
84             if(h[i>>1]!=peek):
85                 print "ERROR at %04x, found %04x not %04x"%(i,peek,h[i>>1]);
86             if(i%0x100==0):
87                 print "%04x" % i;
88
89 if(sys.argv[1]=="whatever"):
90     for i in [0x24FF, 0x2500, 0x2502, 0x2504]:
91         print "%04x" % client.peekword(i);
92