linux在列舉pcie裝置的過程由核心中的pci框架負責,在ep配置完成之後,驅動通過以下介面訪問pcie空間,原理參考前文《大話pcie:裝置列舉》
相關介面位於drivers/pci/access.c
在列舉過程中,pci驅動已經分配了address給各個bar,通過一些介面就可以訪問到bar resource。
位於include/linux/pci.h,以巨集的形式提供。
通過pci_resource_start巨集取得bar值之後,linux認為這個位址是io位址,如果要訪問的話可以通過ioremap對映到核心空間,然後通過readl/writel等io介面進行操作。
PCIe實踐之路 DMA機制
pcie控制器也提供dma direct memory access 功能,用來批量地非同步資料傳輸。假設現在rc要從ep mem space讀1mb資料,可以有這麼兩種方式 rc發起dma讀 ep發起dma寫。這兩種方式結果是等效的,對最後完成中斷的方式會不一樣,前者通過local interru...
PCIe實踐之路 Linux RC驅動
最新的4.12核心中對pci host driver進行一些劃分,把基於designware ip的主控驅動放到drivers pci dwc目錄下去了。如果是基於老的kernel開發,想要移植新版的核心的話,要注意,同時多了designware ep驅動框架。非designware的主控驅動還是位...
Followme Devops實踐之路
引言 天下武功,唯快不破 想要提高開發團隊效率,勢必要有一套完整而成熟的開發流程方案,除了sprint迭代開發模式之外,還有近幾年流行的devops流程,都是可以大幅度提高開發效率的工具.我們團隊也不斷探索 實踐,最終形成了現有的一套體系,從最初的手動發布到現有的自動化,從起始的繁瑣易亂到當下的簡潔...