如何增加内核模块

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 条评论
登录 后参与评论

相关文章

来自专栏子勰随笔

Linux & MacOS中一些常用命令备忘

1526
来自专栏JAVA同学会

MAVEN简介之——pom.xml

maven是围绕着构建生命周期这个核心概念为基础的。maven里有3个内嵌的构建生命周期,default,clean和site。

771
来自专栏前端真相

webpack、npm 错误汇总

原因: 版本10 fs.promises的API是实验性的,webstorm不允许使用。

2717
来自专栏向治洪

关于React Native 报Export declarations are not supported by current JavaScript version错误的解决问题

设置.js文件默认以jsx的语法打开 在没有进行设置的情况下,每次打开WebStorm的时候打开包含jsx语法的.js文件都会有以下提示: ? 当然我们点击转换...

2116
来自专栏源码之家

终于解决WIN7共享经常连不上的问题了。

1162
来自专栏梦魇小栈

(译)NPM vs Yarn 备忘手册

好,想必你对新的 JavaScript 包管理工具 yarn 已经有所耳闻,并已通过 npm i -g yarn 进行了安装,现在想知道怎么样使用吗?如果你了解...

702
来自专栏Java架构师历程

Maven 指定JDK版本

使用 IntelliJ 时,一运行 maven build,项目的编译 jdk 总是会变成 1.5 版本,一开始通过maven-compiler-plugin配...

872
来自专栏向前进

vue-cli脚手架npm相关文件解读(1)webpack.base.conf.js

系列文章传送门: 1、build/webpack.base.conf.js 2、build/webpack.prod.conf.js 3、build/webp...

4034
来自专栏marsggbo

解决win10 关键错误开始菜单和cortana无法工作 的问题(转-真的成功了)

问题描述: 一次强制关机后出现了这个对话框,注销、重启均无法解决问题 解决过程[因为我用的英文版操作系统,所以截图都是英文,请大家自行对照自己的操作系统]: 1...

1878
来自专栏我有一个梦想

Python 项目实践三(Web应用程序)第五篇

 接着上节继续学习,在这一节,我们将建立一个用户注册和身份验证系统,让用户能够注册账户,进而登录和注销。我们将创建一个新的应用程序,其中包含与处理用户账户相关的...

1848

扫码关注云+社区