Skip to main content

IoTGateway/BSP/Android/Android BSP User Guide 6.0.1 2.1.0

Introduction

Android BSP Version

Android 6.0.1_2.1.0

Introduction

This document describes how to work with the RISC and ELAA Android 6.0.1 Board Support Package (BSP) release. The BSP includes bootloaders; the Android Linux kernel and root file system; and tools and documentation to ease development, deployment, and execution of Android-based systems.

Setup Ubuntu Host Computer

Required equipment and software

  • Ubuntu 14.04 LTS 64bit for Android build host OS
  • 80G bytes free disk spaces for build image

Install Ubuntu

  • IMPORTANT! You must be able to log in as root or use sudo to have root permissions during the installation.

Go to http://releases.ubuntu.com/14.04/ and download 64-bit PC (AMD64) desktop image: http://releases.ubuntu.com/14.04/ubuntu-14.04.3-desktop-amd64.iso for the installation.

Install docker and Use docker

Please use docker environment to compiler Android 6.0.1_2.1.0

Android 6.0.1_2.1.0 Docker

Image Repository : advrisc/u14.04-imx6abv4

Image Tag : 20160825

Reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/Docker

To pull ubuntu 12.04 image from Docker Hub


$ docker run --name imx6ABV6011 -it advrisc/u14.04-imx6abv4:20160825 /bin/bash

or

$ docker run -it --name android_6 -v /home/bsp/myandroid:/home/adv/BSP:rw advrisc/u14.04-imx6abv4:20160825 /bin/bash





## Getting Android Source Code

### Related version information:

- Android 6.0.1_2.1.0
- kernel Yocto-2.0
- U-Boot Yocto-2.0

*`*Step1 : To pull down the Android source tree to your working directory from the repositories as specified in the default manifest*`*
```$ git config --global user.name "Your Name"

$ git config --global user.email you@example.com


``````$ git config --global user.name "Your Name"

$ git config --global user.email you@example.com


```$ git config --global user.name "Your Name" 

$ git config --global user.email you@example.com



$ git config --global user.email you@example.com





```$ mkdir myandroid

$ mkdir bin

$ cd myandroid/

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ../bin/repo

$ chmod a+x ../bin/repo

$ ../bin/repo init -u https://github.com/ADVANTECH-Corp/android-manifest.git -b m6.0.1_2.1.0-ga -m release_version.xml

$ ../bin/repo sync=== The release_version.xml --> example: imx6ABV6011.xml please refer : https://github.com/ADVANTECH-Corp/android-manifest/tree/m6.0.1_2.1.0-ga ====

*Step2 : Patch to Android M6.0.1_2.1.0*


$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid



$ mkdir bin

$ cd myandroid/

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ../bin/repo

$ chmod a+x ../bin/repo

$ ../bin/repo init -u https://github.com/ADVANTECH-Corp/android-manifest.git -b m6.0.1_2.1.0-ga -m release_version.xml

$ ../bin/repo sync=== The release_version.xml --> example: imx6ABV6011.xml please refer : https://github.com/ADVANTECH-Corp/android-manifest/tree/m6.0.1_2.1.0-ga ====

*Step2 : Patch to Android M6.0.1_2.1.0*


$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid


*`*Step2 : Patch to Android M6.0.1_2.1.0*`*
```$ cd myandroid/bootable/bootloader/uboot-imx/

$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid



$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid



```$ mkdir myandroid

$ mkdir bin

$ cd myandroid/

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ../bin/repo

$ chmod a+x ../bin/repo

$ ../bin/repo init -u https://github.com/ADVANTECH-Corp/android-manifest.git -b m6.0.1_2.1.0-ga -m release_version.xml

$ ../bin/repo sync=== The release_version.xml --> example: imx6ABV6011.xml please refer : https://github.com/ADVANTECH-Corp/android-manifest/tree/m6.0.1_2.1.0-ga ====

*Step2 : Patch to Android M6.0.1_2.1.0*


$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid



$ mkdir bin

$ cd myandroid/

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ../bin/repo

$ chmod a+x ../bin/repo

$ ../bin/repo init -u https://github.com/ADVANTECH-Corp/android-manifest.git -b m6.0.1_2.1.0-ga -m release_version.xml

$ ../bin/repo sync=== The release_version.xml --> example: imx6ABV6011.xml please refer : https://github.com/ADVANTECH-Corp/android-manifest/tree/m6.0.1_2.1.0-ga ====

*Step2 : Patch to Android M6.0.1_2.1.0*


$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid


*Step2 : Patch to Android M6.0.1_2.1.0*


$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid


``````$ cd myandroid/bootable/bootloader/uboot-imx/

$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid


*Step2 : Patch to Android M6.0.1_2.1.0*


$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid


*Step2 : Patch to Android M6.0.1_2.1.0*


$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid


``````$ cd myandroid/bootable/bootloader/uboot-imx/

$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid


```$ cd myandroid/bootable/bootloader/uboot-imx/

