Hi 各位管理好,
我在使用EVM6657开发板,因为需要6657做PCIE主设备,并且外挂pcie桥设备,所以需要进行PCIE设备枚举。
使用的测试例程是 6657_STK中的PCIE例程, 见附件
例程中配置 bus-0 dev-0 func-0
配置PCIE Application 寄存器中的 cfg 寄存器配置PCIE从设备地址
Configuration Transaction Setup Register (CFG_SETUP)
remote_cfg_setup.config_type= 0; //remote device is EP
remote_cfg_setup.config_bus= 0;
remote_cfg_setup.config_device= 0;
remote_cfg_setup.config_function= 0;
KeyStone_PCIE_remote_CFG_setup(&remote_cfg_setup);
经过KeyStone_PCIE_Init 之后, 可以在 0x2180_2000 地址上读出地址为(bus-0 dev-0 func-0 )设备的配置空间,
这个设备是一个pcie-to-pci bridge设备,其内容如下:
对pcie-bridge 的初始化如下:
1. 配置 bridge 配置空的 memory_base meory_limited 和 prefetch_memory_base prefetch_memory_limited
在例程中定义 memory_base 为 0x1000_0000 size为256M
prefetch_memory_base 为 0x8000_0000 size 为256M
2, 配置 primary bus num 为0, secondary bus no 为1 , subordinate bus no为1 (硬件连接上 pcie-to-pci 桥设备下只有一个pci设备)
3, 配置 command寄存器, 使能memory 和 prefetch memory , disable IO
配置之后的配置空间内容如下:
配置过PCIE-bridge之后, 设置bus-1 dev-0 fun-0 配置application 中的cfg寄存器,
之后,重新读取 0x2180_2000中的配置空间, 按照我的理解, 重新配置pcie设备的地址,从0x2180_2000中读出的配置
空间应该是新设备的配置空间, 如果vendor id为0或者全F,表示设备不存在,
但是我重新配置了 cfg寄存器之后, 读取出来的 0x2180_2000 的配置空间还是桥设备的配置空间, 没有变化,
请教下在扫描过程中, 重新配置 cfg 寄存器中pcie设备的地址之后, 是否需要进行其他操作, 才能从 0x2180_2000位置读取到对应设备的配置空间。

