Peek range for Chipcon IRAM.
[goodfet] / client / goodfet.cc
index d79d166..3f2860d 100755 (executable)
@@ -23,7 +23,9 @@ if(len(sys.argv)==1):
     print "%s verify $foo.hex [0x$start 0x$stop]" % sys.argv[0];
     print "%s peekdata 0x$start [0x$stop]" % sys.argv[0];
     print "%s pokedata 0x$adr 0x$val" % sys.argv[0];
-    #print "%s peekcode 0x$start [0x$stop]" % sys.argv[0];
+    print "%s peek 0x$iram" % sys.argv[0];
+    print "%s poke 0x$iram 0x$val" % sys.argv[0];
+    print "%s peekcode 0x$start [0x$stop]" % sys.argv[0];
     sys.exit();
 
 #Initailize FET and set baud rate
@@ -97,13 +99,28 @@ if(sys.argv[1]=="peekinfo"):
     while start<=stop:
         print "%04x: %02x" % (start,client.CCpeekcodebyte(start));
         start=start+1;
-if(sys.argv[1]=="peek"):
-    print "%02x" % client.CCpeekirambyte(int(sys.argv[2],16));
 if(sys.argv[1]=="poke"):
     client.CCpokeirambyte(int(sys.argv[2],16),
                           int(sys.argv[3],16));
 if(sys.argv[1]=="randtest"):
-    print "coming soon"
+    #Seed RNG
+    client.CCpokeirambyte(0xBD,0x01); #RNDH=0x01
+    client.CCpokeirambyte(0xB4,0x04); #ADCCON1=0x04
+    client.CCpokeirambyte(0xBD,0x01); #RNDH=0x01
+    client.CCpokeirambyte(0xB4,0x04); #ADCCON1=0x04
+    
+    #Dump values
+    for foo in range(1,10):
+        print "%02x" % client.CCpeekirambyte(0xBD); #RNDH
+        client.CCpokeirambyte(0xB4,0x04); #ADCCON1=0x04
+        client.CCreleasecpu();
+        client.CChaltcpu();
+    print "%02x" % client.CCpeekdatabyte(0xDF61); #CHIP ID
+if(sys.argv[1]=="adctest"):
+    # ADCTest 0xDF3A 0xDF3B
+    print "ADC TEST %02x%02x" % (
+        client.CCpeekdatabyte(0xDF3A),
+        client.CCpeekdatabyte(0xDF3B));
 if(sys.argv[1]=="config"):
     print "Config is %02x" % client.CCrd_config();
 
@@ -123,14 +140,14 @@ if(sys.argv[1]=="flash"):
      
      print "Wiping Flash."
      #Wipe all of flash.
-     client.CCchiperase();
+     #client.CCchiperase();
      #Wipe the RAM buffer for the next flash page.
-     client.CCeraseflashbuffer();
+     #client.CCeraseflashbuffer();
      for i in h._buf.keys():
          while(i>page+pagelen):
              if bcount>0:
                  client.CCflashpage(page);
-                 client.CCeraseflashbuffer();
+                 #client.CCeraseflashbuffer();
                  bcount=0;
                  print "Flashed page at %06x" % page
              page+=pagelen;
@@ -140,7 +157,7 @@ if(sys.argv[1]=="flash"):
                                h[i]);
          bcount+=1;
          if(i%0x100==0):
-                print "Buffering %04x to %06x" % (i,page);
+                print "Buffering %04x toward %06x" % (i,page);
      #last page
      client.CCflashpage(page);
      print "Flashed final page at %06x" % page;
@@ -188,6 +205,18 @@ if(sys.argv[1]=="peekdata"):
     while start<=stop:
         print "%04x: %02x" % (start,client.CCpeekdatabyte(start));
         start=start+1;
+if(sys.argv[1]=="peek"):
+    start=0x0000;
+    if(len(sys.argv)>2):
+        start=int(sys.argv[2],16);
+    stop=start;
+    if(len(sys.argv)>3):
+        stop=int(sys.argv[3],16);
+    print "Peeking from %04x to %04x." % (start,stop);
+    while start<=stop:
+        print "%04x: %02x" % (start,client.CCpeekirambyte(start));
+        start=start+1;
+
 if(sys.argv[1]=="peekcode"):
     start=0x0000;
     if(len(sys.argv)>2):