IoTGateway/BSP/Android/User Guide 11.0.0 For i.MX8

From ESS-WIKI
Jump to: navigation, search

Android BSP Version

Android 11.0.0

Kernel 5.10.72

Build Environment on Host

Currently, we adopt Docker as build environment.

You can get the latest version of advrisc/u18.04-rk3399abv10 Docker image for developing Rockchip RK3399 and rk3568 projects.

Docker command:

docker pull advrisc/u18.04-rk3399abv10:latest;

Run Docker example

Step1 Run docker container (example)

docker run --privileged -it --name android_R11 -v /home/your-name/myandroid:/home/adv/BSP:rw advrisc/u18.04-rk3399abv10 /bin/bash

Step2 In container, change the user. (example)

$ sudo chown adv:adv BSP

Getting Android Source Code

$ cd ~/BSP
$ mkdir bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ./bin/repo
$ mkdir imx8_android_R11
$ cd imx8_android_R11 
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
$ git config --global http.postBuffer 52428800000
$ git config --global http.maxRequestBuffer 100M
$ git config --global core.compression 0
$ ../bin/repo init -u https://dev.azure.com/AIM-Linux/RISC-IMX-Android11/_git/android-manifest -b android-11.0.0_2.6.0 -m default.xml
------If you want to get the latest code, please use default.xml------
$ ~/bin/repo sync


 

 

Getting Prebuilts  (must download)

Baidu:prebuilts.tar.gz Key: 1234    DropBox: prebuilts.tar.gz

Exit docker and copy the file to /home/your-name/myandroid
$ cp prebuilts.tar.gz /home/your-name/myandroid/imx8_android_R11/android

In container and Unzip file
$ docker attach android_R11
$ tar zxvf ~/BSP/imx8_android_R11/android/prebuilts.tar.gz

Compile all

i.MX Android platform needs some preparation for the first time when building the images. The image build steps are as follows:

Prepare the build environment for U-Boot and Linux kernel.
    This step is mandatory because there is no GCC cross-compile tool chain in the one in AOSP codebase.An approach is provided to use the self-installed GCC cross-compile tool chain.
   a. Download the tool chain for the A-profile architecture on arm Developer GNU-A Downloads page. It is recommended to use the 8.3 version for this release. You can download gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz or gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz . The first one is dedicated for compiling bare-metal programs, and the second one can also be used to compile the application programs.
  b. Decompress the file into a path on local disk, for example, to /opt/ . Export a variable named AARCH64_GCC_CROSS_COMPILE to point to the tool as follows:

gcc-arm-8.3

# if "gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz" is used
$ sudo tar -xvJf gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz -C /opt
$ export AARCH64_GCC_CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-aarch64-elf/bin/aarch64-
elf-
# if "gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz" is used
$ sudo tar -xvJf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C /opt
$ export AARCH64_GCC_CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-
gnu/bin/aarch64-linux-gnu-

The clang used to compile Linux kernel needs to be a newer version. Perform the following steps to set the clang to be used
to compile Linux kernel:

$ sudo git clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86 /opt/
prebuilt-android-clang -b master-kernel-build-2021
$ cd /opt/prebuilt-android-clang
$ sudo git checkout bceb7274dda5bb587a5473058bd9f52e678dde98
$ export CLANG_PATH=/opt/prebuilt-android-clang

The preceding export commands can be added to /etc/profile . When the host boots up, AARCH64_GCC_CROSS_COMPILE
and CLANG_PATH are set and can be directly used.

Build U-boot

Build U-boot

$ ./imx-make.sh bootloader -j8

Build Kernel

Build Kernel

$ ./imx-make.sh kernel -j8

Build RSB-3720 Android project

$ source build/envsetup.sh
$ lunch rsb3720_a1-userdebug 
$./imx-make.sh -j12

Build RSB-5722 Android project

$ source build/envsetup.sh
$ lunch rom5722_a1-userdebug
$./imx-make.sh -j12

All image in

out/target/product/${Project_Name}/

The common image files are listed below:

boot.img
dtbo-imx8mp.img
partition-table-28GB.img
partition-table.img super.img 
u-boot-imx8mp.imx 
vbmeta.img 
vbmeta-imx8mp.img 
vendor_boot.img 
vendor.img

How to flash images to SDCard

$ cd out/target/product/${Project_Name}/
$ sudo ./imx-sdcard-partition.sh -f imx8mp /dev/sdx

How to flash images to eMMC

 Note: put the image folder and script(imx-emmc-partition.sh) into /data folder (in the system)
$ sudo ./imx-emmc-partition.sh -f imx8mp /dev/block/mmcblk2