- Linux設(shè)備驅(qū)動開發(fā)詳解:基于最新的Linux4.0內(nèi)核
- 宋寶華
- 1164字
- 2018-12-31 20:25:21
2.3.6 PCI和PCI-E
PCI(外圍部件互連)是由Intel于1991年推出的一種局部總線,作為一種通用的總線接口標(biāo)準(zhǔn),它在目前的計(jì)算機(jī)系統(tǒng)中得到了非常廣泛應(yīng)用。PCI總線具有如下特點(diǎn)。
·數(shù)據(jù)總線為32位,可擴(kuò)充到64位。
·可進(jìn)行突發(fā)(Burst)模式傳輸。突發(fā)方式傳輸是指取得總線控制權(quán)后連續(xù)進(jìn)行多個(gè)數(shù)據(jù)的傳輸。突發(fā)傳輸時(shí),只需要給出目的地的首地址,訪問第1個(gè)數(shù)據(jù)后,第2~n個(gè)數(shù)據(jù)會在首地址的基礎(chǔ)上按一定規(guī)則自動尋址和傳輸。與突發(fā)方式對應(yīng)的是單周期方式,它在1個(gè)總線周期只傳送1個(gè)數(shù)據(jù)。
·總線操作與處理器—存儲器子系統(tǒng)操作并行。
·采用中央集中式總線仲裁。
·支持全自動配置、資源分配,PCI卡內(nèi)有設(shè)備信息寄存器組為系統(tǒng)提供卡的信息,可實(shí)現(xiàn)即插即用。
·PCI總線規(guī)范獨(dú)立于微處理器,通用性好。
·PCI設(shè)備可以完全作為主控設(shè)備控制總線。
圖2.16給出了一個(gè)典型的基于PCI總線的計(jì)算機(jī)系統(tǒng)邏輯示意圖,系統(tǒng)的各個(gè)部分通過PCI總線和PCI-PCI橋連接在一起。CPU和RAM通過PCI橋連接到PCI總線0(即主PCI總線),而具有PCI接口的顯卡則可以直接連接到主PCI總線上。PCI-PCI橋是一個(gè)特殊的PCI設(shè)備,它負(fù)責(zé)將PCI總線0和PCI總線1(即從PCI主線)連接在一起,通常PCI總線1稱為PCI-PCI橋的下游(Downstream),而PCI總線0則稱為PCI-PCI橋的上游(Upstream)。為了兼容舊的ISA總線標(biāo)準(zhǔn),PCI總線還可以通過PCI-ISA橋來連接ISA總線,從而支持以前的ISA設(shè)備。

圖2.16 基于PCI總線的計(jì)算機(jī)系統(tǒng)邏輯示意圖
當(dāng)PCI卡剛加電時(shí),卡上配置空間即可以被訪問。PCI配置空間保存著該卡工作時(shí)所需的所有信息,如廠家、卡功能、資源要求、處理能力、功能模塊數(shù)量、主控卡能力等。通過對這個(gè)空間信息的讀取與編程,可完成對PCI卡的配置。如圖2.17所示,PCI配置空間共為256字節(jié),主要包括如下信息。
·制造商標(biāo)識(Vendor ID):由PCI組織分配給廠家。
·設(shè)備標(biāo)識(Device ID):按產(chǎn)品分類給本卡的編號。
·分類碼(Class Code):本卡功能的分類碼,如圖卡、顯示卡、解壓卡等。
·申請存儲器空間:PCI卡內(nèi)有存儲器或以存儲器編址的寄存器和I/O空間,為使驅(qū)動程序和應(yīng)用程序能訪問它們,需申請CPU的一段存儲區(qū)域以進(jìn)行定位。配置空間的基地址寄存器用于此目的。
·申請I/O空間:配置空間中的基地址寄存器用來進(jìn)行系統(tǒng)I/O空間的申請。
·中斷資源申請:配置空間中的中斷引腳和中斷線用來向系統(tǒng)申請中斷資源。偏移3Dh處為中斷引腳寄存器,其值表明PCI設(shè)備使用了哪一個(gè)中斷引腳,對應(yīng)關(guān)系為1—INTA#、2—INTB#、3—INTC#、4—INTD#。

圖2.17 PCI配置空間
PCI-E(PCI Express)是Intel公司提出的新一代的總線接口,PCI Express采用了目前業(yè)內(nèi)流行的點(diǎn)對點(diǎn)串行連接,比起PCI以及更早的計(jì)算機(jī)總線的共享并行架構(gòu),每個(gè)設(shè)備都有自己的專用連接,采用串行方式傳輸數(shù)據(jù),不需要向整個(gè)總線請求帶寬,并可以把數(shù)據(jù)傳輸率提高到一個(gè)很高的頻率,達(dá)到PCI所不能提供的高帶寬。
PCI Express在軟件層面上兼容目前的PCI技術(shù)和設(shè)備,支持PCI設(shè)備和內(nèi)存模組的初始化,也就是說無須推倒目前的驅(qū)動程序、操作系統(tǒng),就可以支持PCI Express設(shè)備。
- Citrix XenApp Performance Essentials
- 每天5分鐘玩轉(zhuǎn)Kubernetes
- Hands-On DevOps with Vagrant
- Ganglia系統(tǒng)監(jiān)控
- 玩到極致 iPhone 4S完全攻略
- Learning Bootstrap
- 竹林蹊徑:深入淺出windows驅(qū)動開發(fā)
- Dreamweaver CS5.5 Mobile and Web Development with HTML5,CSS3,and jQuery
- 細(xì)說Linux基礎(chǔ)知識
- AutoCAD 2014中文版從入門到精通
- Linux設(shè)備驅(qū)動開發(fā)
- Building Telephony Systems With Asterisk
- 鴻蒙操作系統(tǒng)設(shè)計(jì)原理與架構(gòu)
- Ubuntu Linux操作系統(tǒng)實(shí)用教程
- Docker容器技術(shù)與應(yīng)用