本文转载自:http://blog.csdn.net/lkqboy2599/article/details/8350100

向android的内核添加驱动,其实就是向linux内核添加驱动。主要在两个文件里添加点信息,一个是Kconfig文件,一个是Makefile文件。比如你添加的驱动你代码放到drivers目录下面的XXX目录,那么修在该目录下的Kconfig文件和Makefile文件。

具体的修改方法:

比如我现在修改drivers/staging/android/下的Kconfig文件。

config ANDROID_LOGGER

tristate "Android log driver"

default n

config ANDROID_RAM_CONSOLE

bool "Android RAM buffer console"

default n

config ANDROID_RAM_CONSOLE_ENABLE_VERBOSE

bool "Enable verbose console messages on Android RAM console"

default y

depends on ANDROID_RAM_CONSOLE

如果我想添加一个驱动,驱动名字为 somedrv,那么在这个文件里加入:

config ANDROID_DEMUXER

bool "Android Somedrv Driver"

default n

这样就可以了。这样在编译内核的时候,make menuconfig命令之后,会有

Android Somedrv Driver的选择,选择它就可以将驱动编进内核。

然后在Makefile里面添加一句obj-$(CONFIG_ANDROID_SOMEDRV)         += somedrv.o。

这样就修改好了。

这样编译内核的时候就把驱动编译进去了,前提编译前选择驱动。

现在我编译的内核都是用在模拟器上的,也就是说在qemu上运行内核。那么编译的时候的config就用goldfish_defconfig,这样编译前就不执行make menuconfig命令而是执行

make goldfish_defconfig(前提是已经将代码切换到goldfish分支)。

这样就自动生成.config文件了,不用自己去选择。但是这样的.config文件并没有包含自己添加的驱动,要手动修改.config文件,打开文件,搜索一下字段”somedrv”,会看见:

# CONFIG_ANDROID_SOMEDRV is not set

CONFIG_ANDROID_BINDER_IPC=y

Somedrv没有被包含编译,手动修改它,修改成CONFIG_ANDROID_SOMEDRV=y, 跟下面那句一样,这样就会将这个驱动编进内核。

这样编译出来的内核,已经包含somedrv驱动。

但是这个驱动挂载在/dev下只用所有者权限,这样程序还是没有办法访问这个设备。这个时候要修改一个文件,主目录/system/core/rootdir目录下的ueventd.rc文件,这个文件可以设置驱动挂载到/dev目录下时的权限和所有者。添加这句

/dev/demuxer               0666   root       root

这样就可以了。好像这个要重新编译一下。。

往android的内核添加驱动及 ueventd.rc 修改【转】的更多相关文章

  1. MTK andorid从底层到上层添加驱动

    1 [编写linux驱动程序] 1.1 一.编写驱动核心程序 1.2 二.配置Kconfig 1.3 三.配置Makefile 1.4 四.配置系统的autoconfig 1.5 五.编译 2 [编写 ...

  2. 第一章Android系统移植与驱动开发概述--读书笔记

    以前,初步学习过嵌入式Linux驱动开发的基础课程,对于驱动开发可以说是有了一点点微末的基础吧.首先我们要对Android嵌入式系统有一个初步的认识,Android系统发展到今天已经具备了完善的架构. ...

  3. Android 开发之 ---- 底层驱动开发(一) 【转】

    转自:http://blog.csdn.net/jmq_0000/article/details/7372783 版权声明:本文为博主原创文章,未经博主允许不得转载. 驱动概述 说到 Android ...

  4. 第一章 Android系统移植与驱动开发概述

    本书第一章首先简单概要地介绍了关于Android系统移植和驱动开发的相关内容. 所谓“移植”是指为特定的自己的设备,如手机定制Android的过程.自己开发一些程序(移植)装载在设备上,使得Andro ...

  5. 第一章:Android系统移植与驱动开发概述

    Android是基于Linux内核的,与Linux内核没有太大的区别,只是增加了一些自己独有的驱动,随着Android发布版本的不断升级,他所使用的Linux内核也在不断升级,以适应新的安卓版本,为他 ...

  6. sc7731 Android 5.1 LCD驱动简明笔记之一

    基于展讯sc7731 - Android 5.1 代码分析浏览.将屏蔽细节,把握整体,并且不涉及其他设备和LCD的交互. 以下对sc7731 lcd大体流程进行简要说明. 第一,lcd 的两个阶段 1 ...

  7. android从应用到驱动之—camera(2)---cameraHAL的实现

    本文是camera系列博客,上一篇是: android从应用到驱动之-camera(1)---程序调用流程 本来想用这一篇博客把cameraHAL的实现和流程都给写完的.搞了半天,东西实在是太多了.这 ...

  8. android从应用到驱动之—camera(1)---程序调用流程

    一.开篇 写博客还得写开篇介绍,可惜,这个不是我所擅长的.就按我自己的想法写吧. 话说camera模块,从上层到底层一共包含着这么几个部分: 1.apk------java语言 2.camera的ja ...

  9. android从应用到驱动之—camera(1)---程序调用流程[转]

    一.开篇 写博客还得写开篇介绍,可惜,这个不是我所擅长的.就按我自己的想法写吧. 话说camera模块,从上层到底层一共包含着这么几个部分: 1.apk------java语言 2.camera的ja ...

随机推荐

  1. 牛客网 Wannafly挑战赛9 A.找一找-数据处理

    好几天没好好学习了(咸鱼晒干了) 把稍微没那么咸鱼的几天前的一场牛客网的比赛稍微看了一下,菜的要死,这一场大数的比较多,都死了. A.找一找 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...

  2. Extjs grid 单元格事件

    celldblclick: function (view, td, cellIndex, record, tr, rowIndex, e, eOpts) { //extjs 4.2下,有时出现,多次不 ...

  3. Linux 在VMware中搭建CentOS6.5虚拟机

    原文:http://www.cnblogs.com/PurpleDream/p/4263465.html Linux 在VMware中搭建CentOS6.5虚拟机 前言:      本文主要是我在大家 ...

  4. sshpass结合ssh和scp可以自动完成密码登录,无需手动输入密码

    使用方法: 1.sshpass -p 123456 ssh admin@1.1.1.1 "touch file"  远程创建文件file 2.sshpass -p 123456 s ...

  5. PHP函数parse_url()如何使用

    又是一个非常使用的函数. <?php $url='http://www.cnblogs.com/lovebing'; $data = parse_url($url); var_dump($dat ...

  6. C语言变长数组 struct中char data[0]的用法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 今天在看一段代码时出现了用结构体实现变长数组的写法,一开始因为忘记了这种技术,所以老觉得作者的源码有误,最后经过我深思之后,终于想起以前看过的用s ...

  7. [学习笔记]Java异常机制

    概述 异常 程序在执行时出现的不正常情况,是对问题的描写叙述.将问题进行对象的封装. Java中的异常,就是对不正常情况进行描写叙述后的对象体现. 异常体系 Throwable     |--Erro ...

  8. Leetcode题解(4):L216/Combination Sum III

    L216: Combination Sum III Find all possible combinations of k numbers that add up to a number n, giv ...

  9. Django知识梳理

    请求周期: url > 路由 > 函数或类 > 返回字符串或模板语言 Form 表单提交: 先处理模板语言再讲HTML发出去 提交 > url > 函数或类中的方法  — ...

  10. 2016最新手机号码正则、身份证JS正则表达式

    js最新手机号码.身份证正则表达式   身份证正则: //身份证正则表达式(15位) isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1] ...