急!请教各位高手!

pci板卡上有个64m的存储芯片,在qnx系统下映射到内存空间中,怎么样才能找到这段内存的基地址?有什么函数可以操作这段内存的读写呢?如果映射到I/O空间,是不是用in16,out16之类的函数就可以读写了呢?谢谢!!

64M恐怕是在PCI的memory空间.
用pci_attach_device(NULL,PCI_MASTER_ENABLE | PCI_INIT_ALL, device_index, &pci_info)可以得到有关参数,其中包括IO或MEMORY地址及长度.
(pci_info.CpuBaseAddress[x]),pci_info.BaseAddressSize[x]).

内存的基地址能找到,但是如何读写这个地址里的数据呢?可以通过指针来直接读写内存地址空间的数据吗?

要mmap_device_memory(),用返回的指针来读写。

板卡上的RAM不是在加电的时候由系统自动映射到内存地址空间的吗?通过从pci配置空间中读出的基地址不就是指向这个映射内存空间的首地址吗?那还要用mmap_device_memory()来操作吗,直接操作这个基地址可以吗?
刚刚接触到这方面的东西,不是很懂,麻烦xtang和各位高手能详细指点一下,谢谢!!

还有就是对于映射到内存空间的地址,可以用in或out之类的函数操作吗?谢谢!!

mmap_device_memory()
Map a device’s physical memory into a process’s address space

QNX使用的是虚地址.所以需要mmap来进行地址影射.

如果你使用的是mmap_device_memory(),倒不用使用in/out吧.它返回地址的指针,直接操作就是了.

一般我们使用mmap_device_io()的时候才使用in/out.原因参考:
http://www.openqnx.com/chinese/viewtopic.php?t=4&sid=98a95116f7799e5282fda9b253ac12f3

当然你要用我想也是可以的.