Linux系统读取PCI设备基地址

向大家请教一个问题,毕业急用!谢谢啦!

基于PMP-10D-X型PC/104定制了Linux系统(内核版本:2.6.37.6)。
现在通过PCI接口连接一个FPGA。
FPGA地址映射到内存上,Linux系统只需要对内存操作就相当于对FPGA操作。

那现在如何在Linux系统下获得PCI设备基地址?
我使用了lspci  -v命令查出FPGA的信息为:Memory  at  e8000000 (32-bits, non-prefetchable)[size=1M],
这里的e8000000是不是就是所谓的基地址?

然后,我在Linux系统中,编了一个程序:
#include
int main()
{
int i=0;
int *p=0xe8000000;
printf("hello world ! \n");
for (i=0;i<10;i++)
  {
      printf("%d ", *(p+i)) ;
  }  
 return  0;
}
编译运行显示:
hello  world !
Segmentation fault !

所以现在就想请教大家:
这个地址是不是FPGA的基地址?
如果是,为什么出现这种错误?
如果不是,那如何才能获取PCI设备基地址?

2个回答

问题不全,然后呢?
lspci貌似是从一个文件中读取的信息,应该是/sys/bus/pci/devices

你在Linux系统中应用程序怎么能直接访问内存地址呢?你写的那个地址经过MMU查页表不存在所以就段错误了。需要写地址映射的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问