如果要訪問PCI 設備,首先要確定PCI設備在系統中的物理連接情況。描述這個連接情況的數據是“總線號”、“設備號”和“功能號”。一個系統可以有256 個PCI總線,每個總線上可以有32 個設備,每個設備可以具有8 個功能(每個功能作為一個PCI設備)。當這三個數據確定的時候,就可以在系統中唯一確定一個PCI 設備。
8~10:功能位. 有時候,一個pci設備對應多個功能.將每個功能單元分離出來,對應一個獨立的pci device
11~15位:設備號 對應該pci總線上的設備序號
16~23位:總線號 根總線的總線號為0.每遍歷到下層總線,總線號+1
PCI拓撲結構圖
在上圖的總線結構中,ethernet設備和pci-pci bridge的同類型資源空間必須要是pci bus0的一個子集
例如,pci bus 0的I/O端口資源是0x00CC~0x01CC. Ethernet設備的I/O范圍的是0x00CC~0x0xE0.那麼pci-pci bridge的I/O端口范圍就必須要在0x0xE0~0x01CC之間.
同樣,SCSI和VIDEO同類型資源必須要是pci_bus1的子集.pci bus1上有一個pci橋,對應的資源也就是它所連橋上的資源.即pci_bus->self.
也就是說,下層總線的資源是它上層總線資源的子集。上層總線資源是下層總線資源的父集。
其實,每個PCI設備的資源地始地址都是由操作系統設置的.在x86上,都由bios設置好了.假若沒有bios的時候,我們應該怎麼去設置設備的資源起始范圍呢?