Øyvind Harboe wrote:
> Looks good to me.
>
> I saw that your scheme above also handled reordering the
> chain, but didn't quite see how you achieved that.
>
>   
I presume that reply was to me... the mail thread order got wacky.

It does not really reorder the chain - but it could easily do so.

The idea is this:

(A) there is a linked list of jtag devices. HEAD = global variable: 
"struct jtag_device_t *tag_devices";

(B) As that list is built - there is an implied order to that list, ie: 
the order it was built.

(C) That inherent order is used by the function: 
   
       struct jtag_device_t *jtag_get_device( int num );

(D)  Remember how the "target became an object" with the earlier change?

    That needs to happen too.

(E) During initial configuration, the "tap object " is given a 
"position" in the chain.

For example - Some ARM926 chips have different internal orders. Others - 
chips like omap/beagleboard have taps that appear and disappear.

Since the "jtag tap" is an object - the "tap objects" in the omap/beagle 
board could be enabled & disabled via their "tap object"

And - well one could do other things with the tap object, for example 
change the order the tap is in by using the "configure" command.

(F) The idea is - Later, when the entire chain must be itterated in some 
order a list is built. That list is *temporary* - and rebuilt again and 
again and again. Why? Incase some body does something weird with the 
'tap object' command - like disable something, or change the order of 
something.


-Duane.

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

Reply via email to