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

栏目: Android · 发布时间: 6年前

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

本人在开发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

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

cd /system/bin
./hello

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

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Linux内核完全剖析

Linux内核完全剖析

赵炯 / 机械工业出版社 / 2008.10 / 99.00元

本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短的时间对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。书中首先以Linux源代码版本的变迁为主线,介绍了Linux的历史,同时着重说明了各个内核版本的主要区别和改进,给出了......一起来看看 《Linux内核完全剖析》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具