码迷,mamicode.com
首页 > 移动开发 > 详细

Android驱动开发---Linux Kernel/HAL Layer/Jni Layer实例全集

时间:2018-12-11 19:44:34      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:org   create   first   kconfig   build   exec   hat   pre   com   

本人在开发Android Nfc POS之初,探索调试了一番驱动,目前在Nexus 5X 7.1.1上已经调成,之前的步骤可以参考我发的文章,Android驱动开发经验分享如下。

1. Linux 内核驱动实例

以下均在Android Linux内核目录下操作, 在drivers目录下创建驱动目录hello
这个目下要创建3个文件,hello.c, Makefile and Kconfig
1.1 hello.c
cd 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:\Users\ylgi>adb devices
List of devices attached
01059f9781509a67        device

C:\Users\ylgi>adb -s 01059f9781509a67 shell
bullhead:/ $ ls

技术分享图片

cd /system/bin
./hello

技术分享图片

运行效果如上图,表示Linux驱动已经成功加载。

Android驱动开发---Linux Kernel/HAL Layer/Jni Layer实例全集

标签:org   create   first   kconfig   build   exec   hat   pre   com   

原文地址:http://blog.51cto.com/12090569/2329081

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!