PCIE Inbound Outbound 地址配置,DMA传输

来源:互联网 发布:dmp怎么导入数据库 编辑:程序博客网 时间:2024/05/05 20:04

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