知识养成了思想,思想同时又在融化知识。这篇文章主要讲述Android驱动开发---Linux Kernel/HAL Layer/Jni Layer实例全集相关的知识,希望能为你提供帮助。
本人在开发android Nfc POS之初,探索调试了一番驱动,目前在Nexus 5X 7.1.1上已经调成,之前的步骤可以参考我发的文章,Android驱动开发经验分享如下。
1. Linux 内核驱动实例【Android驱动开发---Linux Kernel/HAL Layer/Jni Layer实例全集】以下均在Android Linux内核目录下操作, 在drivers目录下创建驱动目录hello
这个目下要创建3个文件,hello.c, Makefile and Kconfig
1.1 hello.ccd drivers
mkdir hello
vim hello.c
code as follows:
/linux kernel driver: hello.c =>
/dev/hello /
please find the code in the below. here skip the code to make the page clean and clear.
1.2 Makefile
Create the Makefile and add:obj-y += hello.o
1.3 Kconfig
Create Kconfig and add:
config?HELLO?
tristate?"Eric: First Android Driver"
default?n
help
This?is?the?first?Android?driver.
this file is used when we make menuconfig.
1.4 Modify drivers/Makefile
Add following in the end
obj-y += hello.o
1.5 Add the driver into system configuration
Before we build the kernal, we need to config the system.
1.5.1 Modify arch/arm64/Kconfig
Add following in the end
source "drivers/hello/Kconfig"
It seems that this config not work, may be skipped.
1.5.2 Modify drivers/Kconfig
Following the menu:
menu "Device Drivers"
Please add
source "drivers/hello/Kconfig"
1.5.3 Modify drivers/Kconfig
make menuconfig
To enble the menu ‘Eric: First Android Driver‘in the " Device Drivers" item.
And save , then to build the linux kernel code.
2. 测试驱动以下是需要操作的目录在AOSP目录下
2.1 create the application on externel
在external下创建hello目录
目录下将有两个文件:hello.c and Android.mk
cd external
mkdir hello
vim hello.c
/ AOSP app : ./external/hello.c => /system/bin/hello/
Android.mk as follows:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := hello
LOCAL_SRC_FILES := $(call all-subdir-c-files)
include $(BUILD_EXECUTABLE)
2.2 build the application
To build the hello application
mmm external/hello/
Add it into the system.img
make snod
2.3 Test/Debug the driver hello
Before flash, we can build the AOSP again, of cource, don‘t forget replace the linux kernel file ‘Image.gz-dtb‘.
After flash into the phone, reboot the phone, and then do follows:
C:Usersylgi>
adb devices
List of devices attached
01059f9781509a67deviceC:Usersylgi>
adb -s 01059f9781509a67 shell
bullhead:/ $ ls
文章图片
cd /system/bin
./hello
文章图片
运行效果如上图,表示Linux驱动已经成功加载。
推荐阅读
- APP定位元素之UiSelector
- 捞月狗app下载|捞月狗app安卓版
- 微投屏app|微投屏手机版下载
- Android学习之基础知识八—Android广播机制
- Android实现对图片的缩放剪切旋转存储
- Android辅助功能AccessibilityService自动全选择文字粘贴模拟输入
- Dapper丶DapperExtention,以及AbpDapper之间的关系,
- idea中applicationContext-trans.xml中的Cannot resolve bean 'dataSource'...的问题解决
- @Controller,@RequestMapping,@RequestParam的使用方法