Beginning EJTAG (MIPS) support with an empty app.
authortravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Sat, 23 Jan 2010 23:40:19 +0000 (23:40 +0000)
committertravisutk <travisutk@12e2690d-a6be-4b82-a7b7-67c4a43b65c8>
Sat, 23 Jan 2010 23:40:19 +0000 (23:40 +0000)
I'll begin to prototype functions in Python, then move them to C as appropriate.

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

firmware/Makefile
firmware/apps/jtag/ejtag.c [new file with mode: 0644]
firmware/goodfet.c
firmware/include/apps.h
firmware/include/command.h
firmware/include/ejtag.h [new file with mode: 0644]
firmware/include/jtag.h

index dfc8626..c783631 100644 (file)
@@ -25,7 +25,7 @@ CC=msp430-gcc -Wall -Os -g -mmcu=$(mcu) -D$(mcu) -DGCC $(GCCINC) -I include $(CC
 #Define extra modules here.
 moreapps?=apps/i2c/i2c.o apps/chipcon/chipcon.o apps/glitch/glitch.o apps/jtag/sbw.o
 
 #Define extra modules here.
 moreapps?=apps/i2c/i2c.o apps/chipcon/chipcon.o apps/glitch/glitch.o apps/jtag/sbw.o
 
-apps= $(moreapps) apps/monitor/monitor.o apps/spi/spi.o   apps/jtag/jtag.o apps/jtag/jtag430.o apps/jtag/jtag430x2.o apps/avr/avr.o
+apps= $(moreapps) apps/monitor/monitor.o apps/spi/spi.o   apps/jtag/jtag.o apps/jtag/jtag430.o apps/jtag/jtag430x2.o apps/avr/avr.o apps/jtag/ejtag.c
 libs= lib/$(mcu).o lib/command.o apps/jtag/jtag430asm.o
 app= goodfet
 
 libs= lib/$(mcu).o lib/command.o apps/jtag/jtag430asm.o
 app= goodfet
 
diff --git a/firmware/apps/jtag/ejtag.c b/firmware/apps/jtag/ejtag.c
new file mode 100644 (file)
index 0000000..7cdd1e5
--- /dev/null
@@ -0,0 +1,30 @@
+/*! \file ejtag.c
+  \author Travis Goodspeed <travis at radiantmachines.com>
+  \brief MIPS EJTAG (32-bit)
+*/
+
+#include "platform.h"
+#include "command.h"
+#include "jtag.h"
+
+//! Handles MIPS EJTAG commands.  Forwards others to JTAG.
+void ejtaghandle(unsigned char app,
+                  unsigned char verb,
+                  unsigned long len){
+    
+  switch(verb){
+  case START:
+    cmddata[0]=jtag_ir_shift8(IR_BYPASS);
+    txdata(app,verb,1);
+    break;
+  case STOP:
+    txdata(app,verb,0);
+    break;
+  case PEEK:
+    //WRITEME
+  case POKE:
+    //WRITEME
+  default:
+    jtaghandle(app,verb,len);
+  }
+}
index 5359150..900e836 100644 (file)
@@ -66,6 +66,9 @@ void handle(unsigned char app,
   case JTAG:\r
     jtaghandle(app,verb,len);\r
     break;\r
   case JTAG:\r
     jtaghandle(app,verb,len);\r
     break;\r
+  case EJTAG:\r
+    ejtaghandle(app,verb,len);\r
+    break;\r
   case JTAG430: //Also JTAG430X, JTAG430X2\r
     jtag430x2handle(app,verb,len);\r
     break;\r
   case JTAG430: //Also JTAG430X, JTAG430X2\r
     jtag430x2handle(app,verb,len);\r
     break;\r
index ddb8a0b..f33a315 100644 (file)
@@ -8,6 +8,7 @@
 #define I2CAPP 0x02
 #define JTAG 0x10
 #define JTAG430 0x11
 #define I2CAPP 0x02
 #define JTAG 0x10
 #define JTAG430 0x11
+#define EJTAG 0x12
 #define CHIPCON 0x30
 #define SIF 0x31
 #define AVR 0x32
 #define CHIPCON 0x30
 #define SIF 0x31
 #define AVR 0x32
index 7ec0f1c..1fe9e42 100644 (file)
@@ -127,8 +127,11 @@ void i2chandle(unsigned char, unsigned char, unsigned long) WEAKDEF;
 void cchandle(unsigned char, unsigned char, unsigned long) WEAKDEF;
 void jtaghandle(unsigned char, unsigned char, unsigned long);
 void jtag430handle(unsigned char, unsigned char, unsigned long);
 void cchandle(unsigned char, unsigned char, unsigned long) WEAKDEF;
 void jtaghandle(unsigned char, unsigned char, unsigned long);
 void jtag430handle(unsigned char, unsigned char, unsigned long);
+void ejtaghandle(unsigned char, unsigned char, unsigned long);
+
 void jtag430x2handle(unsigned char app, unsigned char verb,
                     unsigned long len);
 void jtag430x2handle(unsigned char app, unsigned char verb,
                     unsigned long len);
+
 void avrhandle(unsigned char app,
               unsigned char verb,
               unsigned long len);  
 void avrhandle(unsigned char app,
               unsigned char verb,
               unsigned long len);  
diff --git a/firmware/include/ejtag.h b/firmware/include/ejtag.h
new file mode 100644 (file)
index 0000000..dedfc72
--- /dev/null
@@ -0,0 +1,21 @@
+/*! \file ejtag.h
+  \author Travis Goodspeed <travis at radiantmachines.com>
+  \brief MIPS EJTAG IR/DR definitions
+*/
+
+
+/* The following are standard EJTAG IR values.  TCBCONTROL values,
+   reserved values, and device-specific values have been ommitted.
+ */
+#define EJTAG_IR_IDCODE 0x01
+#define EJTAG_IR_IMPCODE 0x03
+#define EJTAG_IR_ADDRESS 0x08
+#define EJTAG_IR_DATA 0x09
+#define EJTAG_IR_CONTROL 0x0A 
+#define EJTAG_IR_ALL 0x0B
+#define EJTAG_IR_EJTAGBOOT 0x0C
+#define EJTAG_IR_NORMALBOOT 0x0D
+#define EJTAG_IR_FASTDATA 0x0E
+#define EJTAG_IR_PCSAMPLE 0x14
+#define EJTAG_IR_BYPASS 0xFF
+
index 72c7a4f..149ea85 100644 (file)
@@ -107,7 +107,9 @@ extern int savedtclk;
 //Replace every "CLRTCK SETTCK" with this.
 #define TCKTOCK CLRTCK,SETTCK
 
 //Replace every "CLRTCK SETTCK" with this.
 #define TCKTOCK CLRTCK,SETTCK
 
+
 //16-bit MSP430 JTAG commands, bit-swapped
 //16-bit MSP430 JTAG commands, bit-swapped
+//Rewrite these with MSP430 prefix.
 #define IR_CNTRL_SIG_16BIT         0xC8   // 0x13
 #define IR_CNTRL_SIG_CAPTURE       0x28   // 0x14
 #define IR_CNTRL_SIG_RELEASE       0xA8   // 0x15
 #define IR_CNTRL_SIG_16BIT         0xC8   // 0x13
 #define IR_CNTRL_SIG_CAPTURE       0x28   // 0x14
 #define IR_CNTRL_SIG_RELEASE       0xA8   // 0x15