On Monday 01 June 2009, Duane Ellis wrote:
> someone asked>> [something like: But what would a TCL user expect].
>
> Hmm,
>
> What does not happen to day, is the ability to "scan out" data bits and
> capture them in TCL.
Hmm? I thought I saw code returning the captured value of the
data register ... is that not complete? Or did I imagine it?
What I didn't see was doing that for the *instruction* register.
> I think the following would be helpful
>
> # Goto this state by any means desired, via any random path, really only
> good for RESET
> jtag gotostate STATENAME
If it's only good for RESET, shouldn't one of the reset primitives
handle this? (Maybe a new one?) And guarantee all the relevant
state transition hooks fire, as Øyvind mentioned earlier.
> # Goto next state, must be exactly 1 clock/tms step away, can list
> multiple states
> jtag nextstate STATENAME [... more STATENAMEs]
That is, just give a state path? So for example part of a
Zero-Bit Scan (ZBS) would be:
jtag nextstate DRSELECT DRCAPTURE DREXIT1 DRUPDATE
I'd think that the rule I mentioned before -- about always
needing to end in a non-SHIFT (and, per Øyvind, non-RESET)
stable state -- should apply here too. (UPDATE: Hmm, not
if you're proposing an entirely queued interface. If the
"nextstate" thing were immediate, it would apply.)
> # Tell this tap to do a specific scan type
> # Tapstate must be CAPTUREDR or CAPTUREIR otherwise error
> jtag scan -type DR|IR -bitlen NBITS -iarray ARRAYNAME -oarray
> ARRAYNAME -endstate NAME
Hmm, now you're getting into rewriting the entire set of lowlevel
JTAG calls. :)
> # Simplistic "ir scans" - of only a few bits
> jtag scan -type IR -bitlen 5 -value VALUE
>
> # Run clocks in RESET, IRPAUSE, DRPAUSE, or IDLE/RUN state
> jtag idleclocsk NCLOCKS
>
> # Finally,
> jtag execute
AH!! This batched model I think I like. Though I think I'd
package it differently, and in a more TCLish way.
Instead of queueing a bunch of JTAG operations *inside* the
OpenOCD engine ... have a array representation of them, which
can be saved and then interpreted by "jtag execute $saved".
> # NOTE: The above commands are "global"
> # and do not account for any tap in bypass, their view is
> # effectively at the end of the dongle cable.
>
> # Wiggle "TRST" and/or SRST pins
> jtag set TRST 0
> jtag set TRST 1
> jtag set SRST 0
> jtag set SRST 1
>
> Examples
>
> jtag set TRST 0
> jtag set SRST 0
> sleep 500
> jtag set TRST 1
> jtag set SRST 1
All that stuff is doable with current interfaces.
> jtag gotostate RESET
> jtag gotostate SHIFTIR
> # ? not sure here, the idea is to put the 5 bit value 0x0c in the IR
> register
> jtag scan -type IR -bitlen 5 -value 0x0c -endstate EXITIR
>
> # Scan out, 35 bits into MYBITS - with, TDI = 1 during the shift.
> jtag gotostate CAPTUREDR
> jtag scan -type DR -bitlen 35 -tdi 1 -oarray MYBITS -endstate EXITDR
Ditto, I think. But -- no "jtag execute"?
>
> ==
> -Duane
> ==
>
>
>
>
>
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development