1. 程式人生 > >iTOP4412開發板Android4.4原始碼編譯分享

iTOP4412開發板Android4.4原始碼編譯分享

注意:本小節,介紹的原始碼指的是“20170803”以及後續新增的原始碼。

5.4.1.1 uboot 的編譯

Android4.4.4 對應 uboot 的原始碼,編譯器,引數配置,編譯指令碼以及編譯引數和

Android4.0.3 的 uboot 全部一模一樣。

5.4.1.2 Linux 核心的編譯

原始碼目錄

網盤下載 Android4.4.4 對應的原始碼。在網盤“iTOP-4412 開發板系統原始碼及映象(其

他)”→“android_4.4.4 原始碼及映象”目錄下,在最新日期的資料夾下的“iTop4412-

android4.4-kernel_xxxx.tar.gz”壓縮包,xxxx 表示日期。

編譯器

Android4.4.4 對應核心的編譯器和 Android4.0.3 的核心編譯器一模一樣。

引數配置

核心的編譯是組合式配置檔案,基本的配置檔名是“config_for_android_XX_YY”,

XX,YY 表示用下表所示的引數替代。POP 和 SCP 分別對應核心板的 POP 和 SCP;elite 和

super 分別對應精英版和全能版;no_wifi 引數僅用於精英版,表示不支援 WiFi 模組(如果沒

有 WiFI 模組,那麼就需要配置為 no_wifi)。

如上表所示,如果需要 Android4.4.4 支援 WiFi,則需要配置對應的引數,不支援 WiFi

也需要進行對應配置。

編譯生成核心映象舉例

和 Android4.0.3 核心一樣,如果需要編譯對應核心板的核心,首先使用 cp 命令將對應

的配置檔案覆蓋掉“.config”。

如果使用者要使用 5 寸螢幕,先要參考使用者手冊“5.5 支援 5 寸屏的核心補丁檔案”,給內

核打補丁,然後使用命令“vim .config”,在檔案中搜索關鍵詞

“CONFIG_TOUCHSCREEN_GT9XX=y”,在“CONFIG_TOUCHSCREEN_GT9XX=y”之

後新增一行“CONFIG_TOPEET_LCD5X0=y”,新增完成之後,如下圖所示。如果使用者不使

用 5 寸螢幕,則可以跳過這一步。

最後執行編譯命令“make zImage”。

生成核心映象的目錄也是“arch”-->“arm”-->“boot”。

例如:開發板是精英版,POP 核心板,需要支援 WiFi 模組,那麼預設檔案就需要配置為

“config_for_android_pop_elite”。

開發板是精英版,POP 核心板,不支援 WiFi 模組,那麼預設檔案就需要配置為

“config_for_android_pop_no_wifi”。

5.4.1.3 Android4.4.4 的編譯

更新環境 javap

編譯 Android4.4.4,還缺少一個“javap”命令,使用命令:

“update-alternatives --install "/usr/bin/javap" "javap"

"/usr/lib/jvm/jdk1.6.0_43/bin/javap" 1”

更新一下,如下圖所示。

核心以及 Android 原始碼路徑

編譯 Android4.4 原始碼的時候,一定要注意核心原始碼的目錄。在和 Android 原始碼目錄

“ iTop4412_KK4.4_git ”的同一級目錄下,將核心原始碼解壓。

例如,如下圖所示,作者將核心原始碼和 Android4.4 原始碼壓縮包放到“/home/iTOP-

4412-Android4.4”目錄下,解壓“iTop4412_KK4.4_git_xxx.tar.gz”和“iTop4412-

android4.4-kernel_xxx.tar.gz”,Android 原始碼解壓之後得到“iTop4412_KK4.4_git”和

“kernel”目錄。“iTop4412_KK4.4_git”目錄下就是 Android 原始碼,

“kernel/iTop4412_Kernel_3.0”目錄下就是核心原始碼。

另外在編譯 Android4.4 之前,必須成功編譯 Android4.4 對應的核心。

然後進入 Android4.4.4 原始碼解壓後得到資料夾“iTop4412_KK4.4_git”中,使用命令

“./build_android.sh”,執行一鍵編譯指令碼,開始編譯 Android4.4.4。注意:編譯

Android4.4.4 必須保證給 Ubuntu 系統提供 3G 以上記憶體。這裡“提供 3G 以上記憶體”的意

思,不僅僅是指在 VMware Workstations 虛擬機器中設定分配 3G 記憶體。例如,使用者在編譯的

時候,PC 機的記憶體一共是 4G,在虛擬機器中設定分配 3G 記憶體,但是在 Windows 系統下,開

著 QQ,防毒軟體,音樂播放器,瀏覽器等等,這樣在 Windows 下佔用的記憶體就快 2G 了,

那麼虛擬機器會自動調整到只佔用 2G,甚至不到 2G 的記憶體,這樣是沒法編譯通過的。

正確的分配記憶體方法是,首先給虛擬機器分配 3G 以上記憶體,然後在 Windows 下關掉儘量

多的不必要的應用,關掉儘量多應用的後臺程式。

當然,如果使用者的 PC 是 8G 或者 16G 記憶體,隨意就成。

編譯完成之後,在資料夾“iTop4412_KK4.4_git/out/target/product/smdk4x12”中,

生成映象“system.img”和“ramdisk-uboot.img”。

這裡還需要注意的是,Android4.4.4 原始碼需要佔用較大的空間,使用者需要確認有足夠的

空間才能夠成功編譯。Android4.0.3 編譯完成後總共大約佔用 18G 的空間,Android4.4.4 編

譯完成後總共佔用大約 36G 的空間。

使用者完全按照步驟編譯錯誤,可以使用“df -l”檢視一下碟符剩餘空間還剩下多少,如果

是已使用 100%,