Since I was trying to make sense of them, I wrote a quickie
utility to dump the "old" and "short" path tables on startup.
The results follow (and the patch will be in the next email).
Format:  { start, [next, ...,] end }.  Yes, they all involve
at least one TCK cycle, even if start == end.

I'm thinking that after the next release is out, we should
change how we work with those paths ... always init them from
readable lists of states, somewhat resembling these, so we can
easily see what transitions the various JTAG adapters are being
told to use.  But that sort of stuff is for later.

Notice how even the new "short" paths are in most cases longer
than they need to be...

- Dave


TMS Table: old
        /* from RESET */
        { RESET, RESET, RESET, RESET, RESET, RESET, RESET, RESET }
        { RESET, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, 
RUN/IDLE }
        { RESET, RESET, RESET, RESET, RUN/IDLE, DRSELECT, DRCAPTURE, DRSHIFT }
        { RESET, RUN/IDLE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE, DRPAUSE, 
DRPAUSE }
        { RESET, RESET, RESET, RUN/IDLE, DRSELECT, IRSELECT, IRCAPTURE, IRSHIFT 
}
        { RESET, RUN/IDLE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, IRPAUSE, 
IRPAUSE }
        /* from RUN/IDLE */
        { RUN/IDLE, DRSELECT, IRSELECT, RESET, RESET, RESET, RESET, RESET }
        { RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, 
RUN/IDLE }
        { RUN/IDLE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE, DRPAUSE, DREXIT2, 
DRSHIFT }
        { RUN/IDLE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE, DRPAUSE, DRPAUSE, 
DRPAUSE }
        { RUN/IDLE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, IRPAUSE, IREXIT2, 
IRSHIFT }
        { RUN/IDLE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, IRPAUSE, IRPAUSE, 
IRPAUSE }
        /* from DRSHIFT */
        { DRSHIFT, DREXIT1, DRUPDATE, DRSELECT, IRSELECT, RESET, RESET, RESET }
        { DRSHIFT, DREXIT1, DRPAUSE, DRPAUSE, DRPAUSE, DREXIT2, DRUPDATE, 
RUN/IDLE }
        { DRSHIFT, DRSHIFT, DRSHIFT, DRSHIFT, DRSHIFT, DRSHIFT, DRSHIFT, 
DRSHIFT }
        { DRSHIFT, DREXIT1, DRPAUSE, DRPAUSE, DRPAUSE, DRPAUSE, DRPAUSE, 
DRPAUSE }
        { DRSHIFT, DREXIT1, DRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, IRSHIFT, 
IRSHIFT }
        { DRSHIFT, DREXIT1, DRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, 
IRPAUSE }
        /* from DRPAUSE */
        { DRPAUSE, DREXIT2, DRUPDATE, DRSELECT, IRSELECT, RESET, RESET, RESET }
        { DRPAUSE, DRPAUSE, DRPAUSE, DRPAUSE, DRPAUSE, DREXIT2, DRUPDATE, 
RUN/IDLE }
        { DRPAUSE, DRPAUSE, DRPAUSE, DRPAUSE, DRPAUSE, DRPAUSE, DREXIT2, 
DRSHIFT }
        { DRPAUSE, DREXIT2, DRUPDATE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE, 
DRPAUSE }
        { DRPAUSE, DRPAUSE, DREXIT2, DRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, 
IRSHIFT }
        { DRPAUSE, DREXIT2, DRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, 
IRPAUSE }
        /* from IRSHIFT */
        { IRSHIFT, IREXIT1, IRUPDATE, DRSELECT, IRSELECT, RESET, RESET, RESET }
        { IRSHIFT, IREXIT1, IRPAUSE, IRPAUSE, IRPAUSE, IREXIT2, IRUPDATE, 
RUN/IDLE }
        { IRSHIFT, IREXIT1, IRUPDATE, DRSELECT, DRCAPTURE, DRSHIFT, DRSHIFT, 
DRSHIFT }
        { IRSHIFT, IREXIT1, IRUPDATE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE, 
DRPAUSE }
        { IRSHIFT, IRSHIFT, IRSHIFT, IRSHIFT, IRSHIFT, IRSHIFT, IRSHIFT, 
IRSHIFT }
        { IRSHIFT, IREXIT1, IRPAUSE, IRPAUSE, IRPAUSE, IRPAUSE, IRPAUSE, 
IRPAUSE }
        /* from IRPAUSE */
        { IRPAUSE, IREXIT2, IRUPDATE, DRSELECT, IRSELECT, RESET, RESET, RESET }
        { IRPAUSE, IRPAUSE, IRPAUSE, IRPAUSE, IRPAUSE, IREXIT2, IRUPDATE, 
RUN/IDLE }
        { IRPAUSE, IRPAUSE, IRPAUSE, IREXIT2, IRUPDATE, DRSELECT, DRCAPTURE, 
DRSHIFT }
        { IRPAUSE, IREXIT2, IRUPDATE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE, 
DRPAUSE }
        { IRPAUSE, IRPAUSE, IREXIT2, IRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, 
IRSHIFT }
        { IRPAUSE, IREXIT2, IRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, 
IRPAUSE }

