Fixes flash page sizing on CC1110, for flashing above 0x400.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Mon, 1 Feb 2010 07:02:29 +0000 (07:02 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Mon, 1 Feb 2010 07:02:29 +0000 (07:02 +0000)
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@294 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

client/GoodFETCC.py
client/goodfet.cc

index 093709d..69ef8b9 100644 (file)
@@ -82,6 +82,15 @@ class GoodFETCC(GoodFET):
                 0xA500:"CC2530", #page 52 of SWRU191
                 0xB500:"CC2531",
                 0xFF00:"CCmissing"};
                 0xA500:"CC2530", #page 52 of SWRU191
                 0xB500:"CC2531",
                 0xFF00:"CCmissing"};
+    CCpagesizes={0x01: 1024, #"CC1110",
+                0x85: 2048, #"CC2430",
+                0x89: 2048, #"CC2431",
+                0x81: 1024, #"CC2510",
+                0x91: 1024, #"CC2511",
+                0xA5: 2048, #"CC2530", #page 52 of SWRU191
+                0xB5: 2048, #"CC2531",
+                0xFF: 0    } #"CCmissing"};
+
     def CCidentstr(self):
         ident=self.CCident();
         chip=self.CCversions.get(ident&0xFF00);
     def CCidentstr(self):
         ident=self.CCident();
         chip=self.CCversions.get(ident&0xFF00);
@@ -92,6 +101,12 @@ class GoodFETCC(GoodFET):
         chip=ord(self.data[0]);
         rev=ord(self.data[1]);
         return (chip<<8)+rev;
         chip=ord(self.data[0]);
         rev=ord(self.data[1]);
         return (chip<<8)+rev;
+    def CCpagesize(self):
+        """Get a chipcon's ID."""
+        self.writecmd(0x30,0x8B,0,None);
+        chip=ord(self.data[0]);
+        
+        return self.CCpagesizes.get(chip);
     def CCgetPC(self):
         """Get a chipcon's PC."""
         self.writecmd(0x30,0x83,0,None);
     def CCgetPC(self):
         """Get a chipcon's PC."""
         self.writecmd(0x30,0x83,0,None);
index 2cd9e5f..52eb1dd 100755 (executable)
@@ -146,7 +146,8 @@ if(sys.argv[1]=="flash"):
    
      h = IntelHex(f);
      page = 0x0000;
    
      h = IntelHex(f);
      page = 0x0000;
-     pagelen = 2048; #2kB pages in 32-bit words
+     pagelen = client.CCpagesize(); #2048; #2kB pages in 32-bit words
+     
      bcount = 0;
      
      print "Wiping Flash."
      bcount = 0;
      
      print "Wiping Flash."