Kees Jongenburger wrote:
> Hello
>
> in src/jtag/jtag.c I see the tap_move array that will define the command
> to go from one state to an other state.
>
> Here is the array
>
> /* tap_move[i][j]: tap movement command to go from state i to state j
> * 0: Test-Logic-Reset
> * 1: Run-Test/Idle
> * 2: Shift-DR
> * 3: Pause-DR
> * 4: Shift-IR
> * 5: Pause-IR
> *
> * DRSHIFT->DRSHIFT and IRSHIFT->IRSHIFT have to be caught in
> interface specific code
> */
> u8 tap_move[6][6] =
> {
> /* RESET IDLE DRSHIFT DRPAUSE IRSHIFT IRPAUSE */
> { 0x7f, 0x00, 0x17, 0x0a, 0x1b, 0x16}, /* RESET */
> { 0x7f, 0x00, 0x25, 0x05, 0x2b, 0x0b}, /* IDLE */
> { 0x7f, 0x31, 0x00, 0x01, 0x0f, 0x2f}, /* DRSHIFT */
> { 0x7f, 0x30, 0x20, 0x17, 0x1e, 0x2f}, /* DRPAUSE */
> { 0x7f, 0x31, 0x07, 0x17, 0x00, 0x01}, /* IRSHIFT */
> { 0x7f, 0x30, 0x1c, 0x17, 0x20, 0x2f} /* IRPAUSE */
> };
>
> I have the following questions about that. It seams sub-optimal to
> always perform 7 TCK cycles
> to move from one state to an other or am I mis understating something?
>
You are correct. As an alternative you can steer the TAP controllers
step by step if you like. These 6 states are all stable states, and
should the TAP get to a destination stable state before the balance of
the seven clocks are fired, then the balance are fired in the
destination state. It is only a few clocks typically. Another question
to keep in mind is, is the path between stable states given always the
path desired? That path is largely hidden to the human in the TMS bit
sequences in the table.
I have a large patch in the queue, I guess it is blocked pending
moderator approval since it was too big, that documents all this stuff
quite a bit.
Dick
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development