阅读:2901回复:7
望解答:PCI驱动开发中的几个空间概念和问题!!!
本人着手PCI9054驱动程序开发有一段时间,在阅读PCI9054手册和相关文献时对几个概念一直不是很了解。
1、PCI的配置空间和PCI的地址空间的关系,是不是配置空间属于地址空间的一段,PCI的地址空间是不是已经可以看做是系统地址空间的一部分呢? 2、本地端也有自己的配置空间,里面定义了一些寄存器,如范围、基地址等等,那么如何对局部配置空间进行访问? 3、设备内存,也就是Local端的内存,如何将Local端的内存映射到系统地址空间,更疑惑的是Local端的内存和Local端的配置空间是个什么关系,从地址逻辑的角度看? 望知道的前辈说说自己的想法,感激不尽。。。 |
|
沙发#
发布于:2009-05-22 22:51
配置空间属于地址空间的一部分,只是表示该地址段的内容比较特殊,在使用驱动程序过程中不能该表。
本地端的配置空间与PCI端的配置空间不尽相同,有的是独立的,有的是共享的。共享的可以在两端交换数据。本地端的FPGA逻辑要实现对本地端配置空间的操作。 本地端的内存地址是在配置空间中指定的。两者不一样。 本地端做好地址译码,和访问之后,计算机可以像操作内存一样,操作本地端的内存,但是块状访问可能受限。 |
|
|
板凳#
发布于:2009-05-23 20:11
回 1楼(zlf1110) 的帖子
谢谢楼上的回答 |
|
地板#
发布于:2009-05-31 21:05
回 1楼(zlf1110) 的帖子
看了楼主的回答我还是不太明白。PCI9054的配置寄存器中的PCIBAR0\PCIBAR1是PCI配置寄存器中其他所有寄存器在内存和I/O空间的基地址吗?楼主能否将上面的解答给出个例子呢?谢谢!! |
|
地下室#
发布于:2009-06-07 00:18
不是。
PCIBAR0是指配置空间中的地址,对于9054来说就是其操作寄存器的地址,9054负责地址译码。 PCIBAR1-4是用户自定义的地址,可以定义IO空间和Memory空间,定义之后使用的操作方式要一致,IO空间使用IO访问方式,Memory空间使用Memory访问方式。Memory空间不一定能一次访问很大的连续区域,比如一次要读取512字节的数据,可能就不会成功。 |
|
|
5楼#
发布于:2009-06-07 00:19
顺便说一下,我使用的S5935,没有使用过9054,我的回答不一定正确。
|
|
|
6楼#
发布于:2009-06-08 15:19
回 4楼(zlf1110) 的帖子
问下 IO和Memory空间配置是要向配置eeprom写入配置文件还是在可以在DriverStudio的开发向导里面自己根据需要添加的啊? |
|
7楼#
发布于:2011-03-27 22:17
zlf1110的回答很深入,谢谢!
|
|