向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

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

更多相关文章

  1. Android编译系统中头文件搜索路径顺序的一个问题
  2. android 系统的开机启动流程源码解析(从linux 内核到android Laun
  3. Android中 将布局文件/View显示至手机屏幕的 整个过程分析
  4. Android res/raw文件以及raw与res/assets异同
  5. Windows环境下编译Assimp库生成Android可用的.so文件
  6. [eclipse]android开发如何查看源代码文件(android source)
  7. android DDMS 连接真机(己ROOT),用file explore看不到data/data文
  8. Cocos2d-x在win32,android和IOS下的文件读写问题
  9. 在Qt for Android中添加.a或so库文件

随机推荐

  1. Android常用颜色表
  2. android webview 7.0 h5调用打电话解决方
  3. android ndk开发中char和unsigned char问
  4. Android(安卓)自定义Animation,使用Camera
  5. Android: An introduction to the Edify
  6. Android图片上传的工具类
  7. Android(安卓)使用Camera2 调用摄像头显
  8. android scrollview滑动时悬浮部分控件
  9. Android(安卓)复用自制的控件(2)
  10. Android(安卓)Toast 例子