一、概述
談論嵌入式系統的開發環境,不得不提起近年來相當實用的 Yocto 建構工具。此工具擁有極為靈活的平臺擴展性,廣泛的軟體套件與社群支持、多平臺支援整合性,能夠滿足開發者特定需求和多種熱門的嵌入式系統架設,已成為當今頂尖的架構工具。然而,Android 開發環境亦有自生原生的建構工具,而本章節就是要帶領讀者快速應用 Android 開源工具來快速佈署恩智浦 NXP i.MX8 系列的開發環境,透過此博文即可輕鬆實現任何有關 i.MX8 的環境架設 !!
若讀者想要更快速進入到 NXP 平臺的實作中,可以至官方網站下載官方發行的 Android 映像檔(Image)。
Android OS for i.MX Applications Processors | NXP Semiconductors
?
?
?
二、快速環境架設
1.? Android BSP 必要軟體安裝
(1) 更新套件 :?
$ sudo apt-get upgrade
(2) 安裝必要套件 :
$ sudo apt-get install uuid uuid-dev zlib1g-dev liblz1 liblz-dev liblzo2-2 liblzo2-dev lzop u-boot-tools mtd-utils android-sdk-libsparse-utils device-tree-compiler gdisk m4 bison-doc bison flex make libssl-dev gcc-multilib libgnutls28-dev swig liblz4-tool libdw-dev dwarves bc cpio tar lz4 rsync ninja-build clang libelf-dev build-essential libncurses5
(3) 下載 GCC 交叉編譯工具 : 下載連結
$ mkdir _gcc
$ cd _gcc
$ sudo tar -xvJf gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf.tar.xz
各版本對應的 Uboot / GCC 版本 :
由於網站編輯表格不易,故以圖片取代 ! 若想複製請點選此連結
(4) 下載 Clang 編譯器架構 :
$ cd < root / anywhere >
$ mkdir -p _clang/prebuilt-android-clang
$ sudo git clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86 _clang/prebuilt-android-clang
$ cd _clang/prebuilt-android-clang
$ sudo git checkout d20e409261d6ad80a0c29ac2055bf5c3bb996ef4
(5) 下載 Android Kernel Build Tools 工具 :
$ cd < root / anywhere >
$ mkdir -p _android_kernel_tool/prebuilt-android-kernel-build-tools
$ git clone https://android.googlesource.com/kernel/prebuilts/build-tools _android_kernel_tool/prebuilt-android-kernel-build-tools
$ cd _android_kernel_tool/prebuilt-android-kernel-build-tools
$ sudo git checkout e3f6a8c059b94f30f7184a7d335876f8a13a2366
(6) 設定 Git 帳號 :
$ git config --global user.name "user name"
$ git config --global user.email "user.name@wpi-group.com"
綠色字體須自行更新為相應的字串,例如 : user name 須改為 weilly.li
(7) 設置 repo環境 :
$ cd ~
$ mkdir ~/bin
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~ /bin/repo
$ export PATH=~/bin:$PATH
?
2.? Android BSP 編譯開發環境
本篇將使用 最新版本 與 NXP i.MX 8M Plus 平臺來演示如何『架設 Android BSP 環境』。 讀者僅需要準備一臺電腦以及容量保留 500GB以上的 Ubuntu OS 20.02 系統,並跟著下列步驟,即可輕鬆架設編譯環境以及產生映像檔(Image)。
(1) ?建立資料夾,並移動至該資料夾中 :
$ cd <root/anywhere>
$ mkdir <Android BSP Project>
$ cd <Android BSP Project>
?
(2) 下載套件 imx-android-13.0.0_2.2.0.tar.gz 至 <Android BSP Project> 中,並進行解壓縮:
$ cp xzvf imx-android-13.0.0_2.2.0.tar.gz <Android BSP Project>
$ tar xzvf imx-android-13.0.0_2.2.0.tar.gz
請至 官方網站 點選 「 Install Source Package 」下載檔案
?
由於網站編輯表格不易,故以圖片取代 ! 若想複製請點選此連結
(3) 下載 Android BSP 相關套件 :
$ cd imx-android-13.0.0_2.2.0
$ source imx_android_setup.sh
?運行畫面 :?
?
(4) Android BSP 環境設定 :
$ cd android_build
$ export AARCH64_GCC_CROSS_COMPILE=/bsp/_gcc/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/aarch64-none-elf-
$ export CLANG_PATH=/bsp/_clang/prebuilt-android-clang
$ export PATH=/bsp/_android_kernel_tool/prebuilt-android-kernel-build-tools/linux-x86/bin:$PATH
$ source build/envsetup.sh
?
(5) Android BSP 編譯 :
$ lunch evk_8mp-userdebug
$./imx-make.sh -j4 2>&1 | tee build-log.txt
其他平臺設置方式 :?
由於網站編輯表格不易,故以圖片取代 ! 若想複製請點選此連結
?
?詳細資訊,請參考來源出處Android_User's_Guide之 5.1 章節 (+)
?
其他模式設置方式 :
由於網站編輯表格不易,故以圖片取代 ! 若想複製請點選此連結
?
?
運行畫面 :
編譯生成的映像檔所在目錄 android_build/out/target/product/evk_8mp
?
3.? Android BSP 燒錄方式
燒錄映像檔(Image) 至 NXP 嵌入式的平臺方法有很多種,建議主要有三種方式,分別為 Linux 指令燒錄方式、UUU 燒錄軟體、第三方燒錄軟體。 然而, Android OS 只能使用 Linux 指令燒錄方式 與 UUU 的方式進行燒錄,本文章範例皆以 SD Card 的燒錄方式為主,若欲了解其他儲存裝置,請參考 UUU 的操作方式。
燒錄前,請確認 Boot Switch 開關撥片位置是否正確。如下圖,若欲使用 eMMC 方式開機則須設置至 0010 ,反之 SD Card 方式開機則須設定至 0011。
?
?
(1) Linux 指令
$ ls /dev/sd*
●?燒錄 Image 檔至 SD Card 中 :
sudo ${MY_ANDROID}/device/nxp/common/tools/imx-sdcard-partition.sh -f <soc_name> /dev/sdX
?由於網站編輯表格不易,故以圖片取代 ! 若想複製請點選此連結
(2) UUU 燒錄軟體
● 請開啟 PowerShell 輸入下列指令,將相關檔案移動至資料夾中 :
$ scp -P 10001 -r weilly@10.20.7.3: <Android BSP Project>/out/target/product/evk_8mp/*.img .
$ scp -P 10001 -r weilly@10.20.7.3: <Android BSP Project>/out/target/product/evk_8mp/*.bin .
$ scp -P 10001 -r weilly@10.20.7.3: <Android BSP Project>/out/target/product/evk_8mp/*.bat .
$ scp -P 10001 -r weilly@10.20.7.3: <Android BSP Project>/out/target/product/evk_8mp/*.imx .
?若無此檔案,請至官方網站下載 Demo Image
?
● 請先至 NXP github 下載最新的 UUU 1.5.141.exe 工具,並移動至映像檔資料夾中。
https://github.com/nxp-imx/mfgtools/releases
?
● 請將 Boot Switch 切換至 Serial Download 模式,並以 USB Type-C 將 EVK 與 PC 端連結後。即可開啟電源,輸入下列指令確認是否有順利連接至 PC 端 :
.\uuu.exe -lsusb
PS :?詳細?Boot Switch模式切換,請參考 i.MX_Linux_Users_Guide 4.5.11 章節
裝置連接成功? :?
Connected Known USB Devucs
Path Chip Pro Vid Pid BdVersion
==============================================
1:18 FB: 0x1FC9 0x0152 0x0223
?
● 燒錄 Image 檔至 SD Card 中 :
$ .\uuu_imx_android_flash.bat -f imx8mp -a -e -t sd
燒錄完成後,請將??Boot Switch 切換至 SD Card 模式
透過此方式亦可燒錄至 emmc , qspi , spl 等儲存空間,更多細節可以參考 【ATU Book-i.MX8系列】 UUU(Universal Update Utility)
??
?4.??運行 Android OS
?依上述步驟,就是製作完成一張專屬於 Android OS 的 SD Card . 最後僅需要將 SD Card 、螢幕與 HDMI 連接至開發板,並開啟電源後,等待數秒後,即可看到以下畫面 !
?
?
順帶一提,將 Micro USB 傳輸線連接至開發板後,並搭配 Putty 或 Telent 等虛擬化終端機軟體,即可進入到 EVK 的系統中進行操作。
evk_8mp:/ ls
bin dev odm_dlkm sys
bugreports etc oem system
cache init postinstall system_dlkm
config init.environ.rc proc system_ext
d linkerconfig product vendor
data metadata sdcard vendor_dlkm
?
??
?三、參考文件
[2] i.MX 8 Series Applications Processors Multicore Arm? Cortex? Processors
[3] NXP Document - i.MX Yocto Project User's Guide.pdf
[4] Welcome to the Yocto Project Documentation
[5] NXP Document - i.MX Linux Release Note
如有任何相關 OS 技術問題,歡迎至博文底下留言提問 !!
接下來還會分享更多 OS 的技術文章 !!敬請期待 【ATU Book-i.MX8系列 - OS】 !!
參考來源