如何增加内核模块

Kconfig

1.先了解一下Kconfig的语法: 

一个典型的内核配置菜单如下: menu "Network device support"  config NETDEVICES          bool "Enable Net Devices"          depends on NET          default y         help                 This is help desciption。  ...  endmenu 

包含在menu/endmenu中的内容会成为Network device support的子菜单。每一个子菜单项都是由config来定义的。congfig下方的那些bool、depends on、default、help等为config的属性,用于定义该菜单项的类型、依赖项、默认值、帮助信息等。

 2. 补充说明一下类型定义部分:

 每个config菜单项都要有类型定义: bool布尔类型、 tristate三态(内建、模块、移除)、string字符串、 hex十六进制、 integer整型。 例如: config HELLO_MODULE  bool "hello test module"  bool 类型的只能选中或不选中,显示为[ ]; tristate类型的菜单项多了编译成内核模块的选项,显示为< > , 假如选择编译成内核模块,则会在.config中生成一个 CONFIG_HELLO_MODULE=m的配置,假如选择内建,就是直接编译成内核影响,就会在.config中生成一个 CONFIG_HELLO_MODULE=y的配置. hex十六进制类型显示为( )。

3. 目录层次迭代 

在Kconfig中有类似语句:source "drivers/usb/Kconfig"  用来包含(或嵌套)新的Kconfig文件,这样便可以使各个目录管理各自的配置内容,使不必把那些配置都写在同一个文件里,方便修改和管理。

下面我们以实例来说明这几个文件的作用

Step1:编辑配置文件Kconfig,加入驱动选项,使之在make menuconfig 的时候出现  打开 linux-2.6.32.2/drivers/char/Kconfig 文件,添加如图所示:

保存退出,这时在linux-2.6.32.2 目录位置运行一下make menuconfig 就可以在Device  Drivers Character devices 菜单中看到刚才所添加的选项了,按下空格键将会选择为<M>,  此意为要把该选项编译为模块方式;再按下空格会变为<*>,意为要把该选项编译到内核中,  在此我们选择<M>,如图:

Step2:通过上一步,我们虽然可以在配置内核的时候进行选择,但实际上此时执行编译内核还是不能把mini2440_hello_module.c 编译进去的,还需要在Makefile 中把内核配置选项和真正的源代码联系起来,打开linux-2.6.32.2/drivers/char/Makefile,如图添加并保存退出:

Step3:这时回到linux-2.6.32.2 源代码根目录位置,执行make modules,就可以生成我们所需要的内核模块文件 mini2440_hello_module.ko 了,如图:至此,我们已经完成了模块驱动的编译。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术

Linux的Bash Shell详解

  1.什么是bash           bash是Bourne Again Shell的简称,是从unix系统中的sh发展而来的,是用户和Linux内核交互...

844
来自专栏软件测试经验与教训

回放loadrunner脚本时log区中文显示乱码,怎么破?

38212
来自专栏小狼的世界

PHP读取Excel文件内容

项目需要读取Excel的内容,从百度搜索了下,主要有两个选择,第一个是PHPExcelReader,另外一个是PHPExcel。

2032
来自专栏非著名程序员

[Android Studio 权威教程]断点调试和高级调试

好了开始写一个简单的调试程序,我们先来一个for循环 for (int i = 0; i < 10; i++) {//获取当前i的值 int select...

1999
来自专栏Golang语言社区

golang中发送http请求的几种常见情况

整理一下golang中各种http的发送方式 最初的一些项目中,很多的地方都使用到了golang发送http请求,之后再对请求收到的结果进行一些处理,所用到的模...

8978
来自专栏木头编程 - moTzxx

微信小程序Ⅶ [外部文件引用的注意点]

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

1873
来自专栏光变

Vim实现批量注释的方法

调试代码的时候,免不了要批量注释/取消代码注释,很多IDE都有快捷键将你选中的…

951
来自专栏吴伟祥

Linux vi/vim 转

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

741
来自专栏jiajia_deng

处理 Qt 中文提示 “常量中有换行符”

在 Qt 自建的 Widget 窗口生成的 cpp 文件中,直接写中文编译时会提示错误。内容是 “常量中有换行符”。如下图所示:

3434
来自专栏飞雪无情的博客

Go语言实战笔记(三)| Go Doc 文档

对于协作开发或者代码共享来说,文档是一个可以帮助开发者快速了解以及使用这些代码的一个教程,文档越全面,越详细,入门越快,效率也会更高。

1113

扫码关注云+社区