摘要:作為新一代的通用總線接口標(biāo)準(zhǔn),,PCI-Express(PCI-E)高帶寬,、低延遲、可擴(kuò)展,、支持熱插拔等優(yōu)點(diǎn),使其全面取代了PCI,、AGP等早期總線,。ZLG致遠(yuǎn)電子功率分析儀的內(nèi)部多個(gè)高速數(shù)據(jù)總線中,也包含了PCI-E,。下面我們來(lái)一起認(rèn)識(shí)這一接口,。
1.1 架構(gòu)
圖 1 框架圖
1、 Root Complex(RC)
PCI-E根控制器,,集成在主處理器系統(tǒng)中,,管理處理器與PCIE設(shè)備的連接。
2,、 Switch
PCI-E交換設(shè)備,用于PCI-E總線的擴(kuò)展,。
3,、 Bridge
PCI-E橋設(shè)備,用于PCI-E與其它總線的橋接,。例如:PCIE to PCI橋,。
4、 Endpoint(EP)
PCI-E終端設(shè)備,,例如網(wǎng)卡等通訊板卡或其它數(shù)據(jù)采集板卡,。
實(shí)際應(yīng)用中,我們關(guān)注較多的則是此類設(shè)備,。
1.2 通訊
1,、 地址映射
EP設(shè)備可通過(guò)配置自身PCI-E控制器,將設(shè)備內(nèi)部一段內(nèi)存地址映射到CPU保留地址空間,。CPU通過(guò)訪問(wèn)該映射后的地址,,便可透明地讀寫(xiě)設(shè)備,而不必關(guān)心物理傳輸細(xì)節(jié),。
2,、 直接內(nèi)存訪問(wèn)
EP設(shè)備具有總線主控能力,即能夠主動(dòng)訪問(wèn)CPU地址空間,。通過(guò)修改PCI-E控制器的地址映射,,配合DMA控制器,可以實(shí)現(xiàn)無(wú)需CPU干預(yù)的數(shù)據(jù)傳輸,。
3,、 MSI(Message Signaled Interrupt)中斷
EP設(shè)備可以將某個(gè)特定消息寫(xiě)到特定地址,觸發(fā)一個(gè)CPU中斷,。
1.3 枚舉
1,、 配置空間
圖 2 1 配置空間
如圖2所示,,配置空間是由EP設(shè)備定義,用于描述EP設(shè)備資源及特性的一組寄存器,。在枚舉過(guò)程中,,RC會(huì)掃描PCI-E總線上的所有設(shè)備。通過(guò)訪問(wèn)該設(shè)備的配置空間,,可以獲得加載EP設(shè)備驅(qū)動(dòng)所需的DeviceID,、VendorID等信息。
1,、 BAR(Base Address Registers)
EP設(shè)備可向RC請(qǐng)求將自身的1~6段設(shè)備地址映射到CPU的地址空間,,這1~6個(gè)CPU地址由RC軟件在枚舉過(guò)程中分配并回寫(xiě)到配置空間中的BAR寄存器。
2,、 枚舉流程
圖 3 枚舉流程
如圖3所示,,CPU以一定順序掃描系統(tǒng)內(nèi)的PCI-E總線,為發(fā)現(xiàn)的設(shè)備分配總線號(hào),、設(shè)備號(hào),,構(gòu)建設(shè)備樹(shù),分配地址空間并回寫(xiě)B(tài)AR,。操作系統(tǒng)啟動(dòng)后,,將根據(jù)DeviceID、VendorID找到匹配的驅(qū)動(dòng)程序并加載運(yùn)行,。