From 6d6a522d3adf0ddd18d30f24fd6bba0cc3547041 Mon Sep 17 00:00:00 2001 From: travisutk Date: Thu, 3 Feb 2011 22:39:30 +0000 Subject: [PATCH] Major JTAG430 and JTAG430X2 patching. Swapped the APP numbers to fix the unneighborliness at startup and to let JTAG430 run on its own. git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@876 12e2690d-a6be-4b82-a7b7-67c4a43b65c8 --- firmware/apps/jtag/jtag430.c | 15 ++------------- firmware/apps/jtag/jtag430x2.c | 22 +++++++++++++++++++++- firmware/include/jtag430.h | 2 +- firmware/include/jtag430x2.h | 2 +- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/firmware/apps/jtag/jtag430.c b/firmware/apps/jtag/jtag430.c index 88ff455..88c9f0f 100644 --- a/firmware/apps/jtag/jtag430.c +++ b/firmware/apps/jtag/jtag430.c @@ -400,22 +400,11 @@ void jtag430_handle_fn(uint8_t const app, switch(verb){ case START: - /* old method, classic MSP430. - //Enter JTAG mode. - jtag430x2_start(); - //TAP setup, fuse check - jtag430_resettap(); - - cmddata[0]=jtag_ir_shift8(IR_BYPASS); - txdata(app,verb,1); - */ + debugstr("Using JTAG430 (instead of JTAG430X2)!"); jtag430x2_start(); cmddata[0]=jtagid; - if(jtagid!=MSP430JTAGID){ - debugstr("Using JTAG430 (instead of JTAG430X2)!"); - } jtag430mode=MSP430MODE; /* So the way this works is that a width of 20 does some @@ -548,7 +537,7 @@ void jtag430_handle_fn(uint8_t const app, case JTAG430_DEVICE_ID: //cmddatalong[0]=jtag430_deviceid(); cmddataword[0]=0xdead; - cmddataword[0]=0xbeef; + cmddataword[1]=0xbeef; txdata(app,verb,4); break; default: diff --git a/firmware/apps/jtag/jtag430x2.c b/firmware/apps/jtag/jtag430x2.c index d671da4..265dae0 100644 --- a/firmware/apps/jtag/jtag430x2.c +++ b/firmware/apps/jtag/jtag430x2.c @@ -198,7 +198,27 @@ void jtag430x2_handle_fn( uint8_t const app, //MSP430 or MSP430X if(jtagid==MSP430JTAGID){ - debugstr("ERROR, using JTAG430X2 instead of JTAG430!"); + //debugstr("ERROR, using JTAG430X2 instead of JTAG430!"); + jtag430mode=MSP430MODE; + + /* So the way this works is that a width of 20 does some + backward-compatibility finagling, causing the correct value + to be exchanged for addresses on 16-bit chips as well as the + new MSP430X chips. (This has only been verified on the + MSP430F2xx family. TODO verify for others.) + */ + + drwidth=20; + + //Perform a reset and disable watchdog. + jtag430_por(); + jtag430_writemem(0x120,0x5a80);//disable watchdog + + jtag430_haltcpu(); + + jtag430_resettap(); + txdata(app,verb,1); + return; }else if(jtagid==MSP430X2JTAGID){ jtag430mode=MSP430X2MODE; diff --git a/firmware/include/jtag430.h b/firmware/include/jtag430.h index 6ac6fcd..950e80e 100644 --- a/firmware/include/jtag430.h +++ b/firmware/include/jtag430.h @@ -9,7 +9,7 @@ #include "app.h" #include "jtag.h" -#define JTAG430 0x11 +#define JTAG430 0x16 extern unsigned int drwidth; diff --git a/firmware/include/jtag430x2.h b/firmware/include/jtag430x2.h index 090697c..86598a8 100644 --- a/firmware/include/jtag430x2.h +++ b/firmware/include/jtag430x2.h @@ -8,7 +8,7 @@ #include "app.h" -#define JTAG430X2 0x16 +#define JTAG430X2 0x11 extern app_t const jtag430x2_app; -- 2.20.1