Android底层驱动开发 -驱动配置篇

Android底层驱动开发 -驱动配置篇##

所需要的硬件及软件资源
  1. 一块Android开发板(我用的是Firefly-AIO-3288J)
  2. 开发板的系统源码
  3. 一台运行Linux系统的主机(虚拟机也行,但内存配置不要低于16g,否则会编译失败)
准备工作
  1. 在Linux系统上面安装好JDK
  2. 下载系统源码至Linux主机上面,然后解压
tar xzf /data/Android/xxxx.tar.gz
git reset --hard
  1. 尝试单独编译内核模块
make firefly_defconfig
make firefly-rk3288-aio-3288j.img -j4

如该编译成功则进行下一步

开始编写驱动

这里以编写HX711 AD模块的驱动为例

  1. 增加所需的资源到设备树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";
	};
  1. 新建驱动文件夹,在/kernel/drivers文件夹下面新建scaleDriver文件夹,这个文件夹用来存放驱动程序
  2. 在文件夹里面新建驱动程序文件scaleDriver.c
  3. 在文件夹里面新建Kconfig以及Makefile两个文件,两个文件的内容如下
//Kconfig
#  scale driver
#  author:yinshuai
#  DATE:2018-08-21
#  Kconfig
config SCALE_DRIVER
    bool "scaleDriver"
    default y
    help
        this is scale driver
//Makefile
#  scale driver
#  author:yinshuai
#  DATE:2018-08-21
obj-$(CONFIG_SCALE_DRIVER) +=scaleDrive.o
  1. 在drivers文件夹下面的Kconfig以及Makefile两个文件中添加以下内容
//Kconfig
source "drivers/scaleDriver/Kconfig"
//Makefile
obj-y	+= scaleDriver/
配置驱动
  1. 进入图形化配置界面
make menuconfig

选择Device Drivers —> 然后在自己的驱动前面打上星号,保存退出

编译内核

开始编译内核,执行以下命令

make firefly_defconfig
make 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一起刷入开发板 则可解决覆盖不了的问题

个人博客地址:小白的个人博客

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值