天天看點

如何把裝置驅動檔案添加到Linux核心編譯選項配置的menuconfig中

如何把裝置驅動檔案添加到Linux核心編譯選項配置的menuconfig中

【目的】

把一個字元裝置驅動檔案,添加到核心中,希望編譯成子產品,而非build-in。

【參考資料】

核心的源碼樹目錄下一般都會有兩個檔案:Kconfig和Makefile。

http://blog.sina.com.cn/s/blog_4a377e150100c896.html

【具體步驟】

1.首先保證已經有驅動源檔案了:as352x_afe_charger.c

放在和其他你所要添加的子產品放在一個目錄下,此處是drivers\i2c\chips下。

2.在drivers\i2c\chips\makefile中,添加:

obj-$(CONFIG_AS352X_AFE_CHG) += as352x_afe_charger.o

3.在drivers\i2c\chips\Kconfig

中,添加如下内容:

----------------------------------------------

config AS352X_AFE_CHG

tristate "AS352X AFE Charger Driver"

depends on I2C_AS352X && AS352X_AFE

help

   If you say yes here you get support for AS352X AFE Charger.

   This driver can also be built as a module. If so, the module

   will be called AS352X AFE Charger.

----------------------------------------------

解釋如下:

(1)AS352X_AFE_CHG是自己定義的名字,當然要盡量保證有意義。

同時,你會注意到,在上面的makefile中添加的

obj-$(CONFIG_AS352X_AFE_CHG) += as352x_afe_charger.o

中的CONFIG_AS352X_AFE_CHG,是CONFIG_加上我們在kconfig下寫的config變量。

這兩個要比對,才能實作你在menconfig定義的結果,傳遞到makefile中,

以便決定編譯的時候是如何編譯:不編譯/編譯進核心/編譯成子產品

(2)tristate 表示我此處添加的子產品,可以

在make ARCH=arm menuconfig中看到的,選擇之後:

* 編譯到核心中

M 編譯成子產品,即生成XXX.ko

不選中,就不編譯該檔案

(3)depends on I2C_AS352X && AS352X_AFE

是前面自己找到的,表示此編譯選項隻有當I2C_AS352X 和AS352X_AFE都選中,才會出現。

當然,如果此子產品不依賴于其他子產品,則不需要加上這個depends on了。

【附錄】

1.如果設定成M,module模式,則要用

make ARCH=arm

編譯出as352x_afe_charger.ko

make ARCH=arm uImage

隻能編譯核心,而不編譯子產品。

轉自: http://hi.baidu.com/serial_story/blog/item/e84d11dd69f449d78c10294d.html

轉載于:https://www.cnblogs.com/fly-fish/archive/2011/03/16/1986326.html