TMS Table: short
        /* from RESET */
        { RESET, RESET, RESET, RESET, RESET, RESET, RESET, RESET }
        { RESET, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, 
RUN/IDLE }
        { RESET, RESET, RESET, RESET, RUN/IDLE, DRSELECT, DRCAPTURE, DRSHIFT }
        { RESET, RUN/IDLE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE, DRPAUSE, 
DRPAUSE }
        { RESET, RESET, RESET, RUN/IDLE, DRSELECT, IRSELECT, IRCAPTURE, IRSHIFT 
}
        { RESET, RUN/IDLE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, IRPAUSE, 
IRPAUSE }
        /* from RUN/IDLE */
        { RUN/IDLE, DRSELECT, IRSELECT, RESET, RESET, RESET, RESET, RESET }
        { RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, RUN/IDLE, 
RUN/IDLE }
        { RUN/IDLE, DRSELECT, DRCAPTURE, DRSHIFT }
        { RUN/IDLE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE }
        { RUN/IDLE, DRSELECT, IRSELECT, IRCAPTURE, IRSHIFT }
        { RUN/IDLE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, IRPAUSE }
        /* from DRSHIFT */
        { DRSHIFT, DREXIT1, DRUPDATE, DRSELECT, IRSELECT, RESET, RESET, RESET }
        { DRSHIFT, DREXIT1, DRUPDATE, RUN/IDLE }
        { DRSHIFT, DREXIT1, DRUPDATE, DRSELECT, DRCAPTURE, DRSHIFT }
        { DRSHIFT, DREXIT1, DRPAUSE }
        { DRSHIFT, DREXIT1, DRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, IRSHIFT }
        { DRSHIFT, DREXIT1, DRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, 
IRPAUSE }
        /* from DRPAUSE */
        { DRPAUSE, DREXIT2, DRUPDATE, DRSELECT, IRSELECT, RESET, RESET, RESET }
        { DRPAUSE, DREXIT2, DRUPDATE, RUN/IDLE }
        { DRPAUSE, DREXIT2, DRSHIFT }
        { DRPAUSE, DRPAUSE }
        { DRPAUSE, DREXIT2, DRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, IRSHIFT }
        { DRPAUSE, DREXIT2, DRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, IREXIT1, 
IRPAUSE }
        /* from IRSHIFT */
        { IRSHIFT, IREXIT1, IRUPDATE, DRSELECT, IRSELECT, RESET, RESET, RESET }
        { IRSHIFT, IREXIT1, IRUPDATE, RUN/IDLE }
        { IRSHIFT, IREXIT1, IRUPDATE, DRSELECT, DRCAPTURE, DRSHIFT }
        { IRSHIFT, IREXIT1, IRUPDATE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE }
        { IRSHIFT, IREXIT1, IRUPDATE, DRSELECT, IRSELECT, IRCAPTURE, IRSHIFT }
        { IRSHIFT, IREXIT1, IRPAUSE }
        /* from IRPAUSE */
        { IRPAUSE, IREXIT2, IRUPDATE, DRSELECT, IRSELECT, RESET, RESET, RESET }
        { IRPAUSE, IREXIT2, IRUPDATE, RUN/IDLE }
        { IRPAUSE, IREXIT2, IRUPDATE, DRSELECT, DRCAPTURE, DRSHIFT }
        { IRPAUSE, IREXIT2, IRUPDATE, DRSELECT, DRCAPTURE, DREXIT1, DRPAUSE }
        { IRPAUSE, IREXIT2, IRSHIFT }
        { IRPAUSE, IRPAUSE }

_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to