博观而约取,厚积而薄发。这篇文章主要讲述往android的内核添加驱动及 ueventd.rc 修改相关的知识,希望能为你提供帮助。
本文转载自: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的选择,选择它就可以将驱动编进内核。
【往android的内核添加驱动及 ueventd.rc 修改】然后在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之短信验证
- Android开发中使用startActivityForResult()方法从Activity A跳转Activity B出现B退出时A也同时退出的解决办法
- 使用mybatis generator 生成annotation形式的mapper
- Android中给layout下的布局文件添加动画效果
- Webform 内置对象 Session对象Application全局对象,ViewState
- There is no Action mapped for namespace [/] and action name [m_hi] associated with context path [](代
- 可集成到APP的车架号识别软件
- 在外围获取APP的重要信息
- 2018APP行业火爆依旧 娱乐化便捷化将是拐点