在 Ubuntu 18.04 上構建編譯環境,按照NXP官方手册 Android User's Guide说明,安裝Linux所需要開發套件及下載android R 程式碼。
建議下載程式碼及要構建映像檔的作業系統預留450GB磁碟空間及記憶體16GB。以及相關的編譯步驟如下:
一、設置 Linux作業系統的編輯環境
二、 下載 NXP 官方i.MX 發佈的Android 套件包
安裝Linux作業系統所需的軟體套件後,在NXP官方網站下載 i.MX android 發佈的套件包。從以下的下載網站,選擇”Build Sources”中的”install Sources Package”的選項的i.MX Android 原始開發包。
下載連接如下:
Android OS for i.MX Applications Processors | NXP Semiconductors
- 複製下載的imx-android-11.0.0_2.2.0.tar.gz 軟體包到linux的編譯環境進行解壓縮:
- $ cd ~ // 安装路徑自行選擇
- $ tar xzvf imx-android-11.0.0_2.2.0.tar.gz
- 獲取 repo 文件
- $ mkdir ~/bin
- $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
- $ chmod a+x ~/bin/repo
- $ export PATH=${PATH}:~/bin
- $ source ~/ imx-android-11.0.0_2.2.0/imx_android_setup.sh
完成後會自動生成 android_build 資料夾,所有下載的 Android 源代碼都在這個資料夾中。
- 編譯 Android 映像檔
a. 首先為U-Boot準備構建環境。
這一步是強制性的,因為在 AOSP 代碼庫中沒有 GCC 交叉編譯工具鏈。
使用自安裝 GCC 交叉編譯工具鏈的方法。在arm Developer GNU-A Downloads下載GCC版本, 建議下載8.3 版本。
可以下載《gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz》或
“gcc-arm-8.3-2019.03-x86_64-aarch64- linux-gnu.tar.xz”。第一個專用於編譯裸機程序,第二個也可以用來編譯應用程序。
文件解壓到本地磁盤上的路徑中,例如“/opt/”。導出一個名為的變量
“AARCH64_GCC_CROSS_COMPILE”指向工具如下:
前面的命令可以添加到“/etc/profile”中。當主機啟動“AARCH64_GCC_CROSS_COMPILE”是設置好就可以直接使用了。
編譯的命令如下:
1. $ cd android_build
2. android_build$ source build/envsetup.sh
執行Android lunch命令, 設置為產生i.MX 8M mini EVK映像檔使用 userdebug編譯類型。
$lunch evk_8mm-userdebug
4. 執行 imx-make.sh 腳本,產生所須的映像檔。
$ ./imx-make.sh -j4 2>&1 | tee build-log.txt
第一次編譯需要花費較長的時間,編譯完成後的log信息會保存在build-log.txt 文件裡,檢查是否有錯誤(error)出現。
如果沒有錯誤會出現 #### build completed successfully (07:02:26 (hh:mm:ss)) #### 的訊息。
編譯生成的映像檔所在目錄 android_build/out/target/product/evk_8mm$ ,可用”ls”查看所生成的檔案如下。
四、 單獨編譯 U-Boot、img、Kernel、dtbo.img的指令
如有只是修改Bootloader及 Kernel 的源代碼,可以單獨編譯出各別的映像檔。
- 單獨編譯 U-Boot
使用如下命令來單獨編譯生成 u-boot.imx 映像檔文件。
- $ cd ${MY_ANDROID}
- $ {MY_ANDROID} $ source build/envsetup.sh
- $ lunch evk_8mm-userdebug
- $ ./imx-make.sh bootloader -j4
映像檔生成路徑:android_build/out/target/product/evk_8mm
使用如下命令來單獨編譯生成 boot.img 映像檔文件。
- $ source build/envsetup.sh
- $ lunch evk_8mm-userdebug
- $ make bootimage -j4
映像檔生成路徑生成路径:android_build/out/target/product/ evk_8mm
- 單獨編譯 kernel
使用如下命令來單獨編譯生成 kernel 映像檔文件
- $ cd ${MY_ANDROID}
- $ source build/envsetup.sh
- $ lunch evk_8mm-userdebug
- $ ./imx-make.sh kernel -c -j4
映像檔生成路徑: /android_build/out/target/product/evk_8mm/obj/KERNEL_OBJ'
- 單獨編譯dtbo img
使用如下命令來單獨編譯生成 dtbo.img 映像檔文件
$ lunch evk_8mm-userdebug $ ./imx-make.sh dtboimage -j4
- $ source build/envsetup.sh
- $ ./imx-make.sh dtboimage -j4
映像檔生成路徑:android_build/out/target/product evk_8mm
五、燒錄Android 映像檔到eMMC- 使用 UUU 工具燒錄(emmc)
使用 UUU 工具燒錄步驟如下:
- 改變i.Mx8M Mini LPDDR4 開發板 SW1101(boot mode) 到 1010xxxxxx (1-10 bit) 進入下載模式。
- 給開發板上電,連接 USB TpyeC(下載串口)及 USB Debug 埠 到 PC 上 USB 埠。
- 依所使用的作業系統,選擇Android UUU 腳本檔。以Windows 作業系統為列,選用fastboot_imx_flashall.bat,相關參數可參考如下說明。
另外建議可到https://github.com/NXPmicro/mfgtools/releases 下新版本uuu 執行檔,以免版本過舊無法支援。
例如依據需求,在燒錄時帶入不同的參數。如 “-d” mipi-panel會載入官方支援的MIPI Panel device tree映像檔。
燒錄完成全部映檔後,只要硬體有接上MIPI Panel 就可在開機後看到面板顯示Android 畫面。
- 所有android 映像檔的描述如下:
Android 系統所需的映像檔如下:
- 以Windows 作業系統為例,在Windows作業系統上,以管理員模式打開命令行界面模式(Command Mode)。執行如下的命令燒錄映像檔到eMMC。
$.\uuu_imx_android_flash.bat -f imx8mm -a -e
燒錄完成如下所示。
6下載完成後,關掉電源,將SW1101(boot mode) 改到0110110010 (1-10 bit) 進入eMMC 開機模式。透過Debug port 的 Terminal 確定開機正常。
六、參考文件:
- Android_Quick_Start_Guide.pdf
- Android_User's_Guide.pdf
評論