Support for debugging strings, closer to a clean MSP430X2 implementation.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Sat, 19 Sep 2009 15:14:37 +0000 (15:14 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Sat, 19 Sep 2009 15:14:37 +0000 (15:14 +0000)
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@143 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

client/GoodFET.py
client/GoodFETSPI.py
firmware/apps/jtag/jtag430x2.c
firmware/apps/spi/spi.c
firmware/include/apps.h
firmware/include/command.h
firmware/lib/command.c

index cf01c85..abfc16e 100755 (executable)
@@ -60,12 +60,18 @@ class GoodFET:
         self.readcmd(blocks);  #Uncomment this later, to ensure a response.
     def readcmd(self,blocks=1):
         """Read a reply from the GoodFET."""
-        self.app=ord(self.serialport.read(1));
-        self.verb=ord(self.serialport.read(1));
-        self.count=ord(self.serialport.read(1));
-        self.data=self.serialport.read(self.count*blocks);
-        #print "READ %02x %02x %02x " % (self.app, self.verb, self.count);
-        return self.data;
+        while 1:
+            self.app=ord(self.serialport.read(1));
+            self.verb=ord(self.serialport.read(1));
+            self.count=ord(self.serialport.read(1));
+            self.data=self.serialport.read(self.count*blocks);
+            #print "READ %02x %02x %02x " % (self.app, self.verb, self.count);
+            
+            #Debugging string; print, but wait.
+            if self.app==0xFF and self.verb==0xFF:
+                print "DEBUG %s" % self.data;
+            else:
+                return self.data;
         
     #Monitor stuff
     def out(self,byte):
index 364b1ff..b23585d 100644 (file)
@@ -33,6 +33,7 @@ class GoodFETSPIFlash(GoodFETSPI):
                         };
 
     JEDECdevices={0xFFFFFF: "MISSING",
+                  0xEF3015: "W25X16L",
                   0xEF3014: "W25X80L",
                   0xEF3013: "W25X40L",
                   0xEF3012: "W25X20L",
index 965c262..b508f0b 100644 (file)
@@ -94,39 +94,40 @@ void jtag430x2_writemem(unsigned long adr,
 //! Read data from address
 unsigned int jtag430x2_readmem(unsigned long adr){
   unsigned int toret=0;
+  unsigned int tries=5;
   
-  do{
-    jtag_ir_shift8(IR_CNTRL_SIG_CAPTURE);
-  }while(!(jtag_dr_shift16(0) & 0x0301));
-  
-  if(jtag_dr_shift16(0) & 0x0301){
-    // Read Memory
-    CLRTCLK;
-    jtag_ir_shift8(IR_CNTRL_SIG_16BIT);
-    if(adr>=0x100){
-      jtag_dr_shift16(0x0501);//word read
-    }else{
-      jtag_dr_shift16(0x0511);//byte read
-    }
+  while(1){
+    do{
+      jtag_ir_shift8(IR_CNTRL_SIG_CAPTURE);
+    }while(!(jtag_dr_shift16(0) & 0x0301));
     
-    jtag_ir_shift8(IR_ADDR_16BIT);
-    jtag_dr_shift20(adr); //20
-
-    jtag_ir_shift8(IR_DATA_TO_ADDR);
-    SETTCLK;
-    CLRTCLK;
-    toret = jtag_dr_shift16(0x0000);
-    
-    SETTCLK;
-    
-    //Cycle a bit.
-    CLRTCLK;
-    SETTCLK;
-  }else{
-    return 0xBABE;
+    if(jtag_dr_shift16(0) & 0x0301){
+      // Read Memory
+      CLRTCLK;
+      jtag_ir_shift8(IR_CNTRL_SIG_16BIT);
+      if(adr>=0x100){
+       jtag_dr_shift16(0x0501);//word read
+      }else{
+       jtag_dr_shift16(0x0511);//byte read
+      }
+      
+      jtag_ir_shift8(IR_ADDR_16BIT);
+      jtag_dr_shift20(adr); //20
+      
+      jtag_ir_shift8(IR_DATA_TO_ADDR);
+      SETTCLK;
+      CLRTCLK;
+      toret = jtag_dr_shift16(0x0000);
+      
+      SETTCLK;
+      
+      //Cycle a bit.
+      CLRTCLK;
+      SETTCLK;
+      return toret;
+    }
   }
-  
-  return toret;
+  //return toret;
 }
 
 //! Syncs a POR.
index e91ab61..18236ee 100644 (file)
@@ -15,7 +15,8 @@
 //This could be more accurate.
 //Does it ever need to be?
 #define SPISPEED 0
-#define SPIDELAY(x) delay(x)
+#define SPIDELAY(x)
+//delay(x)
 
 
 //! Set up the pins for SPI mode.
@@ -139,8 +140,7 @@ void spiflash_pokeblock(unsigned long adr,
     spitrans8(buf[i]);
   SETSS;  //Raise !SS to end transaction.
   
-  while(spiflash_status()&0x01)
-    ;
+  //while(spiflash_status()&0x01);
   
   return;
 }
@@ -185,7 +185,8 @@ void spihandle(unsigned char app,
   unsigned char i;
   
   //Raise !SS to end transaction, just in case we forgot.
-  P5OUT|=SS;  
+  P5OUT|=SS;
+  spisetup();
   
   switch(verb){
     //PEEK and POKE might come later.
index 7c5e3b9..691e0d0 100644 (file)
@@ -10,3 +10,4 @@
 
 #define OCT 0x70
 
+#define DEBUGAPP 0xFF
index a20067a..3be397e 100644 (file)
@@ -18,6 +18,8 @@ extern unsigned char cmddata[256];
 #define NOK   0x7E
 #define OK    0x7F
 
+#define DEBUGSTR 0xFF
+
 // Monitor Commands
 #define MONITOR_CHANGE_BAUD 0x80
 #define MONITOR_RAM_PATTERN 0x90
@@ -93,6 +95,8 @@ void txdata(unsigned char app,
 void txstring(unsigned char app,
              unsigned char verb,
              const char *str);
+//! Transmit a debug string.
+void debugstr(const char *str);
 
 //! Delay
 void delay(unsigned int count);
index 738fab6..c5e35b5 100644 (file)
@@ -6,6 +6,7 @@
 
 unsigned char cmddata[256];
 
+
 //! Transmit a string.
 void txstring(unsigned char app,
              unsigned char verb,
@@ -18,6 +19,12 @@ void txstring(unsigned char app,
     serial_tx(*(str++));
 }
 
+//! Transmits a debugging string out of line.
+void debugstr(const char *str){
+  txstring(0xFF,0xFF,str);
+}
+
+
 //! Transmit data.
 void txdata(unsigned char app,
            unsigned char verb,