亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

LSPCI具體解釋分析

系統 1919 0

一、PCI簡單介紹
???? PCI是一種外設總線規范。我們先來看一下什么是總線:總線是一種傳輸信號的路徑或信道。典型情況是,總線是連接于一個或多個導體的電氣連線,總 線上連接的全部設備可在同一時間收到全部的傳輸內容。總線由電氣接口和編程接口組成。本文討論Linux 下的設備驅動,所以,重點關注編程接口。
???? PCI是Peripheral Component Interconnect(外圍設備互聯)的簡稱,是普遍使用在桌面及更大型的計算機上的外 設總線。PCI架構被設計為ISA標準的替代品,它有三個主要目標:獲得在計算機和外設之間數據傳輸時更好的性能;盡可能的平臺無關;簡化往系統中加入和 刪除外設的工作。

二、PCI尋址
???? 從如今開始,我想盡可能通過一些實際的樣例來說明問題,而降低理論方面的問題的描寫敘述,由于,相關的理論的東西,能夠在其他地方找到。
???? 我們先來看一個樣例,我的電腦裝有1G的RAM,1G以后的物理內存地址空間都是外部設備IO在系統內存地址空間上的映射。 /proc/iomem描寫敘述了系統中全部的設備I/O在內存地址空間上的映射。我們來看地址從1G開始的第一個設備在/proc/iomem中是怎樣描寫敘述 的:
???????????? 40000000-400003ff : 0000:00:1f.1
???? 這是一個PCI設備,40000000-400003ff是它所映射的內存地址空間,占領了內存地址空間的1024 bytes的位置,而 0000:00:1f.1則是一個PCI外設的地址,它以冒號和逗號分隔為4個部分,第一個16位表示域,第二個8位表示一個總線編號,第三個5位表示一 個設備號,最后是3位,表示功能號。

???? 由于PCI規范同意單個系統擁有高達256個總線,所以總線編號是8位。但對于大型系統而言,這是不夠的,所以,引入了域的概念,每一個 PCI域能夠擁有最多256個總線,每一個總線上可支持32個設備,所以設備號是5位,而每一個設備上最多可有8種功能,所以功能號是3位。由此,我們能夠得 出上述的PCI設備的地址是0號域0號總線上的31號設備上的1號功能。

