我在PCI总线下挂一个设备,这个设备需要访问某块分配的内存,好像PCI设备在访问这块内存前需要对该地址进行转换?为什么?如 int *p=(int*)malloc(4),pci设备的某个寄存器存放是该块内存的首地址,为什么需要对p进行转换(映射)到pci空间的问题。
回复(3) 2004-09-25 08:51 来自版块 - USB驱动开发
表情
wdy9927唉,具体的我也不清楚。 但有的时候,一个pci 设备会即会分到 io 地址,又会分到 mem 地址。 但这个时候,这2个地址的值虽然不一样,但他们所指向的内容是一样的。只不过是读取的方法不一样。 hoho,没细研究过。 (2004-10-23 10:18)
bengbengsnake有一些概念想澄清: 1)PCI地址映射时有IO空间和MEM空间之分,是不是IO空间映射的是PCI设备的命令寄存器,而MEM空间对应的是设备RAM?? 2)如果上述所说的成立,PCI设备存取的内存有两类:一是本身设备内存,另一种是CPU正在用的系统内存DRAM,在CPU看来这对...(2004-10-22 17:02)
wdy9927寄存器中需要的一般都是物理地址。 而 pc 上,有malloc 得到的一般都是线性地址。 想办法得到你需要的物理地址吧。 (2004-09-25 15:22)

返回顶部