在Android系统中模块化编译驱动程序
2017-11-18 10:36
197 查看
1、向android系统之中添加一个驱动程序,模块化加载(insmod xxx.ko)
首先再kernel/drivers目录下添加自己的目录 hello。
在hello目录写写自己的驱动程序和Makefile文件。编写Makefile时,需要注意:obj-y:把由foo.c 或者 foo.s 文件编译得到foo.o 并连接进内核.obj-m:
则表示该文件作为模块编译。
修改hello上层目录的driver目录下的Makefile文件,把自己编写的hello模块编译进去。
在Android的系统目录下执行make bootimage进行编译(编译前记得source 和 lunch)。
obj-m生成的文件都在\HLOS\out\target\product\msm8909w\system\lib\modules目录下。
可以adb push将生成的hello.ko文件push进设备,也可以将成的内核镜像移植到设备hello.ko文件在系统目录下的/system/bin/lib/modules下。
最后insmod是加载模块,rmmod是卸载模块。
2、编译过程中遇到的坑
无需在自己目录下配置Kconfig,无需进行make menuconfig。我们的系统的配置都是根据需要配好了的,在/HLOS/kernel/arch/arm/configs/msm8909w_defconfig文件中,因为系统有裁剪,若进行make menucofig之后会生成一种全新配置,里面会调用一些抛弃的资源,导致编译不通过。
在编译好之后,烧录进手表的时候,烧录失败,FAILED (remote: data too large),经过排查是由于fastboot 版本太旧,需要更新fastboot。
在由于配置原因编译内核失败,提示没有.config文件的时候。首先在Android目录下make kernelclean清除编译残渣,然后在kernel目录下进行make mrproper清除错误配置,在Android目录下make fs_config编译指定配置,最后make bootimage。
首先再kernel/drivers目录下添加自己的目录 hello。
在hello目录写写自己的驱动程序和Makefile文件。编写Makefile时,需要注意:obj-y:把由foo.c 或者 foo.s 文件编译得到foo.o 并连接进内核.obj-m:
则表示该文件作为模块编译。
修改hello上层目录的driver目录下的Makefile文件,把自己编写的hello模块编译进去。
在Android的系统目录下执行make bootimage进行编译(编译前记得source 和 lunch)。
obj-m生成的文件都在\HLOS\out\target\product\msm8909w\system\lib\modules目录下。
可以adb push将生成的hello.ko文件push进设备,也可以将成的内核镜像移植到设备hello.ko文件在系统目录下的/system/bin/lib/modules下。
最后insmod是加载模块,rmmod是卸载模块。
2、编译过程中遇到的坑
无需在自己目录下配置Kconfig,无需进行make menuconfig。我们的系统的配置都是根据需要配好了的,在/HLOS/kernel/arch/arm/configs/msm8909w_defconfig文件中,因为系统有裁剪,若进行make menucofig之后会生成一种全新配置,里面会调用一些抛弃的资源,导致编译不通过。
在编译好之后,烧录进手表的时候,烧录失败,FAILED (remote: data too large),经过排查是由于fastboot 版本太旧,需要更新fastboot。
在由于配置原因编译内核失败,提示没有.config文件的时候。首先在Android目录下make kernelclean清除编译残渣,然后在kernel目录下进行make mrproper清除错误配置,在Android目录下make fs_config编译指定配置,最后make bootimage。
相关文章推荐
- Android编译系统的架构:
- Android通过源码编译apk获得系统权限
- Android编译系统参考手册
- Android编译系统详解(二)
- Android系统源代码编译—[3]准备构建
- Android系统编译过程分析
- 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序
- 深入浅出 - Android系统移植与平台开发(三)- 编译并运行Android4.0模拟器
- 深入理解:Android 编译系统
- Android模块化编译
- Android介绍以及源码编译---Ubuntu系统Android编译环境配置
- 通过mk文件编译android4.0.3系统app源码后覆盖安装失败解决办法(android odex文件)
- Android编译系统分析
- 编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言
- Android编译系统分析
- Android系统编译出错
- Android系统编译环境搭建—Ubuntu14.04安装&root登录&Chromium root启动&安装配置交叉编译环境
- Linux 4.4内核移植以及Android系统编译
- 【转】在MAC系统中编译ANDROID源码与模拟器内核GoldFish
- 搭建ubuntu文件系统编译android