import binascii;
import array;
-from GoodFET import GoodFET;
+from GoodFETSPI import GoodFETSPIFlash;
from intelhex import IntelHex;
if(len(sys.argv)==1):
print "%s dump $foo.hex [0x$start 0x$stop]" % sys.argv[0];
print "%s erase" % sys.argv[0];
print "%s flash $foo.hex [0x$start 0x$stop]" % sys.argv[0];
- #print "%s verify $foo.hex [0x$start 0x$stop]" % sys.argv[0];
+ print "%s verify $foo.hex [0x$start 0x$stop]" % sys.argv[0];
print "%s peek 0x$start [0x$stop]" % sys.argv[0];
print "%s poke 0x$adr 0x$val" % sys.argv[0];
sys.exit();
-#Initailize FET and set baud rate
-client=GoodFET();
+#Initialize FET and set baud rate
+client=GoodFETSPIFlash();
client.serInit()
print "Dumping code from %06x to %06x as %s." % (start,stop,f);
file = open(f, mode='wb')
+
+ i=start;
+ while i<=stop:
+ data=client.SPIpeekblock(i,255);
+ #if(i%0x1000==0):
+ print "Dumped %06x."%i;
+ for j in data:
+ if i<stop: file.write(j);
+ i+=1;
+ file.close()
+if(sys.argv[1]=="verify"):
+ f = sys.argv[2];
+ start=0x0000;
+ stop=client.JEDECsize;
+ if(len(sys.argv)>3):
+ start=int(sys.argv[3],16);
+ if(len(sys.argv)>4):
+ stop=int(sys.argv[4],16);
+
+ print "Verifying code from %06x to %06x as %s." % (start,stop,f);
+ file = open(f, mode='rb')
+
i=start;
+ bits=0;
while i<=stop:
- data=client.SPIpeekblock(i);
- if(i%0x1000==0):
- print "Dumped %06x."%i;
+ data=client.SPIpeekblock(i,255);
+ print "Verified %06x." % i;
for j in data:
- file.write(j);
+ if i<stop:
+ bits|=ord(file.read(1))^ord(j);
i+=1;
+ if bits!=0:
+ print "Bits don't match."
+
file.close()
+
if(sys.argv[1]=="flash"):
f = sys.argv[2];
start=0x0000;
bytes=range(0,chunksize);
for j in range(0,chunksize):
bytes[j]=ord(chars[i+j]);
- #client.SPIpokebyte(i,ord(chars[i]));
client.SPIpokebytes(i,bytes);
i+=chunksize;