2011-12-07 104 views
6

我正在嘗試爲嵌入式設備創建一個簡約的Linux。這意味着編譯內核和驅動程序的必要性。一個驅動程序是由它的創建者直接爲設備的主板編寫的,所以它不是一個存儲庫。它可以編譯爲內核模塊。將驅動程序編譯爲內核的一部分,而不是模塊

但是由於Linux的不可變性以及對內存使用量極小的要求,我不想使用模塊。我想要內核中的所有驅動程序。所有提供內核的驅動程序都是這樣設置的。

所以我的問題是如何編譯一個特殊的驅動程序到內核?

所有搜索都沒有提供給我一個解決方案 - 所有這些都只是關於編譯爲模塊。

感謝您的任何幫助。

+0

它需要你把模塊放到內核源碼樹中,然後修補一些Makefiles來包含它。但我不確定具體情況。你使用什麼模塊? –

+0

這是一個自制的司機。我知道我需要將它添加到內核源代碼中。不過,我需要一些細節,如何修改makefile等等。 –

+1

[靜態插入linux內核模塊]的可能重複(http://stackoverflow.com/questions/7353851/insert-linux-kernel-module-statically) –

回答

5

你一定要將驅動程序源碼放在內核源代碼樹中,並更新makefile以包含它。您可以在步驟1.1到1.3 here中看到這是如何工作的。

如果用戶級軟件與設備驅動程序進行任何通話,它可能會通過系統調用進行通話。搜索驅動程序的來源尋找asmlinkage如果你發現任何這些,然後你正在尋找添加一些系統調用。上述文件的其餘部分將解釋如何設置它們。你將不得不修改至少兩個文件(根據你的內核版本,它們可能會有所不同)。

如果設備驅動程序直接與內核通信,我們正在處理中斷,內存映射I/O或DMA。說實話,我不知道它們是否可以在驅動程序的源文件中進行處理(在這種情況下,你可以做的很好),還是他們還需要修改源代碼樹中的其他文件。 This是一個很好的資源。

好運