导读在Linux系统上面安装好JDK下载系统源码至Linux主机上面,然后解压尝试单独编译内核模块开始编写驱动AD模块的驱动为例增加所需的资源到设备树dts文件里面
人造人
低级驱动开发-驱动配置## 所需软硬件资源 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/驱动程序文件夹,此文件夹用于将驱动程序存储在该文件夹中以创建新的驱动程序文件 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
将以下内容添加到驱动程序文件夹下的 Kconfig 和生成文件
//Kconfigsource"drivers/scaleDriver/Kconfig"
//Makefileobj-y+= scaleDriver/
配置驱动程序 进入图形化配置界面
make menuconfig
选择“设备驱动程序 - >然后在驱动程序前面放置星号以保存和退出
编译内核
开始编译内核并执行以下命令
:
make firefly_defconfigmake firefly-rk3288-aio-3288j.img -j4
最后生成的内核文件位于
/kernel kernel.img/kernel resource.img
如果闪存的内核无法覆盖以前的内核,请运行以下命令以重新生成 boot.img
:
make bootimage
引导 .img 文件在
out/target/product/rk3288_aio_3288j_box/boot.img
最后,将 boot.img 和内核.img 和资源.img 一起闪入开发板可以解决未被覆盖的问题
个人博客地址:小白的个人博客