`
isiqi
  • 浏览: 16489847 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

为Android内核添加新驱动,并添加到menuconfig菜单

 
阅读更多

为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

    本文将详细介绍如何为Android设备的Linux内核2.6.25版本添加一个新的驱动,并且通过`menuconfig`工具来配置该驱动。这涉及到创建必要的源代码文件、修改相关配置文件以及编译过程等内容。 #### 步骤详解 **步骤1:...

    Android-x86内核编译

    2. **配置内核**:运行`make -C kernel O=$OUT/obj/kernel ARCH=x86 menuconfig`来打开Kconfig的菜单配置界面。在这里,你可以根据你的硬件设备配置网络适配器、声卡、触摸屏和文件系统的驱动。每个硬件组件都有相应...

    广和通NL668无线模块Linux下GobinNet驱动加载

    1. **新内核版本(3.8及以上)**:在`option.c`文件中的`option_ids`数组中添加黑名单(`blacklist`),驱动在加载时将自动跳过黑名单指定的接口。 2. **较旧内核版本**:在`probe`函数内部根据当前接口编号进行过滤...

    linux 内核配置机制

    内核配置过程中,开发者可以通过`make menuconfig`交互式地选择内核组件,如设备驱动、文件系统、网络协议等,从而实现内核的裁剪和定制。这种裁剪过程可以优化内核大小,提高运行效率,特别是在资源有限的嵌入式...

    Android 平台上SDCard的自动mount的解决方法

    1. **查看驱动编译状态**:进入Android内核源码目录,执行`make menuconfig`命令打开配置菜单。在此菜单中,可以检查SDCard驱动相关的配置项是否已经被选中。如果未选中,则需要勾选后重新编译内核。 2. **验证驱动...

    解析如何在android中增加gsensor驱动(MMA7660)

    因此,我们需要编辑`kernel/driver/misc/Kconfig`,在合适的菜单项(如MISC_DEVICES)下添加MMA7660的选项,确保在menuconfig时能够看到并选择该驱动。 在完成以上步骤后,重新运行`make menuconfig`,确认MMA7660...

    android-kernel-build-tools-源码.rar

    Android内核是Android系统的核心部分,它基于Linux内核,负责硬件驱动、系统调用以及低级服务。而构建这样一个复杂的内核系统,需要一套精心设计的工具链。 Android内核构建过程涉及到多个步骤,包括配置、编译、...

    编译内核详细配置 pdf 资料

    `make`会编译内核,`make modules_install`将编译出的模块安装到系统目录,而`make install`则会将新内核复制到系统目录,并更新引导加载器配置。 在实际操作中,为了防止编译错误或配置不当导致系统无法启动,建议...

    FIBOCOM_H3-Family Android驱动程序及RIL应用设计说明

    1. **配置内核目录**:首先进入内核配置目录,并运行 `makemenuconfig` 命令进入文本模式配置界面。 2. **选择 Device Drivers 项目**:在配置界面中选择 “Device Drivers” 项目。 3. **选择 USB support 选项**:...

    Ubuntu10.04下驱动开发环境搭建

    这一步会生成新的内核模块,并将它们安装到`/lib/modules`目录下的相应目录中。 #### 五、生成镜像文件 完成内核编译后,需要生成镜像文件以便系统启动时使用: 1. **生成内核镜像文件**: ```bash make ...

    如何编译设备串口通讯SPI驱动程序

    为了使这些驱动程序在Linux内核中生效,我们需要将其编译并加载到系统中。有两种主要的编译方式:一是编译进内核(built-in),二是编译为模块(module)。在调试和灵活性方面,编译为模块更受欢迎,因为它允许我们...

    Android_Linux_Kconfig[借鉴].pdf

    如果要将一个新的驱动添加到内核中,一般需要完成以下步骤: 1. **放置源代码**:将驱动程序的源代码(如`flashtest.c`)放入相应的目录,这里是`driver/mtd/maps/`。 2. **更新`Kconfig`**:在对应的`Kconfig`...

    Sate210 android 用户使用手册V1.0

    以上介绍了Sate210 Android用户手册中关于Android系统烧写、开发环境搭建以及系统调试的相关知识点,涵盖了从驱动安装到Android系统编译的全过程。对于开发者来说,这些都是非常实用的操作指南。

    [嵌入式开发板]iTOP-4412以模块的方式编译驱动

    在嵌入式系统开发中,内核驱动程序是连接硬件与操作系统的关键组件。本文将详细介绍如何在iTOP-4412开发板上以模块的方式编译Linux内核中的蜂鸣器驱动程序。 #### 二、iTOP-4412开发板概述 iTOP-4412是一款基于...

    系统下U盘挂载的实现

    在S3C6410 Android系统下实现U盘挂载,需要从内核配置、编译到具体的挂载操作等多个方面入手。通过对上述步骤的细致操作,可以确保U盘在该系统下的顺利使用。这对于嵌入式系统的开发者来说是非常实用且必要的技能。

    kernel-syphyr-compiled:基于syphyr存储库的已编译内核的集合

    4. **安装内核**:使用`make install`来将新内核复制到适当的系统目录,并更新GRUB启动菜单。 5. **重启并加载新内核**:重启系统,选择新内核启动,验证其正确运行。 对于开发人员来说,这样的内核集合可能用于...

Global site tag (gtag.js) - Google Analytics