PA數(shù)據(jù)鏈路解密之PCI
摘要:作為新一代的通用總線接口標(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)該映射后的地址,便可透明地讀寫設(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è)特定消息寫到特定地址,觸發(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等信息。
2、 BAR(Base Address Registers)
EP設(shè)備可向RC請(qǐng)求將自身的1~6段設(shè)備地址映射到CPU的地址空間,這1~6個(gè)CPU地址由RC軟件在枚舉過(guò)程中分配并回寫到配置空間中的BAR寄存器。
3、 枚舉流程
圖 3 枚舉流程
如圖3所示,CPU以一定順序掃描系統(tǒng)內(nèi)的PCI-E總線,為發(fā)現(xiàn)的設(shè)備分配總線號(hào)、設(shè)備號(hào),構(gòu)建設(shè)備樹,分配地址空間并回寫B(tài)AR。操作系統(tǒng)啟動(dòng)后,將根據(jù)DeviceID、VendorID找到匹配的驅(qū)動(dòng)程序并加載運(yùn)行。