PCI配置空間和存儲空間

配置空間是每一個PCI設備都要提供的一個寄存器,位於硬件設備中,它的作用是:

1.         告訴系統本硬件的名稱、生產廠商、設備類型、版本、是否支持背靠背傳輸等信息

2.         告訴系統本硬件需要的IO、中斷、MEMORY等資源的數量;

3.         接受系統賦予以上資源的基地址;

在配置空間中有些數據是可以改變的,比如設備的IO基地址,而有些是不能隨便修改的,比如硬件的名稱和版本號。

 

PCI有三個相互獨立的物理地址空間:設備存儲器地址空間、I/O地址空間和配置空間。配置空間是PCI所特有的一個物理空間。由於PCI支持設備即插即用,所以PCI設備不佔用固定的內存地址空間或I/O地址空間,而是由操作系統決定其映射的基址。

 

CPUPCI設備的配置,是爲了完成PCI 設備存儲空間的地址分配、PCI設備功能設置等工作。配置操作時,CPU通過北橋芯片實現設備片選。

配置寄存器組內保留了對PCI設備的基本特性進行詳盡說明的可讀信息,CPU讀取這些信息後,就可以爲PCI設備設定符合需要的配置內容,從而實現自動配置。這些可讀信息包括:

Vendor ID :設備供應商編號,由PCI SIG國際組織分配。

Device ID :特定設備編號,由設備供應商分配。

Revision ID :設備的特定版本號,由設備供應商分配。

Class Code :設備的功能類別編號。

Header Type :指示Header 中從地址10H3FH區域的內容格式,同時指示該設備是否爲多功能設備。

 

PCI存儲空間不同於PCI配置空間。PCI存儲空間可以存放PCI設備的特殊功能寄存器,也可以用做數據緩衝和存儲區域。PCI存儲空間分爲MEMORY空間和I/O空間兩類,它們獨立尋址,並使用不同的總線操作命令進行訪問。MEMORY空間適用於設備功能寄存器較多或數據流量較大的場合,例如網口芯片、PCI-PCI橋等。I/O空間適用於設備功能寄存器較少或數據流量較小的場合,例如串口芯片、LED控制寄存器等。但在地址空間比較充裕的條件下,也有把範圍較小的存儲區放入MEMORY空間的做法。操作響應者根據操作發起者發出的總線操作命令類型,來識別當前操作是指向MEMORY空間還是I/O空間。

配置寄存器組(位於配置空間中)中會有一個或多個基址寄存器BARBase Address Register),用於保存指向PCI存儲空間的指針,同時BAR中可讀不可寫的位數決定了該存儲空間的大小。BAR的最低位是隻讀位,它定義了BAR的空間屬性。當BAR指向PCIMEMORY存儲空間時,該位回讀爲0;當BAR指向PCII/O存儲空間時,該位回讀爲1。由於BAR的這一屬性,使得PCI設備佔用的存儲區域是放在MEMORY空間,還是放在I/O空間,完全由設備製造商決定,用戶無法修改。

單個設備/功能PCIMEMROY空間的容量可選取16byte~2Gbyte。但爲了減少參與地址譯碼的地址線數量,PCI規範建議MEMORY空間分配不小於4Kbyte

單個設備/功能PCII/O空間的容量可選取4byte~256byte ,不允許超過256byte

訪問PCI存儲空間時,都使用“BAR指針+地址偏移量作爲存儲空間的訪問地址。因此,爲每個PCI設備/功能分配合理的地址空間,保證設備/功能間的存儲空間不發生重疊,是PCI設備配置操作的一項重要內容。

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