$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid



$ patch -p1 <../../../patches_android_6.0.1/6001-Uboot_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid/kernel_imx/

$ patch -p1 <../patches_android_6.0.1/6001-Linux_Yocto_4.1.15_1.2.0-to-Android_M6.0.1_2.1.0.patch

$ cd myandroid





## Building Android 6.0.1_2.1.0 image for SD card

If your product is ROM-3420A1, the product name is rom_3420_a1

$PRODUCT = rom_3420_a1

If your product is ROM-7421A1, the product name is rom_7421_a1

$PRODUCT = rom_7421_a1

If your product is RSB-4411A1, the product name is rsb_4411_a1

$PRODUCT = rsb_4411_a1

If your product is RSB-4410A1, the product name is rsb_4410_a1

$PRODUCT = rsb_4410_a1

If your product is RSB-6410A2, the product name is rsb_6410_a2

$PRODUCT = rsb_6410_a2

If your product is ROM-5420 B1, the product name is rom_5420_b1

$PRODUCT = rom_5420_b1

If your product is UBC-220 A1, the product name is ubc_220_a1

$PRODUCT = ubc_220_a1
### Build Instructions

Set the $JAVA_HOME environment variable
```$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

Set up the environment for building. This only configures the current terminal.

Execute the Android lunch command. In this example, the setup is for the production image of Advantech RISC platfrom device with user type.  If you devices is RSB4411,  you will be send command " lunch rsb_4411_a1-user

*To build boot loader*

Perform the following command in terminal console

The two files, u-boot_crc.bin & u-boot_crc.bin.crc, will be located in directory, ./out/target/product/product_name

*To build boot image*

Perform the following command in terminal console

*To build system image*

Perform the following command in terminal console

simg2img is a tool that converts a sparse system image to a raw system image on a Linux host PC and is located in myandroid/out/host/linux-x86/bin/simg2img.   (Before the imx6ABV6004 version need to do )

$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img

Porting your device  reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/BSP/Android/How_to_do_about_first_porting

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mk_sd_emmc_script   (imx6ABV6004 version)

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mksd_script.git   (imx6ABV6005 version and affter the version)

Flash SD card

Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



``````$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

Set up the environment for building. This only configures the current terminal.
```$ source build/envsetup.sh

Execute the Android lunch command. In this example, the setup is for the production image of Advantech RISC platfrom device with user type.  If you devices is RSB4411,  you will be send command " lunch rsb_4411_a1-user
```$ lunch $PRODUCT-user

*`*To build boot loader*`*

Perform the following command in terminal console
```$ make -j4 bootloader

The two files, u-boot_crc.bin & u-boot_crc.bin.crc, will be located in directory, ./out/target/product/product_name

*`*To build boot image*`*

Perform the following command in terminal console
```$ make -j4 bootimage

*`*To build system image*`*

Perform the following command in terminal console
```$ make -j4 systemimage

simg2img is a tool that converts a sparse system image to a raw system image on a Linux host PC and is located in myandroid/out/host/linux-x86/bin/simg2img.   (Before the imx6ABV6004 version need to do )

```$ out/host/linux-x86/bin/simg2img out/target/product/$PRODUCT/system.img out/target/product/$PRODUCT/system_raw.img
$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img
$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img

Porting your device  reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/BSP/Android/How_to_do_about_first_porting

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mk_sd_emmc_script   (imx6ABV6004 version)

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mksd_script.git   (imx6ABV6005 version and affter the version)

Flash SD card

Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Porting your device  reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/BSP/Android/How_to_do_about_first_porting

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mk_sd_emmc_script   (imx6ABV6004 version)

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mksd_script.git   (imx6ABV6005 version and affter the version)

Flash SD card

Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



HDMI Display



HDMI Display





```$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

Set up the environment for building. This only configures the current terminal.
```$ source build/envsetup.sh

Execute the Android lunch command. In this example, the setup is for the production image of Advantech RISC platfrom device with user type.  If you devices is RSB4411,  you will be send command " lunch rsb_4411_a1-user
```$ lunch $PRODUCT-user

*`*To build boot loader*`*

Perform the following command in terminal console
```$ make -j4 bootloader

The two files, u-boot_crc.bin & u-boot_crc.bin.crc, will be located in directory, ./out/target/product/product_name

*`*To build boot image*`*

Perform the following command in terminal console
```$ make -j4 bootimage

