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

所需要的硬件及软件资源

  1. 一块Android开发板(我用的是Firefly-AIO-3288J)
  2. 开发板的系统源码
  3. 一台运行Linux系统的主机(虚拟机也行,但内存配置不要低于16g,否则会编译失败)

准备工作

  1. 在Linux系统上面安装好JDK
  2. 下载系统源码至Linux主机上面,然后解压
tar xzf /data/Android/xxxx.tar.gzgit reset --hard
  1. 尝试单独编译内核模块
make firefly_defconfigmake 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#  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
  1. 在drivers文件夹下面的Kconfig以及Makefile两个文件中添加以下内容
//Kconfigsource "drivers/scaleDriver/Kconfig"
//Makefileobj-y+= scaleDriver/

配置驱动

  1. 进入图形化配置界面
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一起刷入开发板 则可解决覆盖不了的问题

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

更多相关文章

  1. 在pc上安装android market软件并提取apk文件
  2. Android SDK Manager在添加Platforms和其他Packages时提示无法在
  3. android raw读取超过1M文件的方法
  4. 下载android的linux内核的方法
  5. Android 资源文件夹下的文件不能有大写字符,会导致R.java无法生成

随机推荐

  1. 通过servlet看Activity
  2. lint工具改错
  3. Android将“.c”后缀名改为“.cpp”时jav
  4. Android(安卓)HashMap源码解析
  5. android 剪切板 (粘贴复制功能)
  6. 数据存储(持久化)
  7. Android 广播------实现强制下线功能
  8. android游戏引擎libgdx学习笔记一
  9. 日拱一卒(五十五)
  10. android系统自带的适配布局activity_list