PCIE Inbound : PC端访问PCIE设备存储器时使用的地址翻译,数据包从PC-》PCIE设备,可以理解为PC为控制方
PC端读取PCIe地址对应的设备地址 = PCIe地址 - (IB_STARTn_HI:IB_STARTn_LO) + IB_OFFSET; (IB_STARTn_HI 一般为0x0)
PCIE Outbound : PCIE设备访问PC内存时使用的地址翻译,数据包从PCIE设备-》PC,PCIE设备为控制方,
PC端读取PCIe address 对应的设备地址 = PCIE设备的PCIE数据空间 (PCIE_DATA_SPACE) + PCIe address - OB_OFFSETn_HI + OB_SIZE * OB_OFFSET_INDEXn;
DSPC6678配置示例:
OB_Size = 0x0
OB_OFFSET0_HI = 0xFFF00001
OB_OFFSET_INDEX0 = 0X0
PC端的 0xFFF00000 ~ 0xFFFFFFFF 内存块对应的DSP端的地址块为 0x60000000(DSP的pcie数据域地址) ~ 0x600FFFFF
MSI中断:
将PC给PCIE设备分配的MSI Address通过outbound地址翻译,PCIE设备向MSI address 通过Outbound翻译的地址进行写入MSI_DATA触发MSI中断。
例如:假如PC给DSPC6678分配的MSI_Address为0xFEE0F00C
OB_SIZE = 0x0,
OB_OFFSET0_HI = 0xFEE00001
OB_OFFSET_INDEX0 = 0X0
DSP向地址0x60000000+(0xFEE0F00C&0x000FFFFF)写入MSI_Data即可向PC发送中断信号
DMA传输:
配置设备的DMA寄存器,将PC分配的DMA缓冲区的地址通过outbound 映射到 设备的PCIe DATA SPACE 区域,使用设备的DMA将设备的目标区域数据搬移到设备的PCIE DATA SPACE区域。