3 #GoodFET SPI Flash Client
7 #Might be Winbond W25x80-specific.
13 from GoodFETEM260 import GoodFETEM260;
14 from intelhex import IntelHex;
17 print "Usage: %s verb [objects]\n" % sys.argv[0];
18 print "%s info" % sys.argv[0];
19 print "%s test" % sys.argv[0];
20 print "%s randtest" % sys.argv[0];
21 #print "%s dump $foo.rom [0x$start 0x$stop]" % sys.argv[0];
22 #print "%s erase" % sys.argv[0];
23 #print "%s flash $foo.rom [0x$start 0x$stop]" % sys.argv[0];
24 #print "%s verify $foo.rom [0x$start 0x$stop]" % sys.argv[0];
25 print "%s peek 0x$start [0x$stop]" % sys.argv[0];
26 print "%s poke 0x$adr 0x$val" % sys.argv[0];
29 #Initialize FET and set baud rate
30 client=GoodFETEM260();
37 #Might read as all ones if chip has a startup delay.
38 client.EM260spiversion();
40 if(sys.argv[1]=="info"):
42 if(sys.argv[1]=="test"):
43 print "Grabbing info three times."
48 print "Some random numbers from EZSP."
49 for foo in range(0,4):
50 print "%04x" % client.rand16();
51 if(sys.argv[1]=="randtest"):
62 if(sys.argv[1]=="dump"):
67 start=int(sys.argv[3],16);
69 stop=int(sys.argv[4],16);
71 print "Dumping from %04x to %04x as %s." % (start,stop,f);
76 print "Dumped %04x=%02x."%(i,data);
81 if(sys.argv[1]=="peek"):
84 start=int(sys.argv[2],16);
87 stop=int(sys.argv[3],16);
88 print "Peeking from %04x to %04x." % (start,stop);
90 print "%04x: %02x" % (start,client.peek8(start));
92 if(sys.argv[1]=="poke"):
95 start=int(sys.argv[2],16);
98 val=int(sys.argv[3],16);
99 print "Poking %02x to be %02x." % (start,val);
100 client.poke8(start,val);