阅读:1750回复:6
pci驱动开发问题(80分!!!)
//似乎最多能给20分,但是可以补给够80(童叟无欺,货真价实)
1。有三个地址寄存器: pci配置寄存器中有一个,PCI Base Address 2 for Accesses to Local Address Space 0 这个寄存器是不是存储了PCIBIOS分配给空间0的PCI地址? Local寄存器中有另外两个 Local Address Space 0 Range,比如它的值为00FF0000h(reset后的值)是确定空间0的范围的寄存器地址,这个寄存器的高三位31:28)似乎一直为0,表示一直用来decode,这个decode是不是应该理解为发送到pci总线上面的地址的前几位用来判断是否是针对空间0的,但是为什么它的27:4位中表示用来decode的位却是一呢?像上面的FF。 Local寄存器中还有一个,Local Address Spcace 0 Local Base Address(Remap) 这个寄存器是不是就是空间0在Local总线上面的地址? 2。怎么来作驱动程序的dll动态连接库,供应用程序使用调用呢? ReadFile函数参数里面不包括想访问的内存空间的偏移地址,怎么 来访问一个特定的pci卡上的内存空间呢? |
|
沙发#
发布于:2003-10-27 22:14
pci配置寄存器中有一个,PCI Base Address 2 for Accesses to Local Address Space 0,这个寄存器是不是存储了PCIBIOS分配给空间0的PCI地址?
------------------------------------- 你要么全使用英文,要么全使用中文。实在看不懂你的意思? 有原文吗? |
|
|
板凳#
发布于:2003-10-29 17:54
PCI Base Address 2 for Accesses to Local Address Space 0
这个是你板卡上的器件的映射地址 Local Address Space 0 Range 这个是影射的内存段的大小。(这个没用过,不是很确定) Local Address Spcace 0 Local Base Address(Remap) 这个是Spcace 0的本地地址(就是板卡上的地址),与PC的地址不一样的。 2。ReadFile函数参数里面不包括想访问的内存空间的偏移地址,怎么 来访问一个特定的pci卡上的内存空间呢? 在驱动里面,响应ReadFile那段代码里面设置访问地址就行了,也可以把地址放在缓冲区里面,在驱动里再读出来用。 |
|
地板#
发布于:2003-11-02 11:44
建议楼主先看看pci bios标准,上面讲得比较清楚。
还有,不是每个pci设备的pcibios都是相同的,这个要看具体的芯片资料了。 关于第二个问题,实际pci卡上的内存空间在映射之后跟本机内存是一样的,访问方式也是一样的。 |
|
|
地下室#
发布于:2003-11-04 20:39
说的怎么这么不明白呢
详细点,准确点 |
|
5楼#
发布于:2003-11-08 19:03
看不懂 什么意思
|
|
6楼#
发布于:2003-12-16 09:54
意识很明白,PCI的空间寄存器2(从0开始)存放局部地址空间0的地址。局部地址空间编号从0~3,4个地址,PCI配置空间内空间寄存器编号从0~5有6个,0和1用于访问PCI本身,
|
|