亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pci.txt

?? linux informations
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
Table of Contents, Show Frames, No Frames 

--------------------------------------------------------------------------------


第六章 PCI

外圍設備互連(PCI)是一種將系統中外部設備以結構化與可控制方式連接到起來的總線標準,包括系統部件連接的電氣特性及行為。本章將詳細討論Linux核心對系統中的PCI總線與設備的初始化過程。 






圖6.1 一個基于PCI的系統示意圖 

圖6.1是一個基于PCI的系統示意圖。PCI總線和PCI-PCI橋接器在連接系統中設備到上起關鍵作用,在這個系統中CPU和視頻設備被連到PCI bus 0上,它是系統中的主干PCI總線。而PCI-PCI橋接器這個特殊PCI設備將主干總線PCI bus 0與下級總線PCI bus 1連接到一起。PCI標準術語中,PCI bus 1是PCI-PCI橋接器的downstream而PCI bus 0是此橋接器的up-stream。SCSI和以太網設備通過二級PCI總線連接到這個系統中。而在物理實現上,橋接器和二級PCI總線被集成到一塊PCI卡上。而PCI-ISA橋接器用來支持古老的ISA設備,圖中有一個高級I/O控制芯片來控制鍵盤、鼠標及軟盤設備。 


6.1  PCI地址空間
CPU和PCI設備需要存取在它們之間共享的內存空間。這塊內存區域被設備驅動用來控制PCI設備并在CPU與PCI設備之間傳遞信息。最典型的共享內存包括設備的控制與狀態寄存器。這些寄存器用來控制設備并讀取其 信息。例如PCI SCSI設備驅動可以通過讀取其狀態寄存器,找出已準備好將一塊數據寫入SCSI磁盤的SCSI設備。同時還可以在設備加電后,通過對控制寄存器寫入信息來啟動設備。 

CPU的系統內存可以被用作這種共享內存,但是如果采用這種方式,則每次PCI設備訪問此內存塊時,CPU將被迫停止工作以等待PCI設備完成此操作。這種方式將共享內存限制成每次只允許一個系統設備訪問。該策略會大大降低系統性能。但如果允許系統外設不受限制地訪問主存也不是好辦法。它的危險之處在于一個有惡意行為的設備將使整個系統置于不穩定狀態。 

外設有其自身的內存空間。CPU可以自由存取此空間,但設備對系統主存的訪問將處于DMA(直接內存訪問)通道的嚴格控制下。ISA設備需要存取兩個地址空間:ISA I/O(輸入輸出)和ISA內存。而PCI設備需要訪問三種地址空間:PCI I/O、PCI內存和PCI配置空間。CPU則可以訪問所有這些地址空間。PCI I/O和 PCI內存由設備驅動程序使用而PCI配置空間被Linux 核心中的PCI初始化代碼使用。 

Alpha AXP處理器并不能象訪問系統地址空間那樣隨意訪問這些地址空間,它只能通過輔助芯片組來存取這些 地址空間,如PCI配置空間。Alpha AXP處理器使用稀疏地址映射策略來從系統巨大的虛擬內存中"竊取"一部分并將其映射到PCI地址空間。 


6.2  PCI 配置頭



圖6.2 PCI配置頭 


系統中每個PCI設備,包括PCI-PCI橋接器在內,都有一個配置數據結構,它通常位于PCI配置地址空間中。PCI配置頭允許系統來標識與控制設備。配置頭在PCI配置空間的位置取決于系統中PCI設備的拓撲結構。例如將一個PCI視頻卡插入不同的PCI槽,其配置頭位置會變化。但對系統沒什么影響,系統將找到每個PCI設備與橋接器并使用它們配置頭中的信息來配置其寄存器。 

典型的辦法是用PCI槽相對主板的位置來決定其PCI配置頭在配置空間中的偏移。比如主板中的第一個PCI槽的PCI配置頭位于配置空間偏移0處,而第二個則位于偏移256處(所有PCI配置頭長度都相等,為256字節),其它槽可以由此類推。系統還將提供一種硬件相關機制以便PCI設置代碼能正確的辨認出對應PCI總線上所有存在的設備的PCI配置頭。通過PCI配置頭中的某些域來判斷哪些設備存在及哪些設備不存在(這個域叫廠商標志域: Vendor Identification field)。對空PCI槽中這個域的讀操作將得到一個值為0xFFFFFFFF的錯誤信息。 

