?? 00000007.htm
字號:
<HTML><HEAD> <TITLE>BBS水木清華站∶精華區</TITLE></HEAD><BODY><CENTER><H1>BBS水木清華站∶精華區</H1></CENTER>發信人: coolzhang (coolzhang), 信區: Linux <BR>標 題: linux bible 第六章 PCI <BR>發信站: BBS 水木清華站 (Mon Oct 25 17:50:59 1999) <BR> <BR>發信人: coolzhang (coolzhang), 信區: UNIX <BR>標 題: linux bible 第六章 PCI <BR>發信站: 武漢白云黃鶴站 (Mon Oct 25 15:35:21 1999), 站內信件 <BR> <BR> <BR>第六章 PCI <BR> <BR> <BR>外圍設備互連(PCI)是一種將系統中外部設備以結構化與可控制方式連接到起來的總線 <BR>標準,包括系統部件連接的電氣特性及行為。本章將詳細討論Linux核心對系統中的PCI <BR>總線與設備的初始化過程。 <BR> <BR>PCI總線和PCI-PCI橋接器在連接系統中設備到上起關鍵作用,在這個系統中CPU和視頻 <BR>設備被連到PCI bus 0上,它是系統中的主干PCI總線。而PCI-PCI橋接器這個特殊PCI <BR>設備將主干總線PCIbus 0與下級總線PCI bus 1連接到一起。PCI標準術語中,PCI bus <BR>1是PCI-PCI橋接器的downstream而PCI bus 0是此橋接器的up-stream。SCSI和以太網 <BR>設備通過二級PCI總線連接到這個系統中。而在物理實現上,橋接器和二級PCI總線被 <BR>集成到一塊PCI卡上。而PCI-ISA橋接器用來支持古老的ISA設備,圖中有一個高級I/O <BR>控制芯片來控制鍵盤、鼠標及軟盤設備。 <BR> <BR>6.1 PCI地址空間 <BR> <BR>CPU和PCI設備需要存取在它們之間共享的內存空間。這塊內存區域被設備驅動用來控 <BR>制PCI設備并在CPU與PCI設備之間傳遞信息。最典型的共享內存包括設備的控制與狀態 <BR>寄存器。這些寄存器用來控制設備并讀取其信息。例如PCI SCSI設備驅動可以通過讀 <BR>取其狀態寄存器,找出已準備好將一塊數據寫入SCSI磁盤的SCSI設備。同時還可以在 <BR>設備加電后,通過對控制寄存器寫入信息來啟動設備。 <BR> <BR>CPU的系統內存可以被用作這種共享內存,但是如果采用這種方式,則每次PCI設備訪 <BR>問此內存塊時,CPU將被迫停止工作以等待PCI設備完成此操作。這種方式將共享內存 <BR>限制成每次只允許一個系統設備訪問。該策略會大大降低系統性能。但如果允許系統 <BR>外設不受限制地訪問主存也不是好辦法。它的危險之處在于一個有惡意行為的設備將 <BR>使整個系統置于不穩定狀態。 <BR> <BR>外設有其自身的內存空間。CPU可以自由存取此空間,但設備對系統主存的訪問將處于 <BR>DMA(直接內存訪問)通道的嚴格控制下。ISA設備需要存取兩個地址空間:ISA I/O <BR>(輸入輸出)和ISA內存。而PCI設備需要訪問三種地址空間:PCI I/O、PCI內存和PCI <BR>配置空間。CPU則可以訪問所有這些地址空間。PCI I/O和PCI內存由設備驅動程序使用 <BR>而PCI配置空間被Linux核心中的PCI初始化代碼使用。 <BR> <BR>Alpha AXP處理器并不能象訪問系統地址空間那樣隨意訪問這些地址空間,它只能通過 <BR>輔助芯片組來存取這些地址空間,如PCI配置空間。Alpha AXP處理器使用稀疏地址映 <BR>射策略來從系統巨大的虛擬內存中"竊取"一部分并將其映射到PCI地址空間。 <BR> <BR>6.2 PCI 配置頭 <BR> <BR> <BR>系統中每個PCI設備,包括PCI-PCI橋接器在內,都有一個配置數據結構,它通常位于 <BR>PCI配置地址空間中。PCI配置頭允許系統來標識與控制設備。配置頭在PCI配置空間的 <BR>位置取決于系統中PCI設備的拓撲結構。例如將一個PCI視頻卡插入不同的PCI槽,其配 <BR>置頭位置會變化。但對系統沒什么影響,系統將找到每個PCI設備與橋接器并使用它們 <BR>配置頭中的信息來配置其寄存器。 <BR> <BR>典型的辦法是用PCI槽相對主板的位置來決定其PCI配置頭在配置空間中的偏移。比如 <BR>主板中的第一個PCI槽的PCI配置頭位于配置空間偏移0處,而第二個則位于偏移256處 <BR>(所有PCI配置頭長度都相等,為256字節),其它槽可以由此類推。系統還將提供一 <BR>種硬件相關機制以便PCI設置代碼能正確的辨認出對應PCI總線上所有存在的設備的PCI <BR>配置頭。通過PCI配置頭中的某些域來判斷哪些設備存在及哪些設備不存在(這個域叫 <BR>廠商標志域:Vendor Identification field)。對空PCI槽中這個域的讀操作將得到一 <BR>個值為0xFFFFFFFF的錯誤信息。 <BR> <BR>256字節PCI配置頭的結構,它包含以下域: <BR> <BR>廠商標識(Vendor Identification) <BR> 用來唯一標識PCI設備生產廠家的數值。Digital的PCI廠商標識為0x1011而Intel <BR> 的為0x8086。 <BR>設備標識(Device Identification) <BR> 用來唯一標識設備的數值。Digital <BR> 21141快速以太設備的設備標識為0x0009。 <BR>狀態(Status) <BR> 此域提供PCI標準定義中此設備的狀態信息。 <BR>命令(Command) <BR> 通過對此域的寫可以控制此設備,如允許設備訪問PCI I/O內存。 <BR>分類代碼(Class Code) <BR> 此域標識本設備的類型。對于每種類型的視頻,SCSI等設備都有標準的分類代碼。 <BR> 如SCSI設備分類代碼為0x0100。 <BR>基地址寄存器(Base Address Registers) <BR> 這些寄存器用來決定和分配此設備可以使用的PCI <BR> I/O與PCI內存空間的類型,數量及位置。 <BR>中斷引腳(Interrupt Pin) <BR> PCI卡上的四個物理引腳可以將中斷信號從插卡上帶到PCI總線上。這四個引腳標 <BR> 準的標記分別為A、B、C及D。中斷引腳域描敘此PCI設備使用的引腳號。通常特 <BR> 定設備都是采用硬連接方式。這也是系統啟動時,設備總使用相同中斷引腳的原 <BR> 因。中斷處理子系統用它來管理來自該設備的中斷。 <BR>中斷連線(Interrupt Line) <BR> 本設備配置頭中的中斷連線域用來在PCI初始化代碼、設備驅動以及Linux中斷處 <BR> 理子系統間傳遞中斷處理過程。雖然本域中記錄的這個數值對于設備驅動毫無意 <BR> 義。但是它可以將中斷處理過程從PCI卡上正確路由到Linux操作系統中相應的設 <BR> 備驅動中斷處理代碼中。在interrupt一章中將詳細描敘Linux中斷處理過程。 <BR> <BR>6.3 PCI I/O和PCI內存地址 <BR> <BR>這兩個地址空間用來實現PCI設備和Linux核心中設備驅動程序之間的通訊。例如DEC21141 <BR>快速以太網設備的內部寄存器被映射到PICI/O空間上時,其對應的Linux設備驅動可 <BR>以通過對這些寄存器的讀寫來控制此設備。PCI視頻卡通常使用大量的PCI內存空間來 <BR>存儲視頻信息。 <BR> <BR>在PCI系統建立并通過用PCI配置頭中的命令域來打開這些地址空間前,系統決不允許對 <BR>它們進行存取。值得注意的是只有PCI配置代碼讀取和寫入PCI配置空間,Linux設備驅 <BR>動只讀寫PCII/O和PCI內存地址。 <BR> <BR>6.4 PCI-ISA 橋接器 <BR> <BR>這種橋接器通過將PCI I/O和PCI內存空間的存取轉換成對ISA <BR>I/O和ISA內存的存取來支持古老的ISA設備。市場上許多主板中同時包含幾個ISA總線 <BR>槽和PCI槽。但今后對ISA設備的向后兼容支持將逐漸減弱,最終主板上只會有PCI槽。 <BR>早期的Intel 8080 PC就將ISA設備的ISA地址空間固定了下來。即使在價值5000美圓 <BR>的Alpha AXP 系統中其ISA軟盤控制器地址也和最早IBM PC上的相同。PCI標準將PCI <BR>I/O和PCI內存的低端部分保留給系統中的ISA外設,另外還使用PCI-ISA橋接器實現從 <BR>PCI內存訪問到ISA內存訪問的轉換。 <BR> <BR>6.5 PCI-PCI 橋接器 <BR> <BR>PCI-PCI橋接器是一種將系統中所有PCI總線連接起來的特殊PCI設備。在簡單系統中 <BR>只存在一條PCI總線,由于受電氣特性的限制,它所連接的PCI設備個數有限。引入 <BR>PCI-PCI橋接器后系統可以使用更多的PCI設備。對于高性能服務器這是非常重要的。 <BR>Linux提供了對PCI-PCI橋接器的全面支持。 <BR> <BR>6.5.1 PCI-PCI橋接器:PCI I/O和PCI 內存窗口 <BR> <BR>PCI-PCI橋接器將PCI <BR>I/O和PCI內存讀寫請求中的一個子集向下傳送。例如在圖6.1中,如果來自PCI <BR>總線0請求是對SCSI或以太設備所擁有的PCI <BR>I/O或PCI內存的讀寫,則此PCI-PCI橋接器將只需把請求從總線0傳遞到PCI總線1上; <BR>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -