Android 驅動開發(fā)---Android Linux 內核編譯 Nexus 5x

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


bullhead_defconfig來源圖示

編譯成功的界面:


編譯成功的界面

檢查是否在/arch/arm64/boot 目錄生成一個Image.gz-dtb文件

3. 更新到Nexus 5x

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

編譯好的image文件所在

把這里的Image.gz-dtb文件替換成我們上面生成的image文件

然后重新編譯AOSP,重新刷機

更新前的kernel version信息:


更新前的kernel version信息

更新后開機有個提示:


更新后可能開機會有個提示

然后reset phone

更新后的kernel version信息:


更新后的kernel version信息

????????????????????????????????????????????????END

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末顷锰,一起剝皮案震驚了整個濱河市柬赐,隨后出現的幾起案子,更是在濱河造成了極大的恐慌官紫,老刑警劉巖肛宋,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異束世,居然都是意外死亡酝陈,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門毁涉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沉帮,“玉大人,你說我怎么就攤上這事贫堰∧潞荆” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵其屏,是天一觀的道長喇勋。 經常有香客問我,道長偎行,這世上最難降的妖魔是什么川背? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮蛤袒,結果婚禮上熄云,老公的妹妹穿的比我還像新娘。我一直安慰自己妙真,他們只是感情好缴允,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著珍德,像睡著了一般癌椿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菱阵,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音缩功,去河邊找鬼晴及。 笑死,一個胖子當著我的面吹牛嫡锌,可吹牛的內容都是我干的虑稼。 我是一名探鬼主播琳钉,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛛倦!你這毒婦竟也來了歌懒?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤溯壶,失蹤者是張志新(化名)和其女友劉穎及皂,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體且改,經...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡验烧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了又跛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碍拆。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖慨蓝,靈堂內的尸體忽然破棺而出感混,到底是詐尸還是另有隱情,我是刑警寧澤礼烈,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布弧满,位于F島的核電站,受9級特大地震影響济丘,放射性物質發(fā)生泄漏谱秽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一摹迷、第九天 我趴在偏房一處隱蔽的房頂上張望疟赊。 院中可真熱鬧,春花似錦峡碉、人聲如沸近哟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吉执。三九已至,卻和暖如春地来,著一層夾襖步出監(jiān)牢的瞬間戳玫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工未斑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留咕宿,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像府阀,于是被迫代替她去往敵國和親缆镣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容