星期五, 4月 08, 2005

PCI
Bus CLK :25 or 33MHz
Bus Width: 32 bit
Autodetetion of interface board (Jumpless)
Automatically configured at boot time
device driver can access the configuration information in the device

Addressing
peripherial is identified by a bus number, a device number, a function number.
each PCI domain can host up 256 buses.
each bus can hosts up 32 devices.
each device can be a multifunction board with a maximum 8 functions.

each function can be identified at a hardware level by a 16-bit address, or key.
Linux device driver doesn't need to deal with these binary address, it uses a specific
data structure, pci_dev to act on devices.

command "lspci" and the file "devices" in /proc/bus/pci/ shows all pci peripherial datas,
$lspci
00:00.0 Host brigde
00:01.0 ISA bridge
00:07.0 IDE interface
....

The hardware circuits of each peripherial board answers queries pertainning to tree address space: memory location, I/O and configuration registers.
memory locaion and I/O are all the same for every bus. so queries one bus at one time.
then won't collid.

Memory and I/O are accessed in the uaual way via inb. configuration transations are performed by
calling specific kernel function to access configuration register.
Every PCI slot has 4 interrupt pin. each function can use

沒有留言:

網誌存檔