#include "platform.h"
#include "command.h"
-#include "jtag.h"
+#include "jtag430.h"
unsigned char jtagid;
SETTCLK;
//init state
}else{
- while(1) P1OUT^=1; //loop if locked up
+ while(1) PLEDOUT^=PLEDPIN; //loop if locked up
}
}
//unsigned int tries=5;
while(1){
- do{
- jtag_ir_shift8(IR_CNTRL_SIG_CAPTURE);
- }while(!(jtag_dr_shift16(0) & 0x0301));
+ //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
- }
+
+ //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
case START:
//Enter JTAG mode.
//do
- cmddata[0]=jtag430x2_start();
+ cmddata[0]=jtag430x2_start();
//while(cmddata[0]==00 || cmddata[0]==0xFF);
//MSP430 or MSP430X
if(jtagid==MSP430JTAGID){
jtag430mode=MSP430MODE;
- drwidth=16;
+
+ /* 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();
jtag430mode=MSP430X2MODE;
drwidth=20;
}else{
+ debugstr("JTAG version unknown.");
txdata(app,NOK,1);
return;
}