阅读:1373回复:9
关于驱动程序分配地址的问题
最近搞pci又搞应用程序都把我告乱了有点思维不清了 :D
pci设备的地址是如何设定的,我知道在设备插入系统后开机bios自动为设备映射一段空间,但是这个空间的大小有谁决定,在pci上的配置空间上?还是在什么地方,在有有的的方提到基地址,如果在配置空间设定了基地址那么岂不把地址定死不能灵活分配??如何能够得到这个地址 |
|
沙发#
发布于:2005-05-22 19:01
有PCI的配置空间决定的(那几个基地址寄存器)
一般配置空间内容有板卡上的EEPROM在启动的时候填写了。。 你要提前烧写EPPROM内容 你找PCI规范看看就知道了。。。或者你的硬件的datesheeet也应该有说明的。。 |
|
|
板凳#
发布于:2005-05-22 20:56
回楼上如果假设在pcirom同时基地址为0x100000那么映射出来的地址不冲突吗,我理解偏移表示的是大小基地址表示的是位置,如果进行映射没有必要要基地址
|
|
地板#
发布于:2005-05-22 22:12
回楼上如果假设在pcirom同时基地址为0x100000那么映射出来的地址不冲突吗,我理解偏移表示的是大小基地址表示的是位置,如果进行映射没有必要要基地址 你还是没有看懂PCI的配置空间那段,,再仔细看看,, 它应该是以2的基数分配空间的,,而且基地址也是2的基数 我语言能力差说不很清楚,,你看看那规范把,,说的清楚 好好琢磨。。。 |
|
|
地下室#
发布于:2005-05-24 10:48
pci卡的基地址是bios分配的,不同的系统是不同的。这个写到pci配置空间的bar0,,和扩展rom基地址寄存器。
|
|
5楼#
发布于:2005-05-24 15:41
pci卡的基地址是bios分配的,不同的系统是不同的。这个写到pci配置空间的bar0,,和扩展rom基地址寄存器。 EEPROM的优先权更高吧,,, |
|
|
6楼#
发布于:2005-05-25 10:34
如何能够获得这个分配的这个物理地址哪。 :o :( :D
|
|
7楼#
发布于:2005-05-25 14:29
如何能够获得这个分配的这个物理地址哪。 :o :( :D startdevice的时候不是有个资源列表吗?里面有起始基地址 |
|
|
8楼#
发布于:2005-05-26 23:20
我只知道pci接口芯片比如9054,可以在EEPROM里设你需要的地址范围,具体是随便设个基址(没关系),再设个范围大小,都有具体的寄存器。
主机会读你的寄存器,再为你分配个基址和大小,就是BOIS看到的。 |
|
9楼#
发布于:2005-05-27 18:25
感谢各位大哥,我已经明白分配问题了。各位解答的很详细,感激不禁
|
|