2017年11月29日 星期三

PCI裝置掃描



PCI裝置有提供IO和MMIO的方式可以存取,但是在資源還沒有分配的時候,還是只能透過IO進行讀寫。

要從IO去存取PCI BUS上的裝置,需要透過PCI 的兩個 IO port,address port(0xcf8) and data port(0xcfc)。在address port 的位置寫入要存取的PFA(PCI function address),即可對目標的暫存器進行讀寫。


PFA由PCI裝置的BUS[23:16]、DEVICE[15:11]、FUNCTION[10:8]和REG offset[7:2]組成。[31]固定填1。

根據位元數決定最大支援多少BUS,或裝置。

Bit[31]: It is an enable flag for determining when accesses to CONFIG_DATA are to be translated to configuration transactions on the PCI bus.
Bit[30:24]: Reserved
Bit[23:16]: Bits 23 through 16 choose a specific PCI bus in the system.
Bit[15:11]: Bits 15 through 11 choose a specific device on the bus.
Bit[10:8]: Bits 10 through 8 choose a specific function in a device.
Bit[7:2]: Bits 7 through 2 choose a DWORD in the device's Configuration Space.
Bit[1:0]: Bits 1 and 0 are read-only and must return 0's when read.


31302928272625242322212019181716151413121110 9 8 7 6 5 4 3 2  1 0
 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0
 0

在PCI SCAN後要完成 Configuration setting 和 Linking list of PCI device的建立。在這個LIST裡面,每個NODE都是一個PCI device,SCAN的過程中就要去設置好PCI裝置的組態

沒有留言:

張貼留言