From 64712ca1ad4da7b006e1381c0909b409d24c9995 Mon Sep 17 00:00:00 2001 From: travisutk Date: Sat, 23 Jan 2010 23:40:19 +0000 Subject: [PATCH] Beginning EJTAG (MIPS) support with an empty app. 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 | 2 +- firmware/apps/jtag/ejtag.c | 30 ++++++++++++++++++++++++++++++ firmware/goodfet.c | 3 +++ firmware/include/apps.h | 1 + firmware/include/command.h | 3 +++ firmware/include/ejtag.h | 21 +++++++++++++++++++++ firmware/include/jtag.h | 2 ++ 7 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 firmware/apps/jtag/ejtag.c create mode 100644 firmware/include/ejtag.h diff --git a/firmware/Makefile b/firmware/Makefile index dfc8626..c783631 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -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 -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 diff --git a/firmware/apps/jtag/ejtag.c b/firmware/apps/jtag/ejtag.c new file mode 100644 index 0000000..7cdd1e5 --- /dev/null +++ b/firmware/apps/jtag/ejtag.c @@ -0,0 +1,30 @@ +/*! \file ejtag.c + \author Travis Goodspeed + \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); + } +} diff --git a/firmware/goodfet.c b/firmware/goodfet.c index 5359150..900e836 100644 --- a/firmware/goodfet.c +++ b/firmware/goodfet.c @@ -66,6 +66,9 @@ void handle(unsigned char app, case JTAG: jtaghandle(app,verb,len); break; + case EJTAG: + ejtaghandle(app,verb,len); + break; case JTAG430: //Also JTAG430X, JTAG430X2 jtag430x2handle(app,verb,len); break; diff --git a/firmware/include/apps.h b/firmware/include/apps.h index ddb8a0b..f33a315 100644 --- a/firmware/include/apps.h +++ b/firmware/include/apps.h @@ -8,6 +8,7 @@ #define I2CAPP 0x02 #define JTAG 0x10 #define JTAG430 0x11 +#define EJTAG 0x12 #define CHIPCON 0x30 #define SIF 0x31 #define AVR 0x32 diff --git a/firmware/include/command.h b/firmware/include/command.h index 7ec0f1c..1fe9e42 100644 --- a/firmware/include/command.h +++ b/firmware/include/command.h @@ -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 ejtaghandle(unsigned char, unsigned char, unsigned long); + void jtag430x2handle(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 index 0000000..dedfc72 --- /dev/null +++ b/firmware/include/ejtag.h @@ -0,0 +1,21 @@ +/*! \file ejtag.h + \author Travis Goodspeed + \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 + diff --git a/firmware/include/jtag.h b/firmware/include/jtag.h index 72c7a4f..149ea85 100644 --- a/firmware/include/jtag.h +++ b/firmware/include/jtag.h @@ -107,7 +107,9 @@ extern int savedtclk; //Replace every "CLRTCK SETTCK" with this. #define TCKTOCK CLRTCK,SETTCK + //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 -- 2.20.1