5.3.1 Android 源碼整體編譯-基于迅為-IMX6開發(fā)板系列
本節(jié)介紹如何將 Android 源碼如何整體編譯,即將 uboot,kernel,Android 鏡像一次
性全部編譯出來。
注意:編譯 Android 系統(tǒng)必須保證給 Ubuntu 系統(tǒng)提供 4G 以上內(nèi)存。這里“提供 4G 以
上內(nèi)存”的意思,不僅僅是指在 VMware Workstations 虛擬機中設置分配 4G 內(nèi)存。例如,
用戶在編譯的時候,PC 機的內(nèi)存一共是 6G,在虛擬機中設置分配 4G 內(nèi)存,但是在
Windows 系統(tǒng)下,開著 QQ,殺毒軟件,音樂播放器,瀏覽器等等,這樣在 Windows 下占
用的內(nèi)存就快 2G 了,那么虛擬機會自動調(diào)整到只占用 2G,甚至不到 2G 的內(nèi)存,這樣就有
可能沒法編譯通過。
正確的分配內(nèi)存方法是,首先給虛擬機分配 4G 以上內(nèi)存,然后在 Windows 下關掉盡量
多的不必要的應用,關掉盡量多應用的后臺程序。
當然,如果用戶的 PC 是 8G 或者 16G 內(nèi)存,隨意就成。
Android 源碼在光盤目錄“04_源碼_Android4.4 文件系統(tǒng)”下,壓縮包先在 windows
下解壓,解壓之后的到單獨的壓縮包“iTOP-iMX6_android4.4.2_20160904.tar.gz”。
將“iTOP-iMX6_android4.4.2_20160904.tar.gz”壓縮包解壓到 Ubuntu 下(作者在
/home 目錄下新建了 imx6 目錄,將源碼拷貝和解壓到 imx6 目錄下)。注意:這里的解壓命
令,包括后面的解壓命令中,壓縮包的日期可能有點不一樣,用戶要根據(jù)實際情況調(diào)整。
使用解壓命令“tar -vxf iTOP-iMX6_android4.4.2_20160904.tar.gz”解壓源碼,如下
圖所示。
解壓之后得到“iTOP-iMX6_android4.4.2”文件夾,如下圖所示。
使用命令“cd iTOP-iMX6_android4.4.2”,進入“iTOP-iMX6_android4.4.2”目錄,
如下圖所示。
如下圖所示,使用 ls 命令,可以看到編譯腳本“create.sh”。
運行腳本“./create.sh”,可以編譯出適用于商業(yè)級核心板的 uboot,kernel,以及
Android 文件系統(tǒng),如下圖所示。
注意!如果想編譯出適用于工業(yè)級核心板的 uboot,kernel,以及 Android 文件系統(tǒng),
需要在編譯時增加參數(shù)“1GDDR”,即:“./create.sh 1GDDR”,如下圖所示。(1、要支持
工業(yè)級核心板,源碼版本要求為 20180706 及其之后日期版本。2、下面截圖與上述路徑不
同,大家不用考慮,只需知道編譯適用于工業(yè)級核心板源碼時,需要添加參數(shù)即可。其他步驟
完全相同。)
如下圖所示,開始編譯。
編譯完成,如下圖所示。
編譯完成之后,使用命令“cd out/target/product/topeet_6dq”進入鏡像目錄,使用
ls 命令,可以看到生成了“u-boot.bin”,“boot.img”,“system.img”,
“recovery.img”等鏡像文件。
5.3.2 單獨編譯
上一小節(jié)介紹了 Android 的整體編譯,本節(jié)介紹單獨編譯 uboot 和 kernel。
5.3.2.1 單獨編譯 uboot
進入源碼解壓得到的“iTOP-iMX6_android4.4.2/bootable/bootloader/uboot-imx”
目錄,如下圖所示,可以看到腳本“build_uboot.sh”。
如果沒有執(zhí)行過“5.3.1 Android 源碼整體編譯”小節(jié),在運行單獨編譯腳本前,可以對
編譯文件進行配置。
①:適用于商業(yè)級核心板:
進入到“board/freescale/mx6q_topeet/”目錄下,
cp flash_header.S_2G flash_header.S
進入到“include/configs”目錄下,
cp mx6q_topeet.h_2G mx6q_topeet.h
②:適用于工業(yè)級核心板:
進入到“board/freescale/mx6q_topeet/”目錄下,
cp flash_header.S_1G flash_header.S
進入到“include/configs”目錄下,
cp mx6q_topeet.h_1G mx6q_topeet.h
配置完成后,運行腳本“build_uboot.sh”開始單獨編譯 uboot。如下圖所示。
如下圖所示,編譯完成。
如下圖所示,生成了“u-boot.bin”文件,就是 uboot 的鏡像。iTOP-iMX6 開發(fā)板所有
的系統(tǒng)通用一套 uboot 源碼和鏡像。
5.3.2.2 單獨編譯 kernel
單獨編譯 kernel,則進入源碼解壓的到的“iTOP-iMX6_android4.4.2/kernel_imx”目
錄,如下圖所示。
如下圖所示,使用命令“./build_android_kernel.sh ”,開始編譯內(nèi)核。
如下圖所示,開始編譯。
如下圖所示,編譯完成。
如下圖所示,在“iTOP-iMX6_android4.4.2/kernel_imx/arch/arm/boot”目錄下生成
uImage,即是內(nèi)核鏡像。但是 iMX6 的內(nèi)核燒寫文件比較特殊,需要再次經(jīng)過打包壓縮,所
以還需要重新運行整體編譯 android 的腳本“create.sh”,才能生成“boot.img”,
android 編譯一次之后,后面編譯就非常快了。
更多內(nèi)容關注迅為電子
|