圖6.2給出了256字節PCI配置頭的結構,它包含以下域: 


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

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

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


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

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


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

6.5.2  PCI-PCI橋接器:PCI配置循環及PCI總線編號方式





圖6.3 0類型PCI配置循環 






圖6.4 1類型PCI配置循環 

為了讓CPU上運行的PCI初始化代碼能訪問位于分支PCI總線上的設備,必須為橋接器提供某種機制以便它可以決定是否將配置循環從主干接口傳遞到其二級接口。循環是出現在PCI總線上的一個地址。PCI 標準定義了兩種PCI配置尋址格式;類型0和類型1;它們分別如圖6.3及6.4所示。類型0 PCI配置循環不包含總線序號,同時在此PCI總線上對應于這個PCI配置地址的所有PCI設備都會來對它們進行解釋。類型0 配置循環的11 位到31位用來進行PCI設備選擇。有種設計方式是讓每位代表系統中一個不同的設備。這時11位對應PCI槽0中的PCI設備而12位標識槽1中的設備等等,如此類推。另外一種方式是直接將設備的槽號寫入到位31到11中。系統使用哪種機制依賴于系統PCI內存控制器。 

類型1 PCI配置循環包含一個PCI總線序號,同時這種配置循環將被除橋接器外的所有PCI設備所忽略。所有發現類型1 配置循環的PCI-PCI橋接器把它們看到的地址傳遞到各自的下級PCI總線。至于PCI-PCI橋接器是否忽略類型1 配置循環或將其傳遞到PCI總線則依賴于PCI-PCI橋接器的配置方式。每個PCI-PCI橋接器都擁有一個主干總線接口序號以及一個二級總線接口序號。主干總線是那個離CPU最近的PCI總線而二級總線是離它稍遠的PCI總線。任何PCI-PCI橋接器還包含一個從屬總線序號,這是所有二級總線接口所橋接的PCI總線中序號最大的那個。或者說這個從屬總線序號是PCI-PCI橋接器向下連接中PCI總線的最大序號。當PCI-PCI橋接器看到類型1 PCI配置循環時它將進行如下操作: 


如果此總線序號不在橋接器的二級總線序號和從屬總線序號之間則忽略掉它。 

如果此總線序號與橋接器的二級總線序號相同則將其轉換成類型0 配置命令。 

如果此總線序號位于橋接器的二級總線序號與從屬總線序號之間則將它不作改變的傳遞到二級總線接口中。 
所以如果想尋址PCI-PCI配置例4中總線3上的設備1,我們繼續從CPU中產生一個類型1 配置命令。橋接器1將其傳遞給總線1。橋接器2雖然忽略它但會將其轉換成一個類型0 配置命令并送到總線3上,在那里設備1將作出相應反應。 

PCI配置中總線序號由操作系統來分配。但是序號分配策略必須遵循對系統中所有PCI-PCI橋接器都正確的描敘: 

“位于PCI-PCI橋接器后所有的PCI總線必須位于二級總線序號和從屬總線序號之間”。 

如果這個規則被打破,則PCI-PCI橋接器將不能正確的傳遞與轉換類型1 PCI配置循環,同時系統將找不到或者不能正確地初始化系統中的PCI設備。為了滿足這個序號分配策略,Linux以特殊的順序配置這些特殊的設備。PCI-PCI總線序號分配一節詳細描敘了Linux的PCI橋接器與總線序號分配策略。 


6.6  Linux PCI 初始化過程
Linux中的PCI初始化代碼邏輯上可分成三個部分: 


PCI 設備驅動 
這個偽設備驅動程序將從總線0開始搜索PCI系統并定位系統中所有的PCI設備與橋接器。它將建立起一個描敘系統拓撲結構的數據結構鏈表。另外它還為所有的橋接器進行編號。 
  
PCI BIOS 
這個軟件層提供了在bib-pci-bios定義中描敘的服務。即使Alpha AXP沒有BIOS服務,Linux核心也將為它提供具有相同功能的代碼。 
  
PCI Fixup 
系統相關補丁代碼將整理PCI初始化最后階段的一些系統相關事物。 

6.6.1  Linux 核心PCI數據結構



