pci(一)說明

pci總線,如果不說人話的話,那是相當複雜的, 難以理解的。

說起pci總線要從總線開始:
微機原理上這麼說:計算機系統是由許多具有獨立功能的模塊互相連接組成的。 同時,隨着計算機的不斷髮展和廣泛應用,各廠商處理向用戶提供整套系統外, 還設計和提供各種功能的插件模塊, 讓用戶根據需要構成應用系統活着擴充原有的系統。這些模塊間需要互相通信,需要高速,可靠的信息交換通道,這就產生了總線的概念。

其實這個說法並沒有抓出總線的本質,爲什麼叫總線呢? 重點在總的位置, 想象我們編程的時候遇到多對多的情況,耦合是不是非常嚴重, 通常我們會拆成兩個1對多的系統, 從而來解耦合, 總線也是有這個思想的(設備面向總線)。

總結下總線的作用就是量點
1 減少設備互聯的成本
2 提供設備接入的標準接口

pci也是總線的一種,所以pci具備這樣的能力。

pci相對於isa, eisa(兩種古老的總線)的有點如下:
1 速度快
2 自動配置,即插即用
3 與硬件無關
4 容易擴展

在這裏插入圖片描述
我們看這張圖來說明pci的種種有點

pci總線可以通過pci橋(一種特殊的pci設備)橋接其他總線,易擴展
pci通過pci橋級連的方式可以把慢速設備和快速設備連接到不同的總線上來提高性能
另外pci總線可以配置設備的地址空間,靈活易擴展。

對於系統編程來說最重要的就是pci設備驅動和pci的地址空間配置。所以這裏說明下系統如何配置pci地址空間

1 首先計算機會在物理地址空間中預留pci的區域,用於分配給pci設備。

2 每個pci設備都有配置寄存器,用於保存系統分配給pci設備的地址空間

3 操作系統活着bios會分配地址空間給pci設備,寫入pci設備配置寄存器(bar)

操作系統如何給設備分配地址空間?

操作系統通過從根pci橋向下遍歷pci總線來分配地址空間。

具體參考文章淺談Linux PCI設備驅動

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章