Chipcon peek and poke for iram, include SFRs.
[goodfet] / client / goodfet.cc
index badbf7a..d79d166 100755 (executable)
@@ -82,6 +82,31 @@ if(sys.argv[1]=="erase"):
     client.CCchiperase();
     print "Status: %s" %client.CCstatusstr();
 
+if(sys.argv[1]=="peekinfo"):
+    print "Select info flash."
+    client.CCwr_config(1);
+    print "Config is %02x" % client.CCrd_config();
+    
+    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.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"
+if(sys.argv[1]=="config"):
+    print "Config is %02x" % client.CCrd_config();
+
 if(sys.argv[1]=="flash"):
      f=sys.argv[2];
      start=0;
@@ -96,6 +121,7 @@ if(sys.argv[1]=="flash"):
      pagelen = 2048; #2kB pages in 32-bit words
      bcount = 0;
      
+     print "Wiping Flash."
      #Wipe all of flash.
      client.CCchiperase();
      #Wipe the RAM buffer for the next flash page.
@@ -114,11 +140,15 @@ if(sys.argv[1]=="flash"):
                                h[i]);
          bcount+=1;
          if(i%0x100==0):
-                print "%04x at %06x" % (i,page);
+                print "Buffering %04x to %06x" % (i,page);
      #last page
      client.CCflashpage(page);
      print "Flashed final page at %06x" % page;
      
+if(sys.argv[1]=="lock"):
+    print "Status: %s" %client.CCstatusstr();
+    client.CClockchip();
+    print "Status: %s" %client.CCstatusstr();
 if(sys.argv[1]=="flashpage"):
     target=0;
     if(len(sys.argv)>2):