Hi, here are som thoughts after looking throuh some parts of the jtag 
subsystem.

What is a stable state ?  A state that is unchanged or a state that is 
unchanged and has no sideeffects ?  Only RESET and PAUSE ?

Our basic functions should be able to generate shortest path and fixed 
length  paths between any pair of states, not only stable states.

I think we should use end_state  to let higher layers indicate where the 
current transaction should end, not as the end of the next subpath or 
sequence of transitions. We then change the syntax of state move to 
state_move(tap_state_t newstate) . So we can use state move inside 
complex transaction without at lot of saving, setting and restoring 
endstate. Then we simply do a state_move(end_state) as the final part of 
a transaction.

All work regarding moves between states, paths etc is done in terms of 
states, NOT  tms values. The we have a very simple general state 
transition to tms function. Implemented with switch or array, dont care. 
But if all state values always are of type const tap_state_t , not int, 
the most of the bounds checking is done at compile time.

I have work out a full set of next state in shortest path,  distance  
ie. length of shortes path, and tms to next state in shaortest path. 
They are calculated in octave from the basic state machine graph so they 
should be without silly errors.  Might be useful.


Regards,
Magnus



Rows and columns are in our latest numbering scheme

TAP_DREXIT2=1
TAP_DREXIT1=2
TAP_DRSHIFT=3
TAP_DRPAUSE=4
TAP_IRSELECT=5
TAP_DRUPDATE=6
TAP_DRCAPTURE=7
TAP_DRSELECT=8
TAP_IREXIT2=9
TAP_IREXIT1=10
TAP_IRSHIFT=11
TAP_IRPAUSE=12
TAP_IDLE=13
TAP_IRUPDATE=14
TAP_IRCAPTURE=15
TAP_RESET=16
 

/*  Next state in shortest path, inserting symbolic names gives very 
long lines ... */
    3    3    3    3    6    6    6    6    6    6    6    6    6    
6    6    6
    4    4    4    4    6    6    6    6    6    6    6    6    6    
6    6    6
    2    2    3    2    2    2    2    2    2    2    2    2    2    
2    2    2
    1    1    1    4    1    1    1    1    1    1    1    1    1    
1    1    1
   16   16   16   16   16   16   16   16   15   15   15   15   16   15   
15   16
    8    8    8    8    8    8    8    8    8    8    8    8   13    
8    8    8
    2    2    3    2    2    2    2    2    2    2    2    2    2    
2    2    2
    7    7    7    7    5    7    7    5    5    5    5    5    5    
5    5    5
   14   14   14   14   14   14   14   14   11   11   11   11   14   14   
14   14
   14   14   14   14   14   14   14   14   12   12   12   12   14   14   
14   14
   10   10   10   10   10   10   10   10   10   10   11   10   10   10   
10   10
    9    9    9    9    9    9    9    9    9    9    9   12    9    
9    9    9
    8    8    8    8    8    8    8    8    8    8    8    8   13    
8    8    8
    8    8    8    8    8    8    8    8    8    8    8    8   13    
8    8    8
   10   10   10   10   10   10   10   10   10   10   11   10   10   10   
10   10
   13   13   13   13   13   13   13   13   13   13   13   13   13   13   
13   16

/* state distance, length of shortes path */
   4   2   1   3   3   1   3   2   7   5   5   6   2   6   4   4
   2   4   3   1   3   1   3   2   7   5   5   6   2   6   4   4
   3   1   1   2   4   2   4   3   8   6   6   7   3   7   5   5
   1   3   2   1   4   2   4   3   8   6   6   7   3   7   5   5
   7   5   5   6   4   6   4   3   4   2   2   3   2   3   1   1
   5   3   3   4   2   4   2   1   6   4   4   5   1   5   3   3
   3   1   1   2   4   2   4   3   8   6   6   7   3   7   5   5
   4   2   2   3   1   3   1   4   5   3   3   4   3   4   2   2
   6   4   4   5   3   5   3   2   4   2   1   3   2   1   4   4
   6   4   4   5   3   5   3   2   2   4   3   1   2   1   4   4
   7   5   5   6   4   6   4   3   3   1   1   2   3   2   5   5
   7   5   5   6   4   6   4   3   1   3   2   1   3   2   5   5
   5   3   3   4   2   4   2   1   6   4   4   5   1   5   3   3
   5   3   3   4   2   4   2   1   6   4   4   5   1   5   3   3
   7   5   5   6   4   6   4   3   3   1   1   2   3   2   5   5
   6   4   4   5   3   5   3   2   7   5   5   6   1   6   4   1

/* TMS for first step in shortest path */
   0   0   1   0   0   2   0   0   0   0   0   0   0   0   0   0
   0   0   0   1   0   2   0   0   0   0   0   0   0   0   0   0
   0   2   1   0   0   0   0   0   0   0   0   0   0   0   0   0
   2   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   2
   0   0   0   0   0   0   0   2   0   0   0   0   1   0   0   0
   0   2   1   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   2   0   1   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   1   0   0   2   0   0
   0   0   0   0   0   0   0   0   0   0   0   1   0   2   0   0
   0   0   0   0   0   0   0   0   0   2   1   0   0   0   0   0
   0   0   0   0   0   0   0   0   2   0   0   1   0   0   0   0
   0   0   0   0   0   0   0   2   0   0   0   0   1   0   0   0
   0   0   0   0   0   0   0   2   0   0   0   0   1   0   0   0
   0   0   0   0   0   0   0   0   0   2   1   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   1   0   0   2

_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to