8. pci裝置的配置空間
所有除主橋之外的裝置功能,必須實現配置位址空間,目前有三種型別的首部格式:首部型別0,用於全部除pci橋之外的裝置;首部型別1,用於pci-pci橋;首部型別2,用於card bus橋。
每個pci裝置的配置空間大小為256位元組,用來存放pci配置檔案,其中檔案頭標識區佔64位元組,下圖為type0型別首部。
1).廠家id(vender id):用來區別每個pci裝置生產商,由pci-sig組織分配,0xffff表示無效。
2).裝置id:用來標識裝置型別。
3).命令暫存器:為發出pci和響應pci匯流排命令提供粗略控制。
4).狀態暫存器:用於記錄pci匯流排的事件狀態資訊。
5).版本標識:標識pci裝置的版本。
6).分類**:用來表示pci裝置的功能分類和特定的程式設計介面,為唯讀儲存器。
7).cache行大小:指定系統中快取記憶體cache一行的長度,以dword為單位,可讀寫。
8).持有定時器:指定pci匯流排主裝置的延時計時值,以pci匯流排的時鐘為單位。
9).配置型別:表示頭標區型別,以及是否為多功能裝置。
10).自測能力bist:built-in self test,支援自測的pci裝置為1,不支援的為0。
11).基位址0~5:實現pci裝置所有使用位址空間的再定位。
13).中斷線:報告pci裝置與系統中斷連線情況。
14).中斷引腳:表示pci裝置使用了哪些中斷引腳。
9.pci匯流排小案例
在測試pci匯流排的trdy訊號時,發現該訊號從低電平拉公升到高電平時太緩慢,如下圖所示。
問題分析:
trdy是s/t/s訊號,在前面已經講過了,s/t/s訊號有如下特點:
1).在某乙個時刻只能由乙個裝置驅動;
2).在釋放之前必須將該訊號驅動到高電平,並且至少保持乙個時鐘週期;
3).其它裝置必須等到該訊號釋放至少乙個時鐘週期後才能重新驅動它。
4).該訊號必須進行外部上拉處理。
經過分析該pci匯流排的邏輯**得知,該邏輯在處理s/t/s 訊號時沒有完全按照規範要去來做,在將trdy訊號置為低電平有效後直接釋放到高阻態,沒有將它驅動到高電平後再釋放,因此,trdy在低電平位置被釋放到高阻態後,完全依靠外部的上拉電阻將其拉到高電平位置,由於外部上拉比較弱,導致我們上面見到的trdy電平上公升緩慢現象。修改邏輯**後,問題消失。
PCI匯流排操作四 PCI配置週期
pci匯流排操作 之 pci配置週期 pci匯流排協議中定義了256位元組的配置空間,用來驅動和配置pci裝置。配置空間的暫存器在匯流排第六章有描述,這裡主要討論訪問pci配置空間的匯流排命令的具體操作。在pci匯流排的拓撲結構中,每個pci裝置都有乙個固定唯一的位址,我們稱之為config add...
PCI匯流排學習(二) PCI匯流排仲裁
幻燈片 9 在一定時間內,可能有多個bus master請求使用匯流排傳輸資料,每個請求匯流排的master都會assert它的req 訊號,來告訴仲裁器他要申請使用匯流排,仲裁器一般整合於晶元組中。幻燈片 10 如果仲裁器是可程式設計的,啟動配置軟體可以通過讀取max lat配置暫存器來決定每個b...
PCI匯流排(二)
pci網絡卡驅動程式分析 針對 gnic ii 的千兆乙太網卡,源程式檔案 drivers net hamachi.c 1 初始化 static int init hamachi init void 進入bus add driver int bus add driver struct device ...