圖6.5 Linux核心PCI數據結構 


Linux核心初始化PCI系統時同時也建立了反應系統中真實PCI拓撲的數據結構。 圖6.5顯示了圖6.1所標識的PCI示例系統中數據結構間關系。每個PCI設備(包括PCI-PCI橋接器)用一個pci_dev數據結構來描敘。每個PCI總線用一個pci_bus數據結構來描敘。這樣系統中形成了一個PCI總線樹,每棵樹上由一些子PCI設備組成。由于PCI總線僅能通過PCI-PCI橋接器(除了主干PCI總線0)存取,所以pci_bus結構中包含一個指向PCI-PCI橋接器的指針。這個PCI設備是PCI總線的父PCI總線的子設備。 

在圖6.5中沒有顯示出來的是一個指向系統中所有PCI設備的指針,pci_devices。系統中所有的PCI設備將其各自的pci_dev數據結構加入此隊列中。這個隊列被Linux核心用來迅速查找系統中所有的PCI設備。 


6.6.2  PCI設備驅動
PCI設備驅動根本不是真正的設備驅動,它僅是在系統初始化時由操作系統調用的一些函數。PCI初始化代碼將掃描系統中所有的PCI總線以找到系統中所有的PCI設備(包括PCI-PCI橋接器)。 

它通過PCI BIOS代碼來檢查當前PCI總線的每個插槽是否已被占用。如果被占用則它建立一個pci_dev數據結構來描敘此設備并將其連接到已知PCI設備鏈表中(由pci_devices指向)。 

