linux 驅動裝置和 dts 匹配過程

2021-09-07 15:00:28 字數 983 閱讀 1462

linux 裝置驅動檔案在與 dts 中的裝置板級硬體資訊匹配的關鍵字是 compatible 屬性。即比較驅動檔案中 of_device_id 結構體元素的 .compatible 成員變數和 dts 檔案中 node 中 compatible 屬性兩個字串。

rationale:

linux 啟動從 lk jump 到 kernel 之後

函式呼叫的深度比較深所以圖比較長,其中細節部分省略,可以開啟具體原始碼去看。

可以看到最後呼叫的函式

static inline int of_driver_match_device(struct device *dev,const struct device_driver *drv)

--->of_match_device(drv->of_match_table, dev) != null;

--->of_match_node(matches, dev->of_node)

--->__of_match_node(matches, node)

--->static const struct of_device_id *__of_match_node(const struct

of_device_id *matches,

const struct device_node *node)

}return best_match;

}

傳遞到最後__of_device_is_compatible函式將driver的of_match_table->compatible和node中的compatible比較,這個比較不是單純的比較,是一種加分制。

匹配成功之後會進行probe,如果driver 的 probe 執行不成功(比如硬體問題,或者沒有掛載裝置),會呼叫sys系列函式進行驅動解除安裝。

SPI 匯流排驅動和裝置驅動的匹配

關於spi driver和spi device的匹配 第一種情況 spidev.c中spi driver中name欄位 static structspi driverspidev spi driver 和mach smdk6410.c中的modalias欄位 static structspi boa...

驅動 linux裝置驅動 字元裝置驅動開發

preface 前面對linux裝置驅動的相應知識點進行了總結,現在進入實踐階段!linux 裝置驅動入門篇 linux 裝置驅動掃盲篇 fedora下的字元裝置驅動開發 開發乙個基本的字元裝置驅動 在linux核心驅動中,字元裝置是最基本的裝置驅動。字元裝置包括了裝置最基本的操作,如開啟裝置 關閉...

Linux裝置驅動學習一 裝置和驅動的註冊

使用itop 4412開發板,用的是scp 1g的板子。首先是對外部裝置的操作的三部曲 1.通過原理圖找到裝置連線的pin腳 處理器的資料手冊 3.編寫程式實現裝置的操作 1.裝置和驅動的註冊流程 一般都是先註冊裝置,再註冊驅動。現在引入的熱插拔裝置是先註冊的驅動。1 註冊裝置使用結構體platfo...