2020-09-30 PCI
ppt題目分析
1.基址暫存器
相關知識
基址暫存器(Base Address Register),有兩種格式儲存。
第一種是I/O空間指標,第二種是儲存空間指標。
例題1-1
基址暫存器的值=FFF00000H,表示什麼含義?
將16進位制數展開為2進位制數,得到:
1111 1111 1111 0000 0000 0000 0000 0000B
與上圖給出的格式進行比對:
位數 | 意義 |
---|---|
位0=0B | 地址空間對映 |
位【2:1】=00B | 使能32位儲存器對映 |
位3=0B | 說明不是預取儲存器 |
位【31:4】的第一個是1的位置是位20 | 說明對映的儲存空間是2^20 |
例題1-2
基址暫存器的值=FFFFFF01H,表示什麼含義?
將16進位制數展開為2進位制數,得到:
1111 1111 1111 1111 1111 1111 0000 0001B
與上圖給出的格式進行比對:
位數 | 意義 |
---|---|
位0=1B | I/O地址空間對映 |
位【31:2】的第一個是1的位置是位8 | 說明對映的儲存空間是2^8 |
2.獲得配置資訊(配置空間訪問)的方法
需要用到這個方法的情景
- 讀取裝置的配置暫存器(配置讀操作匯流排週期)
- 確定裝置所需地址空間
- 分配中斷及主裝置對匯流排的訪問要求
- 等等
基礎知識
x86系列不能對配置空間暫存器直接進行讀/寫
配置機構實現方法:用兩個特定的32位I/O埠對應兩個配置暫存器
配置機構:將處理器發出的I/O訪問轉換為配置訪問的轉換機構
配置**暫存器 | I/O地址 |
---|---|
地址埠 | 0CF8 H~0CFB H |
資料埠 | 0CFC H~0CFF H |
配置操作的實現步驟
- 訪問的匯流排號、裝置號、功能號、雙字地址寫到配置地址埠暫存器
- 執行一次對配置資料埠暫存器的I/O訪問
配置地址資訊格式
例題2-1
讀PCI匯流排的1號擴充套件槽(裝置號)2號功能裝置的廠商標誌(暫存器號)
步驟如下:
MOV DX, 0CF8H//將地址埠暫存器的I/O地址放到DX中
MOV EAX,80000A00H//裝置資訊放到EAX中
程式碼中16進位制數的解釋:
80000A00H
=1000 0000 0000 0000 0000 0001 0000 0000B
1 | 0000000 | 00000000 | 00001 | 010 | 000000 | 00B |
---|---|---|---|---|---|---|
使能 | 保留(置零) | 匯流排號無定義(置零) | 擴充套件槽號=裝置號=1 | 功能號=2 | 暫存器號=指示廠商標誌=0 | 00 |
OUT DX,EAX//EAX內容寫入DX存放的埠裡
//(此時裝置資訊寫入DX存放的埠中
//也就是放在了之前提到的地址埠暫存器的I/O地址裡)
//配置資料埠暫存器訪問
MOV DX,0CFCH
//(資料埠暫存器的I/O地址放到了DX中)
IN EAX,DX
//將DX資訊讀入EAX中
//把資料埠暫存器的I/O地址放到EAX中
一個問題
為什麼程式碼最後兩句話就算做一次對所謂的“配置資料埠暫存器”的I/O訪問?
例題2-2
給匯流排號為7的PCI匯流排的4號擴充套件槽 0號功能裝置的基址暫存器4分配8個I/O地址空間。
MOV DX, 0CF8H//OCF8H放到DX裡
MOV EAX, 80072010H//裝置暫存器資訊
10000000 | 00000111 | 00100 | 000 | 000100 | 00 |
---|---|---|---|---|---|
使能 | 匯流排號7 | 4號 | 0功能 | 暫存器號 | 分配IO地址空間 |
OUT DX, EAX//放到0CF8H裡
MOV DX, 0CFCH//資料埠暫存器的I/O地址
MOV EAX, 0FFFFFFF9H//這個是PCI配置空間的基址暫存器的值
OUT DX, EAX//把EAX內容放到0CFCH對應的埠中
相關文章
- 2020-09-30
- pci匯流排驅動及pci裝置驅動註冊
- PCI-Express-Technology(四)Express
- openstack PCI透傳(GPU)GPU
- PCI(Payment Card Industry)合規
- PCI匯流排基本概念
- 【原創】Linux PCI驅動框架分析(一)Linux框架
- IOMMU是如何劃分PCI device group的?dev
- 【原創】Linux PCI驅動框架分析(二)Linux框架
- 史上最全面 centos7安裝 apache-airflow(2020-09-30)CentOSApacheAI
- 使用libvirt配置pci bus的numa親和性
- PCI-DSS(V3.2)學習筆記(二)筆記
- Hi3511 Hi3512_PCI開發參考
- SATA介面已死:PCI-E SSD將成市場主流
- Windows驅動中的PCI, DMA, ISR, DPC, ScatterGater, MapRegsiter, CommonBuffer, ConfigSpaceWindows
- 瞭解PCI Express的Posted傳輸與Non-Posted傳輸Express
- PCIe掃盲——PCI匯流排的中斷和錯誤處理
- 探索 PCI 轉 PMC 載板轉接卡:連線不同介面的橋樑
- linux nvidia驅動錯誤--NVRM: This PCI I/O region assigned to your NVIDIA device is invalidLinuxVRdev
- PCI-5565系列反射記憶體卡 反射記憶體交換機反射記憶體
- PBlaze5 510/516低功耗雙埠U.2 SSD通過PCI-SIG實錄
- win10安裝出現pci簡單通訊控制器感嘆號修復方法Win10
- lenovo m427把win10改裝win7後出現pci簡易通訊控制器有感嘆號怎麼辦Win10Win7