*`*To build system image*`*

Perform the following command in terminal console
```$ make -j4 systemimage

simg2img is a tool that converts a sparse system image to a raw system image on a Linux host PC and is located in myandroid/out/host/linux-x86/bin/simg2img.   (Before the imx6ABV6004 version need to do )

```$ out/host/linux-x86/bin/simg2img out/target/product/$PRODUCT/system.img out/target/product/$PRODUCT/system_raw.img
$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img
$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img

Porting your device  reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/BSP/Android/How_to_do_about_first_porting

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mk_sd_emmc_script   (imx6ABV6004 version)

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mksd_script.git   (imx6ABV6005 version and affter the version)

Flash SD card

Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



``````$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/

Set up the environment for building. This only configures the current terminal.

``````$ source build/envsetup.sh
``````$ source build/envsetup.sh

Execute the Android lunch command. In this example, the setup is for the production image of Advantech RISC platfrom device with user type.  If you devices is RSB4411,  you will be send command " lunch rsb_4411_a1-user

``````$ lunch $PRODUCT-user
``````$ lunch $PRODUCT-user

*To build boot loader*

Perform the following command in terminal console

``````$ make -j4 bootloader
``````$ make -j4 bootloader

The two files, u-boot_crc.bin & u-boot_crc.bin.crc, will be located in directory, ./out/target/product/product_name

*To build boot image*

Perform the following command in terminal console

``````$ make -j4 bootimage
``````$ make -j4 bootimage

*To build system image*

Perform the following command in terminal console

``````$ make -j4 systemimage
``````$ make -j4 systemimage

simg2img is a tool that converts a sparse system image to a raw system image on a Linux host PC and is located in myandroid/out/host/linux-x86/bin/simg2img.   (Before the imx6ABV6004 version need to do )

$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img
$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img
$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img

Porting your device  reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/BSP/Android/How_to_do_about_first_porting

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mk_sd_emmc_script   (imx6ABV6004 version)

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mksd_script.git   (imx6ABV6005 version and affter the version)

Flash SD card

Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img
$ mv out/target/product/$PRODUCT/system_raw.img out/target/product/$PRODUCT/system.img

Porting your device  reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/BSP/Android/How_to_do_about_first_porting

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mk_sd_emmc_script   (imx6ABV6004 version)

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mksd_script.git   (imx6ABV6005 version and affter the version)

Flash SD card

Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Porting your device  reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/BSP/Android/How_to_do_about_first_porting

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mk_sd_emmc_script   (imx6ABV6004 version)

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mksd_script.git   (imx6ABV6005 version and affter the version)

Flash SD card

Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



HDMI Display



HDMI Display





Porting your device  reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/BSP/Android/How_to_do_about_first_porting

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mk_sd_emmc_script   (imx6ABV6004 version)

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mksd_script.git   (imx6ABV6005 version and affter the version)

Flash SD card

Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Porting your device  reference: http://ess-wiki.advantech.com.tw/view/IoTGateway/BSP/Android/How_to_do_about_first_porting

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mk_sd_emmc_script   (imx6ABV6004 version)

# The script below can be used to partition a SD card  reference: https://github.com/ADVANTECH-Corp/android_mksd_script.git   (imx6ABV6005 version and affter the version)

Flash SD card

Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



HDMI Display



HDMI Display





Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



HDMI Display



HDMI Display





Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



Flash EMMC

*To EMMC*

When system boot up, please send command.

HDMI Display



HDMI Display



HDMI Display



HDMI Display





HDMI Display



HDMI Display



HDMI Display



HDMI Display





HDMI Display




### HDMI Display

```setenv bootargs console=ttymxc0,115200 init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.processors=freescale cma=384M androidboot.selinux=disabled





```setenv bootargs console=ttymxc0,115200 init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.processors=freescale cma=384M androidboot.selinux=disabled







VGA Display

```setenv bootargs console=ttymxc0,115200 init=/init video=mxcfb0:dev=lcd,1920x1080M@60,bpp=32video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.processors=freescale cma=384M androidboot.selinux=disabled





```setenv bootargs console=ttymxc0,115200 init=/init video=mxcfb0:dev=lcd,1920x1080M@60,bpp=32video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.processors=freescale cma=384M androidboot.selinux=disabled







lvds Display

```setenv bootargs console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,800x600@60,bpp=32video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.processors=freescale cma=384M androidboot.selinux=disabled





```setenv bootargs console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,800x600@60,bpp=32video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.processors=freescale cma=384M androidboot.selinux=disabled