为Android内核添加新驱动,并提供menuconfig选项
为Android的Linux内核2.6.25添加驱动。
1. 在drives目录下添加hello目录,内含hello.c Kconfig
Makefile
hello.c内容:
#include <linux/init.h>
#include
<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT"Hello,
world/n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye, cruel world/n");
}
module_init(hello_init);
module_exit(hello_exit);
Kconfig内容:
config
HELLO
tristate "Hello Driver added by Dong"
default n
help
test
for adding driver to menuconfig.
MakeFile内容:
obj-$(CONFIG_HELLO) += hello.o
2. 上面的Kconfig文件再加上下面的两个配置,可使hello项出现在配置菜单中。
在arch/arm/Kconfig
menu "Device Drivers" endmenu之间添加
source "drivers/hello/Kconfig"
在drivers/Kconfig menu "Device Drivers" endmenu之间添加
source
"drivers/hello/Kconfig"
(不知为什么arch/arm/Kconfig中竟然含有Drivers里Kconfig内容的一个复本,
实验证明只对drivers/Kconfig中修改内容无效。)
3.修改Drivers目录下的Makefile文件,添加如下行,
obj-$(CONFIG_HELLO) +=
hello/
当CONFIG_HELLO为y或m时,使系统能找到hello驱动的makefile。
linux-2.6.25目录下make menuconfig,在Device Drivers菜单下选中Hello Driver added by
Dong项比如M,作为module。然后保存配置,执行make命令,就可以看到 CC [M] drivers/hello/hello.o
的log了,hello目录里生成了hello.o hello.ko的等文件。
流程:
假如在make menuconfig时配置Hello Driver added by
Dong为M(即编为模块,而不是编进linux内核)
则.config中就会多一行CONFIG_HELLO =
m
如此一来,drivers/Makefile中obj-$(CONFIG_HELLO) += hello/就变成了obj-m
+=hello/
于是执行make命令时,便会进入hello目录里找makefile,MakeFile内容obj-$(CONFIG_HELLO) +=
hello.o 变成了obj-m +=hello.o,所以hello.c就被编译成模块了。
相关推荐
linux内核添加新驱动实例,并提供menuconfig
linux内核配置make-menuconfig菜单详解.doc
linux内核配置makemenuconfig菜单详解.pdf
linux内核配置make_menuconfig菜单详解.docx
PIC驱动裁剪内核时如何配置make menuconfig的问题
详解如何把一个驱动静态加载到内核中,省去insmod步骤,以及内核中到底是如何编译make menuconfig指定的驱动的
2.6 内核 驱动程序编译的 Makefile
Linux内核是可配置,进入到linux目录,输入make menuconfig 将会有模块选择界面,前两句是 scripts/kconfig/mconf Kconfig .config - Linux/x86 3.10.65 Kernel Configuration Kconfig是默认选项,.config是当前...
#此处为了防止遗漏某些模块的添加,将原来的内核配置文件拷贝过来,然后再添加新模块 server01> make menuconfig #此处将kvm相关选项选中,具体如图所示;此外,将SYSFS_DEPRECATED_V2选中,不然容易报错
前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢? 在我们...
[14本经典Android开发教程] 8 Linux内核阅读心得体会 读核感悟 2 读核感悟 Linux内核启动 内核的生成 2 读核感悟 Linux内核启动 从hello world说起 3 读核感悟 Linux内核启动 BIOS 5 读核感悟 Linux内核启动 setup...
2.6内核编译配置选项简介--介绍make_menuconfig中的每个选项含义.
这是一个关于linux2.4内核配置的文档 make menuconfig
和linux內核编译一样的menuconfig 模板, 可以在终端显示图形界面的配置.
原创的友善之臂的mini6410 linux-2.6.38内核的uart1 串口驱动,使用platform_device方式,压缩包里面有驱动源代码、编译好了的ko文件、使用说明文档、用户例程的源代码和可执行程序,但是并没有给出直接编译驱动和...
Android9.0 HIsi Android 8.0Mstar ...最主要一步 添加驱动hisi 有可能会打不开make kernel_menuconfig 直接把这个加到你对应板子的Deconfig就可以了 CONFIG_USB_SERIAL=y # CONFIG_USB_SERIAL_CONSOLE
在linux系统上编译各种资源时均需要进行配置,而对make menuconfig的具体过程了解清楚有助于知识系统的学习
linux-2.6.28内核配置中文手册,讲解make menuconfig之后出现的配置界面的每一项的含义
自己整理的openwrt编译make menuconfig配置 使用说明: make menuconfig直接按照表格一选择即可,选项按颜色设定 白色字体项可以不选,为附加功能,按需选择 黑色字体项在配置里部分项默认选中,带标注的按需...