DSP

PCIE Inbound Outbound 地址配置,DMA传输

2019-07-13 17:37发布

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区域。