|
我不知道你以后要用什么上层的操作系统,我这里以vxWorks的pci驱动开发流程来说,vxWorks 在系统启动的过程中,对所有的pci 设备进行扫描,每个设备都在本地地址空间上分配IO空间和内存空间,之后到系统启动后,在通过PCI的设备ID和vender ID去找到这个设备,读取它的基址寄存器得到需要访问的基地址,这样通过这个地址就能对这个PCI设备进行访问。
一般一个PCI设备都是实现一个特定地功能的,例如一个网卡,它是实现一个网络数据接收、发送的功能的,这样就需要有一个网络芯片来实现这个功能,但是这个网络芯片需要通过一个PCI设备端的芯片来实现和CPU处的PCI主端的连接,一个这个pci设备端是一个实现PCI功能的设备(目前是PCI9052/4等芯片),在来说网络芯片,网络芯片为了实现网络功能,就有一堆寄存器来实现这个网络功能,我们只要把这些寄存器的地址都映射到pci总线上,CPU端就可以访问了;那个pci设备端芯片就是把这些寄存器的房屋基地址放到pci配置空间的基地址寄存器中;在回过头看,那个通过ID找到那个基地址就可以对网络芯片进行操作了,从而实现网络驱动就有方法了。
在windows下一样的,需要先找到设备,找到配置空间才能对设备进行操作。
我只能说这么多了,PCI的内容太多了,在这里说不太清。 |
|