X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fjtag%2Fjtag430x2.c;h=265dae08b1ecb0fbc64f213341f75818d7046f03;hp=6ba361ac7c4586eedd40d46f20162128ab179583;hb=6d6a522d3adf0ddd18d30f24fd6bba0cc3547041;hpb=9afcc58660c97fb70b2f214e2008a86deac531b1 diff --git a/firmware/apps/jtag/jtag430x2.c b/firmware/apps/jtag/jtag430x2.c index 6ba361a..265dae0 100644 --- a/firmware/apps/jtag/jtag430x2.c +++ b/firmware/apps/jtag/jtag430x2.c @@ -9,25 +9,24 @@ #include "jtag430x2.h" void jtag430x2_handle_fn( uint8_t const app, - uint8_t const verb, - uint32_t const len); + uint8_t const verb, + uint32_t const len); // define the jtag430x2 app's app_t app_t const jtag430x2_app = { - - /* app number */ - JTAG430X2, - - /* handle fn */ - jtag430x2_handle_fn, - - /* name */ - "JTAG430X2", - - /* desc */ - "\tThe JTAG430X2 app extends the basic JTAG app with support\n" - "\tfor 20-bit MSP430 devices.\n" + /* app number */ + JTAG430X2, + + /* handle fn */ + jtag430x2_handle_fn, + + /* name */ + "JTAG430X2", + + /* desc */ + "\tThe JTAG430X2 app extends the basic JTAG app with support\n" + "\tfor 20-bit MSP430X2 devices, such as the MSP430F5xx Family.\n" }; @@ -199,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;