TI中文支持网
TI专业的中文技术问题搜集分享网站

SRIO、PCIE通信时收发方大小端模式不一样

请教:

        使用SRIO/PCIE在两个设备间(C6678间,或C6678与FPGA、PC机)传输数据时,如果两者大小端模式不匹配时,进行下列操作:

        uint32_t   p= 0x12345678;    dest_addr = xxx;

         srio_dio_send( &p,   dest_addr,  4);

        接收方收到的数据是0x12345678还是0x78563412呢?

Zhan Xiang:

数据如何排列完全取决于目标memory对数据流的识别,在SRIO总线上传输的数据都是byte流,对于大端设备会将该byte流按照大端规则存储,小端则按小端规则存储,外设是没有大小端的概念的,只是会按照byte把数据存到对应的地址,而CPU取数据则是按照大小端进行区分。

你的问题可以这样理解,memory 中数据存储为 0x12 0x34 0x56 0x78,那么写到对端memory中应该也是0x12 0x34 0x56 0x78,如果是大端系统则认为数据是0x12345678,小端系统是0x78563412.

 

 

YUCHAO WANG:

回复 Zhan Xiang:

您好:

        也就是说,通信过程能够保证memory中的byte顺序不变是吗?

        但是我后来看C6678外设的"endianess"部分时,里面提到“SRIO协议要求数据流必须是大端排列,所有小端设备必须进行必要的端转换操作”,这个具体指的是什么过程呢?对传输会有什么影响吗?

       

Zhan Xiang:

回复 YUCHAO WANG:

C6678的SRIO会自动识别目标memory的大小端,所以如果是两个6678之间互通,不需要手动转换。但是如果和其他厂商的芯片对通,需要和厂商确认他们的实现。

赞(0)
未经允许不得转载:TI中文支持网 » SRIO、PCIE通信时收发方大小端模式不一样
分享到: 更多 (0)