added packet fuzzing
[goodfet] / client / goodfet.em260
index ff29934..ba383dc 100755 (executable)
@@ -3,8 +3,17 @@
 #GoodFET SPI Flash Client
 #by Travis Goodspeed
 
-#N.B.,
-#Might be Winbond W25x80-specific.
+# Pinout:
+#  1 MISO
+#  2 VCC
+#  3 MOSI
+#  4
+#  5 !SS
+#  6
+#  7 CLK
+#  8 !HOST_INT
+#  9 GND
+# 11 !WAKE
 
 import sys;
 import binascii;
@@ -16,12 +25,14 @@ from intelhex import IntelHex;
 if(len(sys.argv)==1):
     print "Usage: %s verb [objects]\n" % sys.argv[0];
     print "%s info" % sys.argv[0];
-    print "%s dump $foo.rom [0x$start 0x$stop]" % sys.argv[0];
+    print "%s test" % sys.argv[0];
+    print "%s randtest" % sys.argv[0];
+    #print "%s dump $foo.rom [0x$start 0x$stop]" % sys.argv[0];
     #print "%s erase" % sys.argv[0];
     #print "%s flash $foo.rom [0x$start 0x$stop]" % sys.argv[0];
     #print "%s verify $foo.rom [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];
+    print "%s poke 0x$adr 0x$val" % sys.argv[0];
     sys.exit();
 
 #Initialize FET and set baud rate
@@ -33,13 +44,36 @@ client.SPIsetup();
 
 #Dummy read.
 #Might read as all ones if chip has a startup delay.
+client.EM260spiversion();
 
 if(sys.argv[1]=="info"):
-       client.info();
+    client.info();
 if(sys.argv[1]=="test"):
-       for adr in range(0,32): #*1024):
-            val=client.peek8(adr);
-            print "%04x:=%02x" % (adr,val);
+    print "Grabbing info three times."
+    client.info();
+    client.info();
+    client.info();
+    
+    print "Some random numbers from EZSP."
+    for foo in range(0,4):
+        print "%04x" % client.rand16();
+if(sys.argv[1]=="randtest"):
+    print "Even Odd HEven LEven Hodd Lodd "
+    max=2**33;
+    foo=0;
+    while foo<max:
+        even=client.rand16();
+        odd=client.rand16();
+        print "%8i %8i %8i %8i %8i %8i" % (
+            even,
+            odd,
+            even>>8,
+            even&0xFF,
+            odd>>8,
+            odd&0xFF);
+        sys.stdout.flush()
+        foo=foo+1;
+
 if(sys.argv[1]=="dump"):
     f = sys.argv[2];
     start=0x0000;
@@ -70,3 +104,13 @@ if(sys.argv[1]=="peek"):
     while start<=stop:
         print "%04x: %02x" % (start,client.peek8(start));
         start=start+1;
+if(sys.argv[1]=="poke"):
+    start=0x0000;
+    if(len(sys.argv)>2):
+       start=int(sys.argv[2],16);
+    val=0xde;
+    if(len(sys.argv)>3):
+        val=int(sys.argv[3],16);
+    print "Poking %02x to be %02x." % (start,val);
+    client.poke8(start,val);
+