Poking works in MSP430X2.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Fri, 11 Sep 2009 08:10:25 +0000 (08:10 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Fri, 11 Sep 2009 08:10:25 +0000 (08:10 +0000)
Changing '430 from 16-bit words to 32-bit words for queries.

git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@127 12e2690d-a6be-4b82-a7b7-67c4a43b65c8

client/GoodFET.py
client/GoodFETMSP430.py
client/goodfet.monitor
firmware/apps/i2c/i2c.c
firmware/apps/jtag/jtag430x2.c
firmware/include/platform.h

index 5645f52..cf01c85 100755 (executable)
@@ -68,6 +68,12 @@ class GoodFET:
         return self.data;
         
     #Monitor stuff
+    def out(self,byte):
+        """Write a byte to P5OUT."""
+        self.writecmd(0,0xA1,1,[byte]);
+    def dir(self,byte):
+        """Write a byte to P5DIR."""
+        self.writecmd(0,0xA0,1,[byte]);
     def peekbyte(self,address):
         """Read a byte of memory from the monitor."""
         self.data=[address&0xff,address>>8];
index 83154c0..cdb83bb 100644 (file)
@@ -37,8 +37,9 @@ class GoodFETMSP430(GoodFET):
         return DeviceID;
     def MSP430peek(self,adr):
         """Read the contents of memory at an address."""
-        self.data=[adr&0xff, (adr&0xff00)>>8];
-        self.writecmd(self.MSP430APP,0x02,2,self.data);
+        self.data=[adr&0xff, (adr&0xff00)>>8,
+                   (adr&0xff0000)>>16,(adr&0xff000000)>>24];
+        self.writecmd(self.MSP430APP,0x02,4,self.data);
         return ord(self.data[0])+(ord(self.data[1])<<8);
     def MSP430poke(self,adr,val):
         """Write the contents of memory at an address."""
index 3c07c94..991c53e 100755 (executable)
@@ -22,6 +22,11 @@ if(len(sys.argv)==1):
 client=GoodFET();
 client.serInit()
 
+if(sys.argv[1]=="on"):
+    client.dir(0xFF);
+    client.out(0xFF);
+if(sys.argv[1]=="off"):
+    client.out(0x00);
 
 if(sys.argv[1]=="info"):
     a=client.peekbyte(0xff0);
index 1171ee1..e183deb 100644 (file)
@@ -37,7 +37,7 @@
 #define I2C_CLOCK_HI() SETSCL
 #define I2C_CLOCK_LO() CLRSCL
 
-#warning "Using internal resistors.  Won't work on 161x devices."
+//#warning "Using internal resistors.  Won't work on 161x devices."
 
 //! Inits bitbanging port, must be called before using the functions below
 void I2C_Init()
@@ -46,6 +46,7 @@ void I2C_Init()
   //Clear SDA and SCL.
   //Direction, not value, is used to set the value.
   //(Pull-up or 0.)
+  
   P5DIR|=(SDA|SCL);
   P5REN|=SDA|SCL;
   
index 44d4941..5e76aa5 100644 (file)
@@ -46,11 +46,13 @@ unsigned char jtag430x2_start(){
   return jtag430x2_jtagid();
 }
 
+//! Grab the core ID.
 unsigned int jtag430_coreid(){
   jtag_ir_shift8(IR_COREIP_ID);
   return jtag_dr_shift16(0);
 }
 
+//! Grab the device ID.
 unsigned long jtag430_deviceid(){
   jtag_ir_shift8(IR_DEVICE_ID);
   return jtag_dr_shift20(0);
@@ -65,20 +67,20 @@ unsigned int jtag430x2_writemem(unsigned long adr,
     CLRTCLK;
     jtag_ir_shift8(IR_CNTRL_SIG_16BIT);
     if(adr>=0x100)
-      jtag_ir_shift8(0x0500);//word mode
+      jtag_dr_shift16(0x0500);//word mode
     else
-      jtag_ir_shift8(0x0510);//byte mode
+      jtag_dr_shift16(0x0510);//byte mode
     jtag_ir_shift8(IR_ADDR_16BIT);
     jtag_dr_shift20(adr);
     
     SETTCLK;
     
     jtag_ir_shift8(IR_DATA_TO_ADDR);
-    jtag_ir_shift8(data);//16 word
+    jtag_dr_shift16(data);//16 word
 
     CLRTCLK;
     jtag_ir_shift8(IR_CNTRL_SIG_16BIT);
-    jtag_ir_shift8(0x0501);
+    jtag_dr_shift16(0x0501);
     SETTCLK;
 
     CLRTCLK;
@@ -154,8 +156,8 @@ void jtag430x2handle(unsigned char app,
     break;
   case JTAG430_READMEM:
   case PEEK:
-    cmddataword[0]=jtag430x2_readmem(cmddataword[0]);
-    //cmddataword[0]=jtag430_readmem(cmddataword[0]);
+    //cmddataword[0]=jtag430x2_readmem(cmddataword[0]);
+    cmddataword[0]=jtag430x2_readmem(cmddatalong[0]);
     txdata(app,verb,2);
     break;
   case JTAG430_COREIP_ID:
index e6cbcec..16b3e84 100644 (file)
@@ -8,7 +8,7 @@
 //Use P3 instead of P5 for target I/O on chips without P5.
 #ifndef __MSP430_HAS_PORT5__
 #ifndef __MSP430_HAS_PORT5_R__
-//#warning "No P5, using P3 instead.  Will break 2618 and 1612 support."
+#warning "No P5, using P3 instead.  Will break 2618 and 1612 support."
 #define P5OUT P3OUT
 #define P5DIR P3DIR
 #define P5REN P3REN
@@ -20,7 +20,7 @@
 //Use false P5REN for 1612.
 #ifdef __MSP430_HAS_PORT5__
 #ifndef __MSP430_HAS_PORT5_R__
-//#warning "1xx, using fake P5REN for external pulling resistors."
+#warning "1xx, using fake P5REN for external pulling resistors."
 #define P5REN P5OUT
 #endif
 #endif