VxWorks中有一个专门的pciConfigLib – PCI Configuration space access support for PCI drivers
一般步骤(简单的说一下,具体可以参看我的Blog: NetMos 9845 PCI 串口扩展卡驱动)
1:pciFindDevice( ) – find the nth device with the given device & vendor ID
2:pciConfigInLong( ) – read one longword from the PCI configuration space
读取BAR0~BAR5,intLine等值
3:判断该PCI设备是纯I/0设备(如:PCI串口扩展卡)还是需要Memory map的设备(如PCI显卡),这块需要参照一下PCI specification。
如果需要做PCI Memory map,还需要获得PCI设备的内存大小,可以先保存BARx的基址,然后用pciConfigOutLong写-1到BARx获得PCI Memory的大小(可能需要经过转化才能得到),用原先保存的BARx值恢复BARx,现在可以进行Memory map,安装驱动,接下来用先前读到的intLine来进行中断连接。中间有一些细节,在这里我就不多说了!