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