X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fjtag%2Fjtag430.c;h=4b7e5574161c5f31ae52d83e015c0356e493fd18;hp=d518ca1c403e813b16e32c67e00f0a7ec7752062;hb=1283fdb830f9ecd0e27e10ef66927562aff674a7;hpb=0fb25630e9970a4e6d18e190c484f654490565b0 diff --git a/firmware/apps/jtag/jtag430.c b/firmware/apps/jtag/jtag430.c index d518ca1..4b7e557 100644 --- a/firmware/apps/jtag/jtag430.c +++ b/firmware/apps/jtag/jtag430.c @@ -51,6 +51,7 @@ unsigned int jtag430_readmem(unsigned int adr){ CLRTCLK; jtag_ir_shift8(IR_CNTRL_SIG_16BIT); + if(adr>0xFF) jtag_dr_shift16(0x2409);//word read else @@ -81,7 +82,6 @@ void jtag430_writemem(unsigned int adr, unsigned int data){ SETTCLK; } - //! Write data to flash memory. Must be preconfigured. void jtag430_writeflashword(unsigned int adr, unsigned int data){ /* @@ -191,8 +191,9 @@ void jtag430_eraseflash(unsigned int mode, unsigned int adr, unsigned int count) void jtag430_resettap(){ int i; // Settle output + SETTDI; //430X2 SETTMS; - SETTDI; + //SETTDI; //classic SETTCK; // Navigate to reset state. @@ -211,7 +212,7 @@ void jtag430_resettap(){ /* sacred, by spec. - Sometimes this isn't necessary. */ + Sometimes this isn't necessary. */ // fuse check CLRTMS; delay(50); @@ -273,6 +274,7 @@ void oldjtag430handle(unsigned char app, jtag430_start(); //TAP setup, fuse check jtag430_resettap(); + txdata(app,verb,0); break; case JTAG430_HALTCPU: @@ -287,7 +289,6 @@ void oldjtag430handle(unsigned char app, jtag430_setinstrfetch(); txdata(app,verb,0); break; - case JTAG430_READMEM: case PEEK: @@ -296,8 +297,8 @@ void oldjtag430handle(unsigned char app, break; case JTAG430_WRITEMEM: case POKE: - jtag430_writemem(cmddataword[0],cmddataword[1]); - cmddataword[0]=jtag430_readmem(cmddataword[0]); + jtag430_writemem(cmddatalong[0],cmddataword[2]); + cmddataword[0]=jtag430_readmem(cmddatalong[0]); txdata(app,verb,2); break; case JTAG430_WRITEFLASH: