日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux 核心--7.PCI設(shè)備( 二 )



圖6.2給出了256字節(jié)PCI配置頭的結(jié)構(gòu) , 它包含以下域:


廠商標(biāo)識(Vendor Identification)
用來唯一標(biāo)識PCI設(shè)備生產(chǎn)廠家的數(shù)值 。Digital的PCI廠商標(biāo)識為0x1011而Intel的為0x8086 。
設(shè)備標(biāo)識(Device Identification)
用來唯一標(biāo)識設(shè)備的數(shù)值 。Digital 21141快速以太設(shè)備的設(shè)備標(biāo)識為0x0009 。
狀態(tài)(Status)
此域提供PCI標(biāo)準(zhǔn)定義中此設(shè)備的狀態(tài)信息 。
命令(Command)
通過對此域的寫可以控制此設(shè)備 , 如允許設(shè)備訪問PCI I/O內(nèi)存 。
分類代碼(Class Code)
此域標(biāo)識本設(shè)備的類型 。對于每種類型的視頻 , SCSI等設(shè)備都有標(biāo)準(zhǔn)的分類代碼 。如SCSI設(shè)備分類代碼為0x0100 。
基地址寄存器(Base Address Registers)
這些寄存器用來決定和分配此設(shè)備可以使用的PCI I/O與PCI內(nèi)存空間的類型 , 數(shù)量及位置 。
中斷引腳(Interrupt Pin)
PCI卡上的四個物理引腳可以將中斷信號從插卡上帶到PCI總線上 。這四個引腳標(biāo)準(zhǔn)的標(biāo)記分別為A、B、C及D 。中斷引腳域描敘此PCI設(shè)備使用的引腳號 。通常特定設(shè)備都是采用硬連接方式 。這也是系統(tǒng)啟動時 , 設(shè)備總使用相同中斷引腳的原因 。中斷處理子系統(tǒng)用它來管理來自該設(shè)備的中斷 。
中斷連線(Interrupt Line)
本設(shè)備配置頭中的中斷連線域用來在PCI初始化代碼、設(shè)備驅(qū)動以及Linux中斷處理子系統(tǒng)間傳遞中斷處理過程 。雖然本域中記錄的這個數(shù)值對于設(shè)備驅(qū)動毫無意義 。但是它可以將中斷處理過程從PCI卡上正確路由到Linux操作系統(tǒng)中相應(yīng)的設(shè)備驅(qū)動中斷處理代碼中 。在interrupt一章中將詳細(xì)描敘Linux中斷處理過程 。

6.3PCI I/O和PCI內(nèi)存地址
這兩個地址空間用來實(shí)現(xiàn)PCI設(shè)備和Linux核心中設(shè)備驅(qū)動程序之間的通訊 。例如DEC21141快速以太網(wǎng)設(shè)備的內(nèi)部寄存器被映射到PIC I/O空間上時 , 其對應(yīng)的Linux設(shè)備驅(qū)動可以通過對這些寄存器的讀寫來控制此設(shè)備 。PCI視頻卡通常使用大量的PCI內(nèi)存空間來存儲視頻信息 。

在PCI系統(tǒng)建立并通過用PCI配置頭中的命令域來打開這些地址空間前 , 系統(tǒng)決不允許對它們進(jìn)行存取 。值得注意的是只有PCI配置代碼讀取和寫入PCI配置空間 , Linux設(shè)備驅(qū)動只讀寫PCI I/O和PCI內(nèi)存地址 。


6.4PCI-ISA 橋接器
這種橋接器通過將PCI I/O和PCI內(nèi)存空間的存取轉(zhuǎn)換成對ISA I/O和ISA內(nèi)存的存取來支持古老的ISA設(shè)備 。市場上許多主板中同時包含幾個ISA總線槽和PCI槽 。但今后對ISA設(shè)備的向后兼容支持將逐漸減弱 , 最終主板上只會有PCI槽 。早期的Intel 8080 PC就將ISA設(shè)備的ISA地址空間固定了下來 。即使在價值5000美圓的Alpha AXP 系統(tǒng)中其ISA軟盤控制器地址也和最早IBM PC上的相同 。PCI標(biāo)準(zhǔn)將PCI I/O和PCI內(nèi)存的低端部分保留給系統(tǒng)中的ISA外設(shè) , 另外還使用PCI-ISA橋接器實(shí)現(xiàn)從PCI內(nèi)存訪問到ISA內(nèi)存訪問的轉(zhuǎn)換 。

6.5PCI-PCI 橋接器
PCI-PCI橋接器是一種將系統(tǒng)中所有PCI總線連接起來的特殊PCI設(shè)備 。在簡單系統(tǒng)中只存在一條PCI總線 , 由于受電氣特性的限制 , 它所連接的PCI設(shè)備個數(shù)有限 。引入PCI-PCI橋接器后系統(tǒng)可以使用更多的PCI設(shè)備 。對于高性能服務(wù)器這是非常重要的 。Linux提供了對PCI-PCI橋接器的全面支持 。


6.5.1PCI-PCI橋接器:PCI I/O和PCI 內(nèi)存窗口
PCI-PCI橋接器將PCI I/O和PCI內(nèi)存讀寫請求中的一個子集向下傳送 。例如在圖6.1中 , 如果來自PCI 總線0請求是對SCSI或以太設(shè)備所擁有的PCI I/O或PCI內(nèi)存的讀寫 , 則此PCI-PCI橋接器將只需把請求從總線0傳遞到PCI總線1上;所有其它PCI I/O和內(nèi)存地址都將被它忽略 。這個過濾使得這些地址信息不會在整個系統(tǒng)中擴(kuò)散 。為了實(shí)現(xiàn)這點(diǎn) , PCI-PCI橋接器必須編程為有某個PCI I/O及PCI內(nèi)存基址和上限 , 只有在這個地址范圍內(nèi)的PCI地址訪問才能從主干總線傳遞到二級總線 。一旦系統(tǒng)中的PCI-PCI橋接器被設(shè)置成這樣 , 則只要當(dāng)Linux設(shè)備驅(qū)動程序通過這個窗口訪問PCI I/O和PCI內(nèi)存空間時 , 此PCI-PCI橋接器就將變得透明 。這樣也給Linux PCI設(shè)備驅(qū)動編寫者提供了方便 。我們在稍后的討論中將看到Linux對PCI-PCI橋接器非常巧妙的配置 。

推薦閱讀