1 Peripheral Component Interconnect (PCI). 2 PCI based System.
-
Upload
joseph-winstanley -
Category
Documents
-
view
238 -
download
0
Transcript of 1 Peripheral Component Interconnect (PCI). 2 PCI based System.
![Page 1: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/1.jpg)
1
Peripheral Component Interconnect (PCI)
![Page 2: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/2.jpg)
2
PCI based System
![Page 3: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/3.jpg)
3
PCI Address Space
• Peripheral devices have their own memory space
• PCI :PCI I/O, PCI Memory (device driver) PCI Configuration Space ( initialization)
• ISA I/O, ISA Memory (device driver)
![Page 4: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/4.jpg)
4
PCI Configuration Header
• Allow system to identify and control the device
• Every PCI slot has it’s PCI Configuration Header in an offset that is related to it’s slot on the board
![Page 5: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/5.jpg)
5
PCI Configuration Header
![Page 6: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/6.jpg)
6
PCI Configuration Header
• Vender Identification• Device Identification• Status• Command • Class Code
– SCSI : 0x0100
• Base Address Register• Interrupt Pin (PCI device interrupt pin)
• Interrupt Line (route interrupt to proper handler)
![Page 7: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/7.jpg)
7
PCI I/O and PCI Memory Address
• PCI configuration code turns on using Command field
• Linux drivers read/write PCI I/O and PCI memory addresses
![Page 8: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/8.jpg)
8
PCI-ISA Bridges
• The PCI specification copes with this by reserving the lower regions of the PCI I/O and PCI Memory address spaces for use by the ISA peripherals in the system and using a single PCI-ISA bridge to translate any PCI memory accesses to those regions into ISA accesses
![Page 9: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/9.jpg)
9
PCI-PCI Bridges
• PCI-PCI bridges only pass a subset of PCI I/O and PCI memory read and write requests downstream
• Linux device drivers only access PCI I/O and PCI Memory space via these windows
![Page 10: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/10.jpg)
10
PCI-PCI Bridges: PCI I/O and PCI Memory Windows
• A cycle is just an address as it appears on the PCI bus
• Type 0 Configuration Cycle
Bits 31:11 of the Type 0 configurationcycles are treated as the device select field
![Page 11: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/11.jpg)
11
PCI-PCI Bridges: PCI I/O and PCI Memory Windows
• Type 1 PCI Configuration cycles contain a PCI bus number and this type of configuration cycle is ignored by all PCI devices except the PCI-PCI bridges
![Page 12: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/12.jpg)
12
Type 1 PCI Configuration Cycles
• The primary bus interface being the one nearest the CPU
• Secondary bus interface being the one furthest away
• Subordinate bus number is the highest numbered PCI bus downstream of the PCI-PCI bridge
![Page 13: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/13.jpg)
13
Type 1 PCI Configuration Cycles
• Ignore it if the bus number specified is not in between the bridge's secondary bus number and subordinate bus number (inclusive),
• Convert it to a Type 0 configuration command if the bus number specified matches the secondary bus number of the bridge,
• Pass it onto the secondary bus interface unchanged if the bus number specified
• is greater than the secondary bus number and less than or equal to the
• subordinate bus number.
![Page 14: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/14.jpg)
14
Type 1 PCI Configuration Cycles
• Pass it onto the secondary bus interface unchanged if the bus number specified is greater than the secondary bus number and less than or equal to the subordinate bus number.
![Page 15: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/15.jpg)
15
Linux PCI Initialization
• PCI device driver– This pseudo-device driver builds a linked list of
data structures describing the topology of the system
• PCI BIOS
• PCI Fixup– system specific fixed up code
![Page 16: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/16.jpg)
16
The Linux Kernel PCI Data Structures
![Page 17: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/17.jpg)
17
The PCI Device Driver
• A function of the operating system called at system initialization time
• Scan all of the PCI buses in the system looking for all PCI devices in the system (including PCI-PCI bridge devices)
• Configuring PCI-PCI Bridges - Assigning PCI Bus Number
![Page 18: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/18.jpg)
18
Assigning PCI Bus Number (1)
![Page 19: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/19.jpg)
19
Assigning PCI Bus Number (2)
![Page 20: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/20.jpg)
20
Assigning PCI Bus Number (3)
![Page 21: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/21.jpg)
21
Assigning PCI Bus Number (4)
![Page 22: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/22.jpg)
22
PCI Fixup
• For non-Intel based system– allocates it space in PCI I/O and/or PCI
Memory – moves on the global PCI I/O and Memory
bases by the appropriate amounts, – enables the device's use of PCI I/O and PCI
Memory,
![Page 23: 1 Peripheral Component Interconnect (PCI). 2 PCI based System.](https://reader037.fdocuments.us/reader037/viewer/2022102603/55177a5255034645368b4f86/html5/thumbnails/23.jpg)
23