请教一下各位专家,DSP的地址是32位,而srio发送的实际数据包的address field 只有29位,那么通信时如何准确的解析出32位地址呢?
我说下个人理解,在rapidio的文档中描述address: Bits [0-28] of byte address [0-31] of the double-word physical addres
是不是因为在实际通信时,数据包是以double-word(8 bytes)为单位,而不是字节为单位进行数据读取的,因此整个地址空间就会减少3位,所以32位
的地址只需要29位。但是按上文的描述,为什么是低29位[0-28],这样物理地址上不是有重叠吗,不应该是高29位吗?
这只是个人理解,还请专家解答。
Thomas Yang1:
您采用的是哪款DSP?
SRIO数据包底层根据协议是256bytes来 进行传输的。
Bits [0-28] of byte address [0-31] of the double-word physical addres 这句话您是在哪里看到的?能否分享下,帮你一起分析下
user3457176:
回复 Thomas Yang1:
Thomas ,我用的是C6778,那段话是在rapaidio的互连规范文件中看到的,里面对packet 的格式进行了描述。
user3457176:
回复 user3457176:
这个问题我就自问自答一下吧,最近看了一下rapidio嵌入式互连这本书,第四章举了一个例子,说下目前本人的理解,。
还是以32位地址为例,这个29位的address是由实际的32地址右移3bit得到的,即是一个双字地址。而数据包中的rdsize和wdptr这两位决定了请求数据的大小和对齐的
信息,这两位是由地址低三位和数据大小决定的,因此可以最终决定数据的位置。