On Fri, Jul 8, 2011 at 6:30 PM, Mahr, Stefan <stefan.m...@sphairon.com> wrote:
>>>> How do they convert then, when they do not know from which endianes to
>>>> convert from ?
>>>
>>> Conversion is done from byte array of jtag chain.
>> How ?
>
> buf_get_u32 does conversion from uint8* array
>
> example:
> mips_ejtag_get_impcode (mips_ejtag.c)
>
>  field.in_value is filled by jtag_add_dr_scan with 4 times uint8.
>  buf_get_u32 converts byte array to host endian uint32

How ? It does not convert anything. It just takes the data and puts it
into array, in the order that it comes.




>>> The endianness of MIPS EJTAG tap seems to have always the same endianness,
>>> no matter of MIPS CPU memory endianness.
>> What makes you think so ?
>
> Because openocd works in all combinations of BE and LE host and target. (If 
> you
> revert commit 2482244b0788c007dd789c21a4416379c229ea5c.) So yes, it's just a 
> guess.

Which might mean that all commands are sent to EJTAG in appropriate
target format in which CPU expects them (be it BE or LE, depends in
which mode it runs).


> Could this be the explanation:
>
> http://downloads.buffalo.nas-central.org/LS2_MIPSel/DevelopmentTools/JTAG/MD00047-2B-EJTAG-SPC-03.10.pdf
> Page 97:
> Byte 0 refers to bits 7:0, byte 1 refers to bits 15:8, byte 2 refers to bits 
> 23:16, and byte 3 refers to bits
> 31:24, independent of endianess.
>
This is _always_ the case in _all_ architectures. But, as you see,
this Byte0 is put to lower addresses for LE and to higher for BE. This
is always the case.


> Please also see Chapter 6.3.3, 6.3.6, 6.4.1, etc. TAPs are alway LSB first, 
> so endianness doesn't matter here.
This is always the case, for all JTAG TAPS.

No, there must be something else...

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

Reply via email to