1. 目前有两种方式可以在PC端枚举到C6678 PCIE DEVICE(EVM板),一种是设置PCIE BOOT,一种是SPI BOOT。鉴于当前的条件,只能测试DSP通过AMC-PCIE转接板与PC的通信。使用windriver完成了C6678 PCIE的驱动程序,但是还不太明白inbound address translation和outbound address translation的具体配置方式。
比如,如果采用PCIE BOOT模式时:
通过windriver软件或者使用JTAG连接上电后的DSP,通过访问地址0x0262013c可以确定DSP BOOT COMPLETED。而且可以读取到PCIe的相关配置信息
而在ibl中的BAR配置(c66xinit.c):
if (flag_6678)
{
/* 6678 */
DEVICE_REG32_W ((PCIE_BASE_ADDR + PCIE_BAR0), 0x00000FFF); /* 4K */
DEVICE_REG32_W ((PCIE_BASE_ADDR + PCIE_BAR1), 0x0007FFFF); /* 512K */
DEVICE_REG32_W ((PCIE_BASE_ADDR + PCIE_BAR2), 0x003FFFFF); /* 4M */
DEVICE_REG32_W ((PCIE_BASE_ADDR + PCIE_BAR3), 0x00FFFFFF); /* 16M */
}
好像这两个结果不太一致,好像就只有BAR0是对应的,其他的BAR1—BAR3显示出来的值不明白为什么?
2. 第二个疑问就是Inbound address translation和Outbound address translation的问题:
可以看到IB_BAR0=1,IB_START0_LO=0x10800000,IB_START0_HI=0x0,IB_OFFSET0=0x0;
IB_BAR1=2,IB_START1_LO=0x11800000,IB_START1_HI=0x0,IB_OFFSET1=0x0;
IB_BAR2=3,IB_START2_LO=0x12800000,IB_START2_HI=0x0,IB_OFFSET2=0x0;
IB_BAR3=4,IB_START3_LO=0x80000000,IB_START3_HI=0x0,IB_OFFSET3=0x0。
如果保持上述配置不变的情况下:
在实际配置address translation时,以Inbound address translation为例,是不是手动配置输入BAR1的值,然后再根据文档中的计算方法:BAR1的输入值 - HI:LO + OFFSET,是不是这个计算值即为DSP内部数据通信的真实地址?
CMD_STAT寄存器中有一个disable address translation的设置,如果设置为disable的话,是不是就不需要再进行address translation?
3. 第三个问题就是,TI有提供PCIe调试XP环境的上位机通信软件吗?

