Interactive debugger, or parts of one.
[goodfet] / client / GoodFETCC.py
index b700131..894db94 100644 (file)
@@ -13,13 +13,15 @@ from intelhex import IntelHex;
 
 class GoodFETCC(GoodFET):
     """A GoodFET variant for use with Chipcon 8051 Zigbeema SoC."""
 
 class GoodFETCC(GoodFET):
     """A GoodFET variant for use with Chipcon 8051 Zigbeema SoC."""
+    APP=0x30;
+    
     def CChaltcpu(self):
         """Halt the CPU."""
         self.writecmd(0x30,0x86,0,self.data);
     def CCreleasecpu(self):
         """Resume the CPU."""
         self.writecmd(0x30,0x87,0,self.data);
     def CChaltcpu(self):
         """Halt the CPU."""
         self.writecmd(0x30,0x86,0,self.data);
     def CCreleasecpu(self):
         """Resume the CPU."""
         self.writecmd(0x30,0x87,0,self.data);
-    def CCtest(self):
+    def test(self):
         self.CCreleasecpu();
         self.CChaltcpu();
         #print "Status: %s" % self.CCstatusstr();
         self.CCreleasecpu();
         self.CChaltcpu();
         #print "Status: %s" % self.CCstatusstr();
@@ -72,6 +74,9 @@ class GoodFETCC(GoodFET):
     def CClockchip(self):
         """Set the flash lock bit in info mem."""
         self.writecmd(0x30, 0x9A, 0, None);
     def CClockchip(self):
         """Set the flash lock bit in info mem."""
         self.writecmd(0x30, 0x9A, 0, None);
+    def lock(self):
+        """Set the flash lock bit in info mem."""
+        self.CClockchip();
     
 
     CCversions={0x0100:"CC1110",
     
 
     CCversions={0x0100:"CC1110",
@@ -90,7 +95,8 @@ class GoodFETCC(GoodFET):
                  0xA5: 2048, #"CC2530", #page 52 of SWRU191
                  0xB5: 2048, #"CC2531",
                  0xFF: 0    } #"CCmissing"};
                  0xA5: 2048, #"CC2530", #page 52 of SWRU191
                  0xB5: 2048, #"CC2531",
                  0xFF: 0    } #"CCmissing"};
-
+    def infostring(self):
+        return self.CCidentstr();
     def CCidentstr(self):
         ident=self.CCident();
         chip=self.CCversions.get(ident&0xFF00);
     def CCidentstr(self):
         ident=self.CCident();
         chip=self.CCversions.get(ident&0xFF00);
@@ -126,6 +132,9 @@ class GoodFETCC(GoodFET):
     def CCdebuginstr(self,instr):
         self.writecmd(0x30,0x88,len(instr),instr);
         return ord(self.data[0]);
     def CCdebuginstr(self,instr):
         self.writecmd(0x30,0x88,len(instr),instr);
         return ord(self.data[0]);
+    def peek8(self,address, memory="vn"):
+        return self.CCpeekcodebyte(address);
+
     def CCpeekcodebyte(self,adr):
         """Read the contents of code memory at an address."""
         self.data=[adr&0xff, (adr&0xff00)>>8];
     def CCpeekcodebyte(self,adr):
         """Read the contents of code memory at an address."""
         self.data=[adr&0xff, (adr&0xff00)>>8];
@@ -162,6 +171,10 @@ class GoodFETCC(GoodFET):
     def CCchiperase(self):
         """Erase all of the target's memory."""
         self.writecmd(0x30,0x80,0,None);
     def CCchiperase(self):
         """Erase all of the target's memory."""
         self.writecmd(0x30,0x80,0,None);
+    def erase(self):
+        """Erase all of the target's memory."""
+        self.CCchiperase();
+    
     def CCstatus(self):
         """Check the status."""
         self.writecmd(0x30,0x84,0,None);
     def CCstatus(self):
         """Check the status."""
         self.writecmd(0x30,0x84,0,None);
@@ -183,7 +196,7 @@ class GoodFETCC(GoodFET):
                   0x01 : "sel_flash_info_page" #stricken from CC2530
                   };
                   
                   0x01 : "sel_flash_info_page" #stricken from CC2530
                   };
                   
-    def CCstatusstr(self):
+    def status(self):
         """Check the status as a string."""
         status=self.CCstatus();
         str="";
         """Check the status as a string."""
         status=self.CCstatus();
         str="";
@@ -197,11 +210,11 @@ class GoodFETCC(GoodFET):
         """Start debugging."""
         self.writecmd(0x30,0x20,0,self.data);
         ident=self.CCidentstr();
         """Start debugging."""
         self.writecmd(0x30,0x20,0,self.data);
         ident=self.CCidentstr();
-        print "Target identifies as %s." % ident;
-        #print "Status: %s." % self.CCstatusstr();
+        #print "Target identifies as %s." % ident;
+        #print "Status: %s." % self.status();
         self.CCreleasecpu();
         self.CChaltcpu();
         self.CCreleasecpu();
         self.CChaltcpu();
-        #print "Status: %s." % self.CCstatusstr();
+        #print "Status: %s." % self.status();
         
     def stop(self):
         """Stop debugging."""
         
     def stop(self):
         """Stop debugging."""