Android底层驱动开发 -驱动配置篇
16lz
2021-01-23
Android底层驱动开发 -驱动配置篇##
所需要的硬件及软件资源
- 一块Android开发板(我用的是Firefly-AIO-3288J)
- 开发板的系统源码
- 一台运行Linux系统的主机(虚拟机也行,但内存配置不要低于16g,否则会编译失败)
准备工作
- 在Linux系统上面安装好JDK
- 下载系统源码至Linux主机上面,然后解压
tar xzf /data/Android/xxxx.tar.gzgit reset --hard
- 尝试单独编译内核模块
make firefly_defconfigmake firefly-rk3288-aio-3288j.img -j4
如该编译成功则进行下一步
开始编写驱动
这里以编写HX711 AD模块的驱动为例
- 增加所需的资源到设备树dts文件里面,dts文件在
/kernel/arch/arm/boot/dts/firefly-rk3288-aio-3288j.dts
在里面增加设备资源定义,配置GPIO管脚
//电子秤驱动scale_driver{ compatible = "scaleDriver"; scale-sck = <&gpio1 GPIO_D2 GPIO_ACTIVE_HIGH> ; scale-dt = <&gpio1 GPIO_D0 GPIO_ACTIVE_LOW>; status = "okay";};
- 新建驱动文件夹,在/kernel/drivers文件夹下面新建scaleDriver文件夹,这个文件夹用来存放驱动程序
- 在文件夹里面新建驱动程序文件scaleDriver.c
- 在文件夹里面新建Kconfig以及Makefile两个文件,两个文件的内容如下
//Kconfig# scale driver# author:yinshuai# DATE:2018-08-21# Kconfigconfig SCALE_DRIVER bool "scaleDriver" default y help this is scale driver
//Makefile# scale driver# author:yinshuai# DATE:2018-08-21obj-$(CONFIG_SCALE_DRIVER) +=scaleDrive.o
- 在drivers文件夹下面的Kconfig以及Makefile两个文件中添加以下内容
//Kconfigsource "drivers/scaleDriver/Kconfig"
//Makefileobj-y+= scaleDriver/
配置驱动
- 进入图形化配置界面
make menuconfig
选择Device Drivers —> 然后在自己的驱动前面打上星号,保存退出
编译内核
开始编译内核,执行以下命令
make firefly_defconfigmake firefly-rk3288-aio-3288j.img -j4
最后生成的内核文件在
/kernel kernel.img/kernel resource.img
如果发现刷入的内核覆盖不了之前的内核 执行以下命令重新生成boot.img
make bootimage
生成的boot.img文件在
out/target/product/rk3288_aio_3288j_box/boot.img
最后把boot.img 以及 kernel.img 和 resource.img一起刷入开发板 则可解决覆盖不了的问题
个人博客地址:小白的个人博客
更多相关文章
- 在pc上安装android market软件并提取apk文件
- Android SDK Manager在添加Platforms和其他Packages时提示无法在
- android raw读取超过1M文件的方法
- 下载android的linux内核的方法
- Android 资源文件夹下的文件不能有大写字符,会导致R.java无法生成