-2
如何知道哪些設備連接到它以及要探測哪些驅動程序?你可以參考內核源代碼或舉一個例子....謝謝內核啓動時(特別是在基於ARM的設備上)內核探測驅動程序
如何知道哪些設備連接到它以及要探測哪些驅動程序?你可以參考內核源代碼或舉一個例子....謝謝內核啓動時(特別是在基於ARM的設備上)內核探測驅動程序
Linux內核將知道該設備只通過它的設備驅動程序連接。基於Linux內核配置加載的設備驅動程序列表。
在編譯Linux內核時啓用驅動程序時,驅動程序的init部分將被放置在內核映像的特殊部分。
在內核初始化過程start_kernel()中,靜態設備驅動程序將爲loaded one by one。
有關init調用機制參考Linux內核
http://linuxgazette.net/157/amurray.html
http://lwn.net/Articles/141730/
我不認爲這個問題是題外話,所以它也被標記爲這樣的恥辱,我不能添加完整的答案。例如,您可以在LDD3手冊的「Linux設備模型」一章的「公共汽車,設備和驅動程序」一節中閱讀它。簡而言之,Linux使用「設備」可以連接到的「Buses」(如PCI,USB等)的抽象概念。每個'Device'可以由一些'Drivers'支持,這些'Drivers'具有定義的'probe'回調。巴士將調用這些回調,直到某個'Driver'決定它將處理該設備。總線可能會使用一些提示(如設備ID)來詢問特定的驅動程序或者可以遍歷所有驅動程序 –
還有一些設備,尤其是嵌入式系統(如ARM系統)的某些設備未連接到任何可檢測硬件的實際總線。這些設備被組織在Linux的特殊抽象總線中,稱爲「平臺」。過去,這種總線的驅動程序註冊在內核代碼中進行了硬編碼,但現在主要由稱爲'設備樹'的特殊配置文件來描述,該文件由引導加載程序提供給內核。描述仍然是靜態的,但它獨立於內核代碼,因此對於一個內核映像您可以有多種配置(對於稍微不同的主板)。 –