天天看點

linux下将驅動編譯進核心

以字元裝置驅動為例:

1、首先将驅動源碼拷貝進linux源碼目錄下的/drivers/char下

2、修改char目錄下的Kconfig

在menu "Character devices"下面添加如下内容:

config FS4412_LED
	tristate "FS4412LED Device Support"
	depends onARCH_EXYNOS4
help
		support  leddevice on FS4412develop board
           

其中config FS4412_LED用在Makefile中的obj-$(CONFIG_FS4412_LED) +=fs4412_led_drv.o

tristate是三個選項,*為編譯進核心,m為子產品, 空格為不編譯

tristate也可以用bool ,則為兩個選項,沒有子產品選項

depends on 表示依賴

help是幫助

3、修改drivers/char/Makefile

在檔案最後添加如下代碼:

obj-$(CONFIG_FS4412_LED) += fs4412_led_drv.o
           

4、編譯LED驅動到核心中

配置核心時按“空格”選擇,配置完成後儲存退出

$ make menuconfig
Device Drivers  --->
		Character devices  --->
			<*>FS4412  LED Device Support
           

儲存退出,重新編譯後把uImage拷貝到tftpboot下

$ make uImage
$ cp arch/arm/boot/uImage/tftpboot
           

menuconfig:配置選項菜單檔案

.config:執行menuconfig後的實際配置選項檔案

Kconfig:是生成menuconfig的源碼

Kconfig---->menuconfig—>.config

Kconfig文法:

menu~endmenu:用于生成一個菜單選項

source:用于讀取另外一個Kconfig檔案内容。類似于C的#include

choice~endchoice:将多個類似的配置選項組合在一起,供使用者單選或者多選

繼續閱讀