linux驅動結構pci之resource

2021-05-24 02:42:36 字數 675 閱讀 7863

linux設計了乙個通用的資料結構resource來描述各種i/o資源(如:i/o埠、外設記憶體、dma和irq等)。

該結構定義在include/linux/ioport.h標頭檔案中:

struct resource ;

linux是以一種倒置的樹形結構來管理每一類i/o資源(如:i/o埠、外設記憶體、dma和irq)的。每一類i/o資源都對應有一顆倒置的資源樹,樹中的每乙個節點都是乙個resource結構,而樹的根結點root則描述了該類資源的整個資源空間。為什麼使用樹?例如,考慮一下ide硬碟介面所使用的i/o埠位址-比如說從0xf000 到 0xf00f。那麼,start欄位為0xf000 且end 欄位為0xf00f的這樣乙個資源包含在樹中,控制器的常規名字存放在name欄位中。但是,ide裝置驅動程式需要記住另外的資訊,也就是ide鏈主盤使用0xf000 到 0xf007的子範圍,從盤使用0xf008 到 0xf00f的子範圍。為了做到這點,裝置驅動程式把兩個子範圍對應的孩子插入到從0xf000 到 0xf00f的整個範圍對應的資源下。一般來說,樹中的每個節點肯定相當於父節點對應範圍的乙個子範圍。i/o埠資源樹(ioport_resource)的根節點跨越了整個i/o位址空間(從埠0到65535,即64k)。

更詳細可以參考:

linux驅動子系統 PCI

pci子系統的關鍵概念包括 pci裝置 pci插槽 pci域 pci匯流排 pci橋 熱插拔控制器 pci裝置探測流程 linux啟動過程中會呼叫pci核心的探測函式進行pci裝置的探測,並建立起相關的拓撲關係以及記錄每個探測到的裝置的資訊 探測採用遞迴的方式從根控制器開始逐級往下探測,遇到橋控制器...

Linux的PCI驅動分析

1.關鍵資料結構 pci裝置上有三種位址空間 pci的i o空間 pci的儲存空間和pci的配置空間。cpu可以訪問pci裝置上的所有位址空間,其中i o空間和儲存空間提供給裝置驅動程式使用,而配置空間則由linux核心中的pci初始化 使用。核心在啟動時負責對所有pci裝置進行初始化,配置好所有的...

Linux驅動學習 初識PCI驅動 一

pci是什麼 pci peripheral component interconnect,外圍裝置互 線。是一種廣泛採用的匯流排標準,它提供了許多優於其它匯流排標準 如eisa 的新特性,目前已經成為計算機系統中應用最為廣泛,並且最為通用的匯流排標準。對於pci的一些具體介紹可以參考 pci具體介紹...