linux内核中有驱动程序么,在Linux内核中增加驱动选项

在linux内核中增加驱动程序要完成3个方面的工作

1.将编写的源代码拷贝到Linux内核源代码相应目录

2.在目录的Kconfig文件中增加关于源代码的相应目录

3.在目录的Makefile文件中增加对新源代码的编译条目

扫盲点:

Makefile:分布在Linux内核源代码中的Makefile,定义Linux内核的编译规则

Kconfig:给用户提供配置选择的功能

当你执行makemenuconfig命令的时候会根据你所选择的配置生成一个.config文件,此文件中记录着哪部分应该编译进内核,哪部分应该编译为内核模块。

当你执行makezImage的编译内核时,就会根据此.config文件编译相应的内核模块

Kconfig文件的编写:

(1).菜单入口

configMODVERSIONS

bool“Module versioning support”

help

Usually,youhave to use modules compiled your kernel

SayingY here makes it …

“config”关键字定义新的配置选项,之后的几行定义了该配置选项的属性

选项类型:

每个配置选项都必须指定类型:booltrisate string hex int

提示:

类型定义后可以紧跟提示

例:

bool“Networking support”

boolprompt “Networking supporting”

提示的一般格式为:

prompt [if]

默认值格式为:

default[if]

一个配置可以存在任意多个值,在这种情况下只有第一个被定义的值是可用的

依赖:

if[]也可以由dependson 来代替

选择关系:

select [if]

如果A被选中B默认也被选中

数据范围:

range [if]

注意symbol只能是int和hex类型

帮助信息:

help(或---help---)

。。。。

(2).菜单结构

菜单入口口在菜单结构中的位置可以由两种方法决定

第一种为:

menu“Network device support”

dependsin NET

cnfigNETDEVICES

endmenu

所有处于”menu”和“endmenu”之间的菜单入口都会成为“Networkdevice support”的子菜单

第二种为:

通过分析依赖关系生成菜单结构

configMODULES

bool“Enable loadable module support”

configMODVERSIONS

bool“Set version information on all module symbols”

dependson MODULES

上述MODVERSIONS直接依赖于MODULES,只有MODULES不为”n”时,该选项才可见

Kconfig中的其他属性:

1.choice

choice

endchoice

例如在drivers/video/samsung/Kconfig中就定义了如下choice:

0818b9ca8b590ca3270a3433284dd417.png

//实例:在内核中新增驱动代码目录和字目录

现在我们要在drivers目录下为ARM体系增加test_driver驱动

目录结构如下:

0818b9ca8b590ca3270a3433284dd417.png

我们在makemenuconfig中增加一个它的选项

首先,我们需要为test目录增加一个Kconfig

假设我们要增加两个菜单选项

1.CONFIG_TEST

当用户选中它时会编译test目下的test.ctest_queue.o test_client.c生成对应的模块文件

2.CONFIG_TEST_CPU

当用户选中它时会编译cpu目录下的cpu.c生成对应的模块文件

Kconfig文件的编写:

0818b9ca8b590ca3270a3433284dd417.png

其中CONFIG_TEST_CPU依赖于CONFIG_TEST

这样Kconfig文件就算编译好了,然后我们在linux2.6/arm/Kconfig文件中将将刚才我们编写好的Kconfig包好进去

source“drivers/test/Kconfig”

这样当你在内核目录下执行makemenuconfig的时候就会看到如下选项

0818b9ca8b590ca3270a3433284dd417.png

点击进入后

0818b9ca8b590ca3270a3433284dd417.png

当我们选中TESTsupport后又会产生一个新的选项

0818b9ca8b590ca3270a3433284dd417.png

菜单项我们编写好了,下面就是Makefile文件的编写

首先需要编写test下的Makefile文件

0818b9ca8b590ca3270a3433284dd417.png

其中

obj-$(CONFIG_TEST_CPU) += cpu

表示当我们选中CONFIG_TEST_CPU选项时就进入cpu目录下执行cpu下的Makefile文件

所以我们还要为cpu目录下的.c文件编写一个Makefile文件

0818b9ca8b590ca3270a3433284dd417.png

这样当你在makemenuconfig中选中了TESTdriver中某一项时在编译内核时就会编译生成对应的内核模块到内核镜像中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值