本文以Nexus 5X为例,讲解Android Linux 驱动开发的准备
驱动开发了解:
Android对硬件的支持分成了两层,
一层放在用户空间(User Space),
一层放在内核空间(Kernel Space),
其中,硬件抽象层运行在用户空间,而Linux 内核驱动程序运行在内核空间。

所以Android的开放代码分两层AOSP和Linux内核

1. Linux内核的下载

下载Linux内核需要确定自己的开发目标,具体的手机和型号或者开发版的系统支持信息。
以Nexus 5X, 之前的文章,使用的分支是android-e-7.1.1-r31,对应的是bullhead。
Nexus 5x需要在msm里找,

mkdir kernel
cd kernel
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/msm.git
cd msm

查看所有支持的分支
git branch -a

                remotes/origin/android-msm-bluegill-3.18-pie-wear-dr                remotes/origin/android-msm-bullhead-3.10-marshmallow-dr                remotes/origin/android-msm-bullhead-3.10-marshmallow-dr-0                remotes/origin/android-msm-bullhead-3.10-marshmallow-dr1.5                remotes/origin/android-msm-bullhead-3.10-marshmallow-dr1.6                remotes/origin/android-msm-bullhead-3.10-marshmallow-mr1                remotes/origin/android-msm-bullhead-3.10-marshmallow-mr1-eas                remotes/origin/android-msm-bullhead-3.10-marshmallow-mr2                remotes/origin/android-msm-bullhead-3.10-n-mr1-preview-1                remotes/origin/android-msm-bullhead-3.10-n-mr1-preview-2                remotes/origin/android-msm-bullhead-3.10-n-mr2-preview-1                **remotes/origin/android-msm-bullhead-3.10-n-mr2-preview-2**                remotes/origin/android-msm-bullhead-3.10-n-preview-1                remotes/origin/android-msm-bullhead-3.10-n-preview-2                remotes/origin/android-msm-bullhead-3.10-n-preview-3                remotes/origin/android-msm-bullhead-3.10-n-preview-4                remotes/origin/android-msm-bullhead-3.10-n-preview-5                remotes/origin/android-msm-bullhead-3.10-nougat                remotes/origin/android-msm-bullhead-3.10-nougat-bugfix                remotes/origin/android-msm-bullhead-3.10-nougat-hwbinder                remotes/origin/android-msm-bullhead-3.10-nougat-mr0.5                remotes/origin/android-msm-bullhead-3.10-nougat-mr0.6                remotes/origin/android-msm-bullhead-3.10-nougat-mr1                remotes/origin/android-msm-bullhead-3.10-nougat-mr1.1                remotes/origin/android-msm-bullhead-3.10-nougat-mr2                remotes/origin/android-msm-bullhead-3.10-o-mr1-preview1                remotes/origin/android-msm-bullhead-3.10-o-preview-1                remotes/origin/android-msm-bullhead-3.10-o-preview-2                remotes/origin/android-msm-bullhead-3.10-o-preview-3                remotes/origin/android-msm-bullhead-3.10-o-preview-4                remotes/origin/android-msm-bullhead-3.10-oreo-m2                remotes/origin/android-msm-bullhead-3.10-oreo-m3                remotes/origin/android-msm-bullhead-3.10-oreo-m4                remotes/origin/android-msm-bullhead-3.10-oreo-m5                remotes/origin/android-msm-bullhead-3.10-oreo-m6                remotes/origin/android-msm-bullhead-3.10-oreo-m7                remotes/origin/android-msm-bullhead-3.10-oreo-mr1                remotes/origin/android-msm-bullhead-3.10-oreo-mr1-preview2                remotes/origin/android-msm-bullhead-3.10-oreo-r4                remotes/origin/android-msm-bullhead-3.10-oreo-r6

下载代码分支
git checkout remotes/origin/android-msm-bullhead-3.10-nougat-mr2

2. 编译代码

bullhead是arm64设备,所以编译参数要配置arm64
export PATH=$PATH:/mnt/android/android-e-7.1.1-r31/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin:$PATH
export ARCH=arm64
export SUBARCH=arm64
export CROSS_COMPILE=aarch64-linux-android-
make bullhead_defconfig
make -j$(nproc --all)
或者
make -j4

注意, bullhead_defconfig是哪里来的的呢? 参烤下面的link:

https://source.android.com/setup/build/building-kernels

Android 驱动开发---Android Linux 内核编译 Nexus 5x_第1张图片

编译成功的界面:
Android 驱动开发---Android Linux 内核编译 Nexus 5x_第2张图片
检查是否在/arch/arm64/boot 目录生成一个Image.gz-dtb文件

3. 更新到Nexus 5x

查看AOSP的目录:device/lge/bullhead-kernel

Android 驱动开发---Android Linux 内核编译 Nexus 5x
把这里的Image.gz-dtb文件替换成我们上面生成的image文件

然后重新编译AOSP,重新刷机

更新前的kernel version信息:
Android 驱动开发---Android Linux 内核编译 Nexus 5x_第3张图片

更新后开机有个提示:
Android 驱动开发---Android Linux 内核编译 Nexus 5x_第4张图片
然后reset phone

更新后的kernel version信息:
Android 驱动开发---Android Linux 内核编译 Nexus 5x_第5张图片

更多相关文章

  1. Android动态加载外部jar包及jar包中图片等资源文件
  2. 浅谈android中的图片处理之基本绘图(一)
  3. Android 内置图片
  4. Android Fresco图片处理库用法API英文原文文档4(Facebook开源Andr
  5. android 编译内核
  6. Android 实现图片轮播的三种方法
  7. Android 手势滑动,多点触摸放大缩小图片
  8. android 图片压缩的方法

随机推荐

  1. 通过tcpdump抓包使用Wireshark --Android
  2. android adb push 与 adb install的比较(
  3. android 终端基本命令
  4. Android ContentProvider 完全解析及DEMO
  5. Android(安卓)在Java代码中设置style属性
  6. Android 之Service
  7. Android性能优化(2):常见内存泄漏与优化(二
  8. [置顶] 【博客目录】 Start here o(∩_∩
  9. Android中m、mm、mmm、mma、mmma的区别
  10. android listview 使用checkbox问题