如何在内核中添加新的配置项

1:在所对应的驱动类型的文件夹下,建立自己驱动的文件夹

比如做一个4*4键盘,可以在linux/drivers/misc下建立自己驱动的文件夹myboard,然后将自己的.c文件添加进去。

2:在这个目录下添加自己的Kconfig文件,自己根据语法。

例如 config  MYBOARD4*4//config为配置关键字,MYBOARD4*4为新配置选项的标识符(make menuconfig 窗口配置名称)。

tristate "my driver support" /tristate表示可以配置成n,y,m三个选项

{depends    on  XXX}         //依赖的关系,只有编译这个依赖,次驱动才支持。没有时不需要次项。

default   y//表示配置默认为y,直接添加进内核选项

help //配置的帮助

myboard is sample  scanable board ,y for build in, m for module.

3:在上级目录的Kconfig文件中包含上边添加的新选项

如 在上级Kconfig中最后添加

source "drivers/misc/myboard/Kconfig"                    //相当于include,引入新添加选项的Kconfig

4:添加makefile编译文件

obj-$(CONFIG_MYBOARD4*4)+= myboard。o  //直接编译到内核

以下是编译模块的makefile

{

ifneq ($(KERNELRELEASE),)
obj-m :=keyboard.o
#modules-objs:=keyboard.o

else
KDIR :=/home/chen/work_chen/linux-3.5add_key
PWD := $(shell pwd)

all:
    make -C $(KDIR) M=$(PWD) modules

clean:
    rm -rf *.o.* *.cmd *.ko *.mod.c .tmp_versions
endif

}

注意:Kconfig中编译标识符MYBOARD4*4,要和编译选项中的CONFIG_MYBOARD4*4后边一致。编译的目标myboard。o要和源代码myboard。c一致。

obj-$(CONFIG_MMC_BLOCK)        += mmc_block.o
mmc_block-objs            := block.o queue.o

注意mmc_block这个文件可能并不存在,他只是作为下边两个目标文件的一个连接生成目标,可自行定义名称

5:编译内核

make clean

make menuconfig //进入内核配置选项,配置新加入的选项,配置选项可以配置成n,y,m。默认为y,把它配置成m,然后保存配置,退出。

make zImage  //编译内核,生成内核映像文件。

make modules //编译内核模块(对于已链接到内核的直接用,就可以生成.ko文件)

一般情况是在你写的驱动的目录下直接make就可生成.ko文件.

6:确认结果

在arch/arm/boot下可以看到新生成的zImage内核映像文件

在linux/drivers/myboard下可以看到键盘的内核模块myboard.ko

7:加载模块

insmod  myboard.ko

rmmod  myboard

加载模块后生成的设备驱动的名称由。c文件中定义的DEVICE_NAME决定的。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值