Android 驅動開發(fā)---Android Linux 內核編譯 Nexus 5x
本文以Nexus 5X為例浦译,講解Android Linux 驅動開發(fā)的準備
驅動開發(fā)了解:
Android對硬件的支持分成了兩層决记,
一層放在用戶空間(User?Space)蓖议,
一層放在內核空間(Kernel?Space)久妆,
其中啤覆,硬件抽象層運行在用戶空間妓蛮,而Linux?內核驅動程序運行在內核空間把敞。
所以Android的開放代碼分兩層AOSP和Linux內核
1. Linux內核的下載
下載Linux內核需要確定自己的開發(fā)目標,具體的手機和型號或者開發(fā)版的系統(tǒng)支持信息纽疟。
以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
編譯成功的界面:
檢查是否在/arch/arm64/boot 目錄生成一個Image.gz-dtb文件
3. 更新到Nexus 5x
查看AOSP的目錄:device/lge/bullhead-kernel
把這里的Image.gz-dtb文件替換成我們上面生成的image文件
然后重新編譯AOSP,重新刷機
更新前的kernel version信息:
更新后開機有個提示:
然后reset phone
更新后的kernel version信息:
????????????????????????????????????????????????END