jtaglib: fix register reading on MSP430G2452 and similar chips

This commit is contained in:
Triss 2021-10-10 00:00:47 +02:00
parent 30af3e9483
commit a1a06e7e65
1 changed files with 13 additions and 5 deletions

View File

@ -1000,17 +1000,25 @@ address_t jtag_read_reg(struct jtdev *p, int reg)
jtag_tclk_set(p); jtag_tclk_set(p);
jtag_tclk_clr(p); jtag_tclk_clr(p);
jtag_tclk_set(p); jtag_tclk_set(p);
jtag_tclk_clr(p); /* older code did an extra clock cycle -- don't do this! will put the
jtag_tclk_set(p); * current instruction word on the data bus instead of the register value
* on the G2452, making it useless. the clock cycles are still required to
* move to the next instruction, but those should be done later. */
/*jtag_tclk_clr(p);
jtag_tclk_set(p);*/
/* Read databus which contains the registers value */ /* Read databus which contains the registers value */
jtag_ir_shift(p, IR_DATA_CAPTURE); jtag_ir_shift(p, IR_DATA_CAPTURE);
value = jtag_dr_shift_16(p, 0x0000); value = jtag_dr_shift_16(p, 0x0000);
jtag_tclk_clr(p);
/* JTAG controls RW & BYTE */ /* JTAG controls RW & BYTE */
jtag_ir_shift(p, IR_CNTRL_SIG_16BIT); jtag_ir_shift(p, IR_CNTRL_SIG_16BIT);
jtag_dr_shift_16(p, 0x2401); jtag_dr_shift_16(p, 0x2401);
jtag_tclk_set(p);
/* Return value read from register */ /* Return value read from register */
return value; return value;
} }