向内核添加一个新驱动

2.6内核的源码树目录下一般都会有两个文件:Kconfig和Makefile。
Kconfig为某一目录下的配置文件,在内核配置make menuconfig(或xconfig等)时,会遍历Kconfig中读出相应的用户配置完,然后保存到.config(在顶层目录下生成)中。然后make时调用这个.config,作为这个内核的配置。
Makefile就不说了,大家都知道
因此,一般添加新的驱动时需要修改的文件主要是这两个

首先Kconfig每个菜单项都有一个关键字标识,最常见的就是config。

语法:
config symbol
options
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

symbol就是新的菜单项,options是在这个新的菜单项下的属性和选项
其中options部分有:
1、类型定义:
每个config菜单项都要有类型定义,bool:布尔类型, tristate三态:内建、模块、移除, string:字符串, hex:十六进制, integer:整型
bool类型的只能选中或不选中,tristate类型的菜单项多了编译成内核模块的选项,假如选择编译成内核模块,则会在.config中生成一个CONFIG_HELLO_MODULE=m的配置,
假如选择内建,就是直接编译成内核影响,就会在.config中生成一个CONFIG_HELLO_MODULE=y的配置.

2、依赖型定义depends on或requires
指此菜单的出现是否依赖于另一个定义
config HELLO_MODULE
bool "hello test module"
depends on ARCH_PXA
    这个例子表明HELLO_MODULE这个菜单项只对XScale处理器有效,即只有在选择了ARCH_PXA, 该菜单才可见(可配置)。

3、帮助性定义
只是增加帮助用关键字help或---help---
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

第二步,Makefile文件
一般只需要在该文件中加入Kconfig中对应的配置项,并知名相关联的**.o文件即可

最后举个例子:
假设想把自己写的一个char驱动程式加载到工程中,而且能够通过menuconfig配置内核时选择该驱动。
分三步:
第一:将您写的chartest.c 文档添加到/driver/char/ 目录下。
第二:修改/driver/char/目录下的kconfig文档:
config TEST_CHAR
 bool "add a char driver" //这句将会出现在make menconfig时 driver/character/下
 default y
第三:修改该目录下makefile文档。
添加如下内容:obj-$(CONFIG_TEST_CHAR)    += chartest.o

这样,当您运行make menucofnig时,您将发现"add a char driver"选项,默认是选上的。
这种做法是直接编译进内核,还有一种是编译为模块,就是使用tristate配置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值