Might fix pagesize issue for some Chipcon devices.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Tue, 9 Feb 2010 02:31:42 +0000 (02:31 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Tue, 9 Feb 2010 02:31:42 +0000 (02:31 +0000)
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@305 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

client/GoodFETCC.py
client/goodfet.cc
firmware/apps/chipcon/chipcon.c

index 69ef8b9..b700131 100644 (file)
@@ -83,13 +83,13 @@ class GoodFETCC(GoodFET):
                 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"};
+                 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();
@@ -105,8 +105,13 @@ class GoodFETCC(GoodFET):
         """Get a chipcon's ID."""
         self.writecmd(0x30,0x8B,0,None);
         chip=ord(self.data[0]);
-        
-        return self.CCpagesizes.get(chip);
+        size=self.CCpagesizes.get(chip);
+        if(size<10):
+            print "ERROR: Pagesize undefined.";
+            print "chip=%02x" %chip;
+            sys.exit(1);
+            #return 2048;
+        return size;
     def CCgetPC(self):
         """Get a chipcon's PC."""
         self.writecmd(0x30,0x83,0,None);
index 19a0b13..3c00dc7 100755 (executable)
@@ -148,6 +148,8 @@ if(sys.argv[1]=="flash"):
      page = 0x0000;
      pagelen = client.CCpagesize(); #2048; #2kB pages in 32-bit words
      
+     print "page=%04x, pagelen=%04x" % (page,pagelen);
+     
      bcount = 0;
      
      #Wipe the RAM buffer for the next flash page.
index 00e3226..33b1283 100644 (file)
@@ -331,15 +331,14 @@ unsigned short cc_get_chip_id(){
   case 0x81://CC2510
   case 0x91://CC2511
     flash_word_size=0x02;
-    //debugstr("2 bytes/flash word");
+    debugstr("2 bytes/flash word");
     break;
   default:
-    flash_word_size=0x04;
-    break;
-    //debugstr("Warning: Guessing flash word size.");
+    debugstr("Warning: Guessing flash word size.");
   case 0x85://CC2430
   case 0x89://CC2431
     debugstr("4 bytes/flash word");
+    flash_word_size=0x04;
     break;
   }
   
@@ -440,6 +439,11 @@ void cc_write_flash_page(u32 adr){
     return;
   }
   
+  if(flash_word_size==0){
+    debugstr("Flash word size is wrong.");
+    while(1);
+  }
+  
   //Routine comes next
   //WRITE_XDATA_MEMORY(IN: 0xF000 + FLASH_PAGE_SIZE, sizeof(routine), routine);
   cc_write_xdata(0xF000+MAXFLASHPAGE_SIZE,