首先PCI初始化代碼掃描PCI總線0。它將試圖讀取對每個PCI槽中可能的PCI設備廠商標志與設備標志域。當發現槽被占用后將建立一個pci_dev結構來描敘此設備。所有這些PCI初始化代碼建立的pci_dev結構(包括PCI-PCI橋接器)將被連接到一個單向鏈表pci_devices中。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美片网站yy| 91九色02白丝porn| 午夜不卡av在线| 一区二区三区在线观看国产| 国产精品毛片a∨一区二区三区 | 激情综合亚洲精品| 日韩精品亚洲专区| 久久99精品久久久| 狠狠色丁香久久婷婷综| 精品综合免费视频观看| 国产一区二区三区av电影| 激情综合色综合久久综合| 国产精品综合一区二区| 国产传媒一区在线| 91麻豆精东视频| 欧美亚洲高清一区| 日韩无一区二区| 久久久www成人免费无遮挡大片| 国产亚洲精品超碰| 亚洲日本电影在线| 五月婷婷久久综合| 国产麻豆视频一区二区| 成人av资源下载| 欧美大度的电影原声| 精品理论电影在线| 国产精品久久久久久久浪潮网站| 国产精品理论在线观看| 又紧又大又爽精品一区二区| 视频在线观看91| 久久99深爱久久99精品| 欧美午夜不卡视频| 欧美系列亚洲系列| 久久众筹精品私拍模特| 中文字幕亚洲一区二区va在线| 一区二区三区精品视频在线| 免费人成在线不卡| 91美女在线视频| 欧美成人一级视频| 一区二区视频在线| 国产精品亚洲专一区二区三区| 91蝌蚪porny| 日韩欧美一级精品久久| 亚洲视频免费在线观看| 久草这里只有精品视频| 色视频成人在线观看免| 欧美精品一区二区三区很污很色的| 国产精品成人在线观看| 久久激情综合网| 一本大道久久a久久精二百| 精品国免费一区二区三区| 亚洲另类在线视频| 国产精品亚洲一区二区三区妖精| 欧美日韩日本视频| 亚洲婷婷在线视频| 国产精品性做久久久久久| 91精品国产综合久久久久久久| 国产精品另类一区| 国产一区二区日韩精品| 91精品婷婷国产综合久久性色 | 久久午夜羞羞影院免费观看| 亚洲一线二线三线视频| 成人深夜在线观看| 久久久精品国产免大香伊| 日韩av在线免费观看不卡| 欧美中文字幕一区二区三区| 中文字幕国产一区| 国产精品一区二区三区四区| 欧美一二三四在线| 亚洲 欧美综合在线网络| 色悠悠久久综合| 亚洲人成在线观看一区二区| 99在线精品观看| 国产精品天天摸av网| 国产成人99久久亚洲综合精品| 久久免费的精品国产v∧| 丝袜美腿亚洲综合| 8x8x8国产精品| 亚洲一区二区免费视频| 欧美自拍偷拍一区| 一区二区三区在线播放| 欧美亚洲国产bt| 亚洲电影激情视频网站| 欧美日韩一区二区电影| 丝袜美腿亚洲综合| 欧美变态tickle挠乳网站| 免费看欧美美女黄的网站| 日韩免费一区二区| 国产很黄免费观看久久| 日本一区二区综合亚洲| 成人在线综合网站| 亚洲精品高清在线观看| 欧美日韩成人在线| 免费观看日韩av| 久久精品一区四区| 91亚洲国产成人精品一区二三| 亚洲精品一二三区| 欧美高清视频www夜色资源网| 蜜臀久久久99精品久久久久久| 精品黑人一区二区三区久久| 国产成人精品免费视频网站| 亚洲欧美综合色| 欧美日韩激情在线| 国产精品综合一区二区三区| 综合久久一区二区三区| 欧美丰满一区二区免费视频| 精品一区二区三区在线观看| 国产精品国产三级国产a| 欧美午夜不卡视频| 精品一区免费av| 最新中文字幕一区二区三区| 欧美日韩国产一级| 国产成人精品亚洲日本在线桃色| 亚洲精品成人精品456| 日韩欧美一区在线观看| 99天天综合性| 精品一区二区三区免费| 亚洲精品中文在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 白白色亚洲国产精品| 蜜臀av在线播放一区二区三区| 中文字幕精品三区| 欧美一级电影网站| 色婷婷亚洲综合| 国产精品一区二区男女羞羞无遮挡| 一个色在线综合| 中文字幕av不卡| 日韩视频在线永久播放| 91久久精品日日躁夜夜躁欧美| 韩国三级电影一区二区| 午夜婷婷国产麻豆精品| 国产精品天天看| 久久嫩草精品久久久精品| 在线播放中文一区| 91亚洲精品久久久蜜桃网站 | 国产一区二区在线电影| 亚洲国产精品久久久久秋霞影院 | 欧美色图免费看| 成人av一区二区三区| 黄网站免费久久| 美女尤物国产一区| 五月天一区二区三区| 一区二区三区四区在线播放 | 亚洲一区二区三区三| 国产精品午夜在线| 久久久久国产精品厨房| 亚洲精品一区二区三区福利| 555www色欧美视频| 欧美日韩激情一区二区三区| 一道本成人在线| 色综合久久久久综合体桃花网| 国产精品中文欧美| 国产馆精品极品| 国产v综合v亚洲欧| 国产成人av电影在线播放| 国产精品一线二线三线| 国产精品主播直播| 国产一区 二区| 国产成人精品免费在线| 成人看片黄a免费看在线| 成人h动漫精品一区二区 | 亚洲少妇中出一区| 国产精品国产三级国产aⅴ中文| 国产日韩精品一区二区三区| 国产情人综合久久777777| 国产日韩精品一区| 亚洲三级小视频| 亚洲国产va精品久久久不卡综合| 婷婷综合另类小说色区| 日韩av午夜在线观看| 麻豆国产欧美一区二区三区| 国产综合色在线| 成人免费av在线| 色欧美88888久久久久久影院| 欧美亚洲动漫另类| 日韩午夜中文字幕| 国产女同互慰高潮91漫画| 国产精品国产三级国产a| 一区二区三区欧美亚洲| 天天做天天摸天天爽国产一区 | 亚洲精品在线观看网站| 国产区在线观看成人精品| 亚洲精品久久久蜜桃| 日日摸夜夜添夜夜添亚洲女人| 精品中文字幕一区二区小辣椒| 成人精品在线视频观看| 欧美亚洲免费在线一区| 久久综合色婷婷| 亚洲免费在线播放| 麻豆高清免费国产一区| 波多野结衣精品在线| 欧美精品一卡二卡| 国产日韩精品一区二区浪潮av | 蜜桃av噜噜一区| 成人sese在线| 4438x亚洲最大成人网| 18欧美亚洲精品| 五月天丁香久久| 成人综合激情网| 日韩精品一区二区三区中文不卡| 中文字幕乱码日本亚洲一区二区|