大家好:
我现在在做DM8168 EVM与C6678 EVM的PCIe通信,DM8168作为RC,C6678作为EP,但现在对于这方面还不是太熟悉。
现在我想请教的问题是:
1.如何将DM8168 PCIe寄存器(地址是0x51000000)映射到它的内核空间,这样我就可以在内核空间通过访问其对应的虚拟地址查看PCIe寄存器的值并且配置它?
2.我在PCIe.C的代码里面发现有函数PCI_readBAR(),里面有函数:barStart [0] = pci_resource_start (PCIE_DEV, 0);后面的注释是/* BAR0 4K for PCIE application registers */,那么这个PCIe应用寄存器是指C6678的PCIe配置寄存器(地址是0x21800000)还是DM8168的PCIe寄存器(地址是0x51000000)?那么这个BAR[0]是C6678寄存器的BAR还是DM8168寄存器的BAR?我感觉这点有些混淆。
3.还有关于问题2的PCIE_DEV,它是在函数PCI_FindPciDevices()中得来了,类型是结构体pci_dev,那么这个PCIE_DEV具体指什么?如问题2里面的函数也有参数PCIE_DEV。
. 4.我想要实现的还是DM8168 PCIe寄存器映射到内核空间,我参考了另一个代码:/kernel/linux/linux-dvr_rdk/arch/arm/mach-omap2/pcie-ti81xx中的代码,使用了函数platform_get_resource_byname(),这个函数是否和我想实现的功能有关?我在PCIe.c中加入了platform_get_resource_byname(PCIE_DEV,
IORESOURCE_MEM, "pcie-regs");但并没有返回有效指针。
谢谢!
studying:
回复 Chris Meng:
明白了,谢谢您!