bengbengsnake
驱动牛犊
驱动牛犊
  • 注册日期2002-05-31
  • 最后登录2005-05-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1395回复:3

一个PCI地址空间问题

楼主#
更多 发布于:2004-09-25 08:51
我在PCI总线下挂一个设备,这个设备需要访问某块分配的内存,好像PCI设备在访问这块内存前需要对该地址进行转换?为什么?
如 int *p=(int*)malloc(4),pci设备的某个寄存器存放是该块内存的首地址,为什么需要对p进行转换(映射)到pci空间的问题。
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-09-25 15:22
寄存器中需要的一般都是物理地址。
而 pc 上,有malloc 得到的一般都是线性地址。

想办法得到你需要的物理地址吧。
bengbengsnake
驱动牛犊
驱动牛犊
  • 注册日期2002-05-31
  • 最后登录2005-05-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-22 17:02
有一些概念想澄清:
1)PCI地址映射时有IO空间和MEM空间之分,是不是IO空间映射的是PCI设备的命令寄存器,而MEM空间对应的是设备RAM??
2)如果上述所说的成立,PCI设备存取的内存有两类:一是本身设备内存,另一种是CPU正在用的系统内存DRAM,在CPU看来这对两种内存操作应该是一样的,都是以统一编址的方式(不知道对不对?),但当pci设备访问这两种内存时是否也是一样的??
   上述应该和OS没多大关系吧,我用的vxworks
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-10-23 10:18
唉,具体的我也不清楚。

但有的时候,一个pci 设备会即会分到 io 地址,又会分到 mem 地址。 但这个时候,这2个地址的值虽然不一样,但他们所指向的内容是一样的。只不过是读取的方法不一样。

hoho,没细研究过。
游客

返回顶部