???? 那上述的這個PCI設備究竟是什么呢?以下是我的電腦上的lspci命令的輸出:
???? 00:00.0 Host bridge: Intel Corporation 82845 845 (Brookdale) Chipset Host Bridge (rev 04)
???? 00:01.0 PCI bridge: Intel Corporation 82845 845 (Brookdale) Chipset AGP Bridge(rev 04)
???? 00:1d.0 USB Controller: Intel Corporation 82801CA/CAM USB (Hub #1) (rev 02)
???? 00:1d.1 USB Controller: Intel Corporation 82801CA/CAM USB (Hub #2) (rev 02)
???? 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 42)
???? 00:1f.0 ISA bridge: Intel Corporation 82801CAM ISA Bridge (LPC) (rev 02)
???? 00:1f.1 IDE interface: Intel Corporation 82801CAM IDE U100 (rev 02)
???? 00:1f.3 SMBus: Intel Corporation 82801CA/CAM SMBus Controller (rev 02)
???? 00:1f.5 Multimedia audio controller:Intel Corporation 82801CA/CAM AC'97 Audio Controller (rev 02)
???? 00:1f.6 Modem: Intel Corporation 82801CA/CAM AC'97 Modem Controller (rev 02)
???? 01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 420 Go](rev a3)
???? 02:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller(rev 46)
???? 02:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+(rev 10)
???? 02:04.0 CardBus bridge: O2 Micro, Inc. OZ6933 Cardbus Controller (rev 01)
???? 02:04.1 CardBus bridge: O2 Micro, Inc. OZ6933 Cardbus Controller (rev 01)
???? lspci沒有標明域,但對于一臺PC而言,一般僅僅有一個域,即0號域。通過這個輸出我們能夠看到它是一個IDE interface。由上述的 輸出能夠看到,我的電腦上共同擁有3個PCI總線(0號,1號,2號)。在單個系統上,插入多個總線是通過橋(bridge)來完畢的,橋是一種用來連接總線 的特殊PCI外設。所以,PCI系統的總體布局組織為樹型,我們能夠通過上面的lspci輸出,來畫出我的電腦上的PCI系統的樹型結構:
00:00.0(主橋)--00:01.0(PCI橋)-----01:00:0(nVidia顯卡)
?????????????????? |
?????????????????? |---00:1d(USB控制器)--00:1d:0(USB1號控制器)
?????????????????? |??????????????????? |
?????????????????? |??????????????????? |--00:1d:1(USB2號控制器)??????????????????? |
?????????????????? |-00:1e:0(PCI橋)--02:00.0(IEEE1394)
?????????????????? |??????????????? |
?????????????????? |??????????????? |-02:01.0(8139網卡)
?????????????????? |??????????????? |
?????????????????? |??????????????? |-02:04(CardBus橋)-02:04.0(橋1)
?????????????????? |?????????????????????????????????? |
?????????????????? |?????????????????????????????????? |--02:04.1(橋2)
?????????????????? |
?????????????????? |-00:1f(多功能板卡)-00:1f:0(ISA橋)
??????????????????????????????????????? |
??????????????????????????????????????? |--00:1f:1(IDE接口)
??????????????????????????????????????? |
??????????????????????????????????????? |--00:1f:3(SMBus)
??????????????????????????????????????? |
??????????????????????????????????????? |--00:1f:5(多媒體聲音控制器)
??????????????????????????????????????? |
??????????????????????????????????????? |--00:1f:6(調制解調器)
???? 由上圖能夠得出,我的電腦上共同擁有8個PCI設備,當中0號總線上(主橋)上連有4個,1號總線上連有1個,2號總線上連有3個。00:1f是一個連有5個功能的多功能板卡。
???? 每一個PCI設備都有它映射的內存地址空間和它的I/O區域,這點是比較easy理解的。除此之外,PCI設備還有它的配置寄存器。有了配置寄存器, PCI的驅動程序就不須要探測就能訪問設備。配置寄存器的布局是標準化的,配置空間的4個字節含有一個獨一無二的功能ID,因此,驅動程序可通過查詢外設 的特定 ID來識別其設備。所以,PCI接口標準在ISA之上的主要創新在于配置地址空間。
前文已講過,PCI驅動程序不須要探測就能訪問設備,而這得益于配置地址空間。在系統引導階段,PCI硬件設備保持未激活狀態,但每一個PCI主板均配備有能夠處理PCI的固件,固件通過讀寫PCI控制器中的寄存器,提供了對設備配置地址空間的訪問。
???? 配置地址空間的前64字節是標準化的,它提供了廠商號,設備號,版本等信息,唯一標識一個PCI設備。同一時候,它也提供了最多可多達6個的I/O 地址區域,每一個區域能夠是內存也能夠是I/O地址。這幾個I/O地址區域是驅動程序找到設備映射到內存和I/O空間的具體位置的唯一途徑。有了這兩點, PCI驅動程序就完畢了相當于探測的功能。關于這64個字節的配置空間的具體情況,可參閱《Linux設備驅動程序第三版》P306,不再詳述。
???? 以下,我們來看一下8139too網卡設備的配置空間的具體情況。在2.6內核的系統中,能夠在文件夾/sys/bus/pci/drivers/ 下看到非常多以PCI設備名命名的文件夾,但不是說這些設備都存在于你的系統中。我們進入8139too文件夾,當中有一個以它的設備地址0000:02: 01.0命名的文件夾。在這個文件夾下能夠找到該網卡設備相關的非常多信息。當中resource記錄了它的6個I/O地址區域。內容例如以下:
???????? 0x0000000000003400 0x00000000000034ff 0x0000000000000101
???????? 0x00000000e0000800 0x00000000e00008ff 0x0000000000000200
???????? 0x0000000000000000 0x0000000000000000 0x0000000000000000
???????? 0x0000000000000000 0x0000000000000000 0x0000000000000000
???????? 0x0000000000000000 0x0000000000000000 0x0000000000000000
???????? 0x0000000000000000 0x0000000000000000 0x0000000000000000
???????? 0x0000000000000000 0x0000000000000000 0x0000000000000000
???? 由該文件能夠看出,8139too設備使用了兩個I/O地址區域,第一個是它映射的I/O端口范圍,第二個是它映射的內存地址空間。關于這兩個值能夠在/proc/iomem和/proc/ioport中得到驗證。

-[0000:00]-+-00.0
?????????? +-02.0
?????????? +-1d.0
?????????? +-1d.1
?????????? +-1d.2
?????????? +-1d.7
?????????? +-1e.0-[0000:01]--+-02.0
?????????? |???????????????? /-05.0
?????????? +-1f.0
?????????? +-1f.1
?????????? +-1f.3
?????????? /-1f.5
00:00.0 Host bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface (rev 03)
00:02.0 VGA compatible controller: Intel Corporation 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 82)
00:1f.0 ISA bridge: Intel Corporation 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge (rev 02)

(LPC Hub 控制器 1 )
00:1f.1 IDE interface: Intel Corporation 82801DB (ICH4) IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 02)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 02)
01:02.0 Communication controller: Conexant HSF 56k HSFi Modem (rev 01)
01:05.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)

LSPCI具體解釋分析


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产视频精品视频 | 天天爱夜夜操 | 精品久久国产 | 日本不卡一 | 夜福利视频 | 久久亚洲这里只有精品18 | 精品欧美在线精品 | 西西做人爱免费视频 | 搡女人视频免费 | 久久久久久久久久福利 | 久久福利在线 | 久久精品久 | 久久国内精品自在自线400部o | 在线播放亚洲精品富二代91 | 日本人一级毛片视频 | 久久九九有精品国产56 | 久久99综合国产精品亚洲首页 | 亚洲图片一区二区 | 国产免费播放一区二区 | 国产福利久久 | 欧美一级级a在线观看 | 精品久久影院 | 国内揄拍国内精品久久 | 五月综合激情久久婷婷 | 男人资源在线观看 | 四虎国产免费 | 中文国产成人精品少久久 | 午夜亚洲 | 四虎网站1515hh四虎免费 | 国产一级特黄特色aa毛片 | 99热这里只有精品一区二 | 立即播放免费毛片一级 | 香蕉成人在线 | 久久精品天天中文字幕人 | 中文字幕亚洲区 | 国产91一区二这在线播放 | 四虎国产成人永久精品免费 | 看一级特黄a大一片 | 狠狠色丁婷婷综合久久 | 精品日产一区二区 | 婷婷综合网站 |