IoTGateway/BSP/Android/ABV2 User Guide iMX6
Introduction
From ESS-WIKI
Jump to: navigation, search
Android BSP User Guide for iMX6 series
Getting Started
Prerequisites
All operations in this guide are based on Ubuntu 12.04 LTS 64bit only.
First please install Ubuntu 12.04 LTS 64bit with minimum 2GB memory.
Example ISO: ubuntu-12.04.1-desktop-amd64.iso
To install required packages
Please login and perform the following commands:
sudo apt-get install ssh
sudo apt-get install ia32-libs libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 zlib1g-dev:i386 uuid-dev:i386 liblzo2-dev:i386 \
libncurses5-dev:i386
sudo apt-get install bison build-essential ccache dpkg flex gcc g++ gettext intltool libarchive-zip-perl libfreetype6-dev libdbus-glib-1-dev liborbit2-dev libxml2-dev libx11-dev libgtk2.0-dev liblzo2-2 libtool m4 patch rpm tcl uboot-mkimage uuid zlib1g zlib1g-dev git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 gcc-4.6 g++-4.6 cpp-4.6 gcc-4.6-multilib uuid-dev liblzo2-dev uboot-mkimage libarchive-zip-perl wget git-core unzip texinfo gawk diffstat build-essential chrpath sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc xterm
sudo apt-get install libncurses5-dev:i386 liblzo2-dev:i386 uuid-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
tar zcvf ~/usr_lib_i386-linux-gnu_for_Building_Android_KK.tar.gz /usr/lib/i386-linux-gnu/{libuuid.a,libuuid.so,liblzo2.so,liblzo2.a}
sudo apt-get install uuid-dev liblzo2-dev
sudo tar zxvf ~/usr_lib_i386-linux-gnu_for_Building_Android_KK.tar.gz -C /
To install JDK
Please download jdk-6u45-linux-x64.bin manually, put it into ~/FILES/ and perform the following:
cd /usr/lib
sudo ~/FILES/jdk-6u45-linux-x64.bin
sudo mkdir jvm
cd jvm
sudo mv ../jdk1.6.0_45 .
cd jdk1.6.0_45/
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_45/jre/bin/java 2
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_45/bin/javac 2
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_45/bin/jar 2
sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.0_45/bin/javap 2
sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_45/bin/javadoc 2
sudo update-alternatives --config javap
sudo update-alternatives --config javadoc
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config jar
cd ~/
echo "JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45" | sudo tee -a /etc/environment
Introducing BSP
The BSP contains cross toolchain, Linux kernel source code, u-boot source code, Android root file system and some scripts.
It consists of three top folders: android, image, scripts.
Overview
android/prebuilt/gcc/linux-x86/host/: cross toolchainbootable/bootloader/uboot-imx/: u-boot source codekernel_imx/: linux kernel source codedevice/fsl/: Android device related settingsfsl-proprietary/: modules & firmware (e.g. WiFi, GPU)processors/imx/: HAL (Hardware Abstraction Layer)image/: all built imagesscripts/: simplify building process (refer to 1.4 & 1.5)
Naming Rule
It consists of model name + "AB" + version number.
Example: 4410ABV2080 → "4410" = RSB-4410, "AB" = Android BSP, "V2080" = version 2.080.
Other model names:
3420→ ROM-34205420→ ROM-54207420→ ROM-7420DS31→ UBC-DS31U220→ UBC-220
Conventions
${BOARD}: target board (rsb_4410 / rom_3420 / rom_5420 / rom_7420 / ubc_ds31 / ubc_200)${BSPHOME}: BSP root directory${SD_DEVICE}: SD card device in Ubuntu (e.g. /dev/sdf)${MMC_DEVICE}: on-board eMMC device in Android (e.g. /dev/block/mmcblk0)
Debug console / serial console: serial terminal program (minicom, putty, teraterm) at 115200 8N1.
Terminal console: terminal program (gnome-terminal, xfce4-terminal).
Build Instructions
To build everything
Engineer version (default):
cd ${BSPHOME}/scripts
./mk_android.sh ${BOARD}
User version:
cd ${BSPHOME}/scripts
./mk_android.sh ${BOARD} user
To build boot loader
cd ${BSPHOME}/scripts
./mk_bootloader.sh ${BOARD}
To build boot image
cd ${BSPHOME}/scripts
./mk_bootimg.sh ${BOARD}
To build recovery image
cd ${BSPHOME}/scripts
./mk_recoveryimg.sh ${BOARD}
To build system image
cd ${BSPHOME}/scripts
./mk_systemimg.sh ${BOARD}
To build OTA image
cd ${BSPHOME}/scripts
./mk_otapackage.sh ${BOARD}
The OTA package update.zip is located in:
../android/out/target/product/${BOARD}/
Boot up from SD card or eMMC
To create a bootable SD card
cd ${BSPHOME}/scripts
./mksd-android.sh ${SD_DEVICE}
To transfer whole system to onboard eMMC
Boot from SD card then run:
cd /data/mkimage/scripts
sh ./mksd-android.sh ${MMC_DEVICE}
Remove SD card, then target board can boot from onboard eMMC.
Software Functionality
Serial Port Test
Serial Port Setup
-
Click "Serial Port"

-
Click "Setup"

-
Select device (e.g. ttymxc1)
-
Select baudrate (e.g. 115200)
Console Test
- Open serial console, click "Console".

Type This is a test. 123456789ABCDEF → message shows up.
Send "MESSAGE from Android" → message shows in console.
Loopback Test
- Plug loopback into COM2, click "Loopback".

Send01010101 Test
- Open serial console, click "Send01010101".
Character "U" (01010101) shows continuously.

Display Output Option
Single HDMI Display
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
Single VGA Display
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=lcd,1920x1080M@60,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
Single LVDS Display
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=ldb,1024x768M@60,bpp=24 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
Dual Display (HDMI + VGA)
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:dev=lcd,1920x1080M@60,bpp=32 video=mxcfb2:off video=mxcfb3:off fbmem=28M,28M androidboot.processors=freescale'
saveenv
reset
Network Setup
Wi-Fi
-
Open "Settings", turn Wi-Fi on.

-
Choose ESSID (ex: Testing), enter password.


-
Authenticating / connecting / obtaining IP...



-
Connected

Ethernet
-
"Settings" → "Ethernet configuration".

-
Open Ethernet, configure DHCP or static.


To update system
-
Build OTA package (ref 1.4.6).
-
Copy
update.zipto SD card, insert. -
"Settings" → "About tablet" → "Addition system updates".

-
System reboots for updating.

System Recovery
Refer to 1.5.1 & 1.5.2 to create bootable SD card and transfer system to eMMC.
To install JDK
Please download jdk-6u45-linux-x64.bin manually, put it into ~/FILES/ and perform the following:
cd /usr/lib
sudo ~/FILES/jdk-6u45-linux-x64.bin
sudo mkdir jvm
cd jvm
sudo mv ../jdk1.6.0_45 .
cd jdk1.6.0_45/
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_45/jre/bin/java 2
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_45/bin/javac 2
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_45/bin/jar 2
sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.0_45/bin/javap 2
sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_45/bin/javadoc 2
sudo update-alternatives --config javap
sudo update-alternatives --config javadoc
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config jar
cd ~/
echo "JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45" | sudo tee -a /etc/environment
cd /usr/lib
sudo ~/FILES/jdk-6u45-linux-x64.bin
sudo mkdir jvm
cd jvm
sudo mv ../jdk1.6.0_45 .
cd jdk1.6.0_45/
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_45/jre/bin/java 2
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_45/bin/javac 2
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_45/bin/jar 2
sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.0_45/bin/javap 2
sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_45/bin/javadoc 2
sudo update-alternatives --config javap
sudo update-alternatives --config javadoc
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config jar
cd ~/
echo "JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45" | sudo tee -a /etc/environment
Introducing BSP
The BSP contains cross toolchain, Linux kernel source code, u-boot source code, Android root file system and some scripts.
It consists of three top folders: android, image, scripts.
Overview
android/prebuilt/gcc/linux-x86/host/: cross toolchainbootable/bootloader/uboot-imx/: u-boot source codekernel_imx/: linux kernel source codedevice/fsl/: Android device related settingsfsl-proprietary/: modules & firmware (e.g. WiFi, GPU)processors/imx/: HAL (Hardware Abstraction Layer)image/: all built imagesscripts/: simplify building process (refer to 1.4 & 1.5)
Naming Rule
It consists of model name + "AB" + version number.
Example: 4410ABV2080 → "4410" = RSB-4410, "AB" = Android BSP, "V2080" = version 2.080.
Other model names:
3420→ ROM-34205420→ ROM-54207420→ ROM-7420DS31→ UBC-DS31U220→ UBC-220
Conventions
${BOARD}: target board (rsb_4410 / rom_3420 / rom_5420 / rom_7420 / ubc_ds31 / ubc_200)${BSPHOME}: BSP root directory${SD_DEVICE}: SD card device in Ubuntu (e.g. /dev/sdf)${MMC_DEVICE}: on-board eMMC device in Android (e.g. /dev/block/mmcblk0)
Debug console / serial console: serial terminal program (minicom, putty, teraterm) at 115200 8N1.
Terminal console: terminal program (gnome-terminal, xfce4-terminal).
Build Instructions
To build everything
Engineer version (default):
cd ${BSPHOME}/scripts
./mk_android.sh ${BOARD}
User version:
cd ${BSPHOME}/scripts
./mk_android.sh ${BOARD} user
To build boot loader
cd ${BSPHOME}/scripts
./mk_bootloader.sh ${BOARD}
To build boot image
cd ${BSPHOME}/scripts
./mk_bootimg.sh ${BOARD}
To build recovery image
cd ${BSPHOME}/scripts
./mk_recoveryimg.sh ${BOARD}
To build system image
cd ${BSPHOME}/scripts
./mk_systemimg.sh ${BOARD}
To build OTA image
cd ${BSPHOME}/scripts
./mk_otapackage.sh ${BOARD}
The OTA package update.zip is located in:
../android/out/target/product/${BOARD}/
Boot up from SD card or eMMC
To create a bootable SD card
cd ${BSPHOME}/scripts
./mksd-android.sh ${SD_DEVICE}
To transfer whole system to onboard eMMC
Boot from SD card then run:
cd /data/mkimage/scripts
sh ./mksd-android.sh ${MMC_DEVICE}
Remove SD card, then target board can boot from onboard eMMC.
Software Functionality
Serial Port Test
Serial Port Setup
-
Click "Serial Port"

-
Click "Setup"

-
Select device (e.g. ttymxc1)
-
Select baudrate (e.g. 115200)
Console Test
- Open serial console, click "Console".

Type This is a test. 123456789ABCDEF → message shows up.
Send "MESSAGE from Android" → message shows in console.
Loopback Test
- Plug loopback into COM2, click "Loopback".

Send01010101 Test
- Open serial console, click "Send01010101".
Character "U" (01010101) shows continuously.

Display Output Option
Single HDMI Display
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
Single VGA Display
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=lcd,1920x1080M@60,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
Single LVDS Display
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=ldb,1024x768M@60,bpp=24 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
Dual Display (HDMI + VGA)
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:dev=lcd,1920x1080M@60,bpp=32 video=mxcfb2:off video=mxcfb3:off fbmem=28M,28M androidboot.processors=freescale'
saveenv
reset
Network Setup
Wi-Fi
-
Open "Settings", turn Wi-Fi on.

-
Choose ESSID (ex: Testing), enter password.


-
Authenticating / connecting / obtaining IP...



-
Connected

Ethernet
-
"Settings" → "Ethernet configuration".

-
Open Ethernet, configure DHCP or static.


To update system
-
Build OTA package (ref 1.4.6).
-
Copy
update.zipto SD card, insert. -
"Settings" → "About tablet" → "Addition system updates".

-
System reboots for updating.

System Recovery
Refer to 1.5.1 & 1.5.2 to create bootable SD card and transfer system to eMMC.
Introducing BSP
The BSP contains cross toolchain, Linux kernel source code, u-boot source code, Android root file system and some scripts.
It consists of three top folders: android, image, scripts.
Overview
android/prebuilt/gcc/linux-x86/host/: cross toolchainbootable/bootloader/uboot-imx/: u-boot source codekernel_imx/: linux kernel source codedevice/fsl/: Android device related settingsfsl-proprietary/: modules & firmware (e.g. WiFi, GPU)processors/imx/: HAL (Hardware Abstraction Layer)image/: all built imagesscripts/: simplify building process (refer to 1.4 & 1.5)
Naming Rule
It consists of model name + "AB" + version number.
Example: 4410ABV2080 → "4410" = RSB-4410, "AB" = Android BSP, "V2080" = version 2.080.
Other model names:
3420→ ROM-34205420→ ROM-54207420→ ROM-7420DS31→ UBC-DS31U220→ UBC-220
Conventions
${BOARD}: target board (rsb_4410 / rom_3420 / rom_5420 / rom_7420 / ubc_ds31 / ubc_200)${BSPHOME}: BSP root directory${SD_DEVICE}: SD card device in Ubuntu (e.g. /dev/sdf)${MMC_DEVICE}: on-board eMMC device in Android (e.g. /dev/block/mmcblk0)
Debug console / serial console: serial terminal program (minicom, putty, teraterm) at 115200 8N1.
Terminal console: terminal program (gnome-terminal, xfce4-terminal).
Build Instructions
To build everything
Engineer version (default):
cd ${BSPHOME}/scripts
./mk_android.sh ${BOARD}
cd ${BSPHOME}/scripts
./mk_android.sh ${BOARD}
User version:
```bash
cd ${BSPHOME}/scripts
./mk_android.sh ${BOARD} user
cd ${BSPHOME}/scripts
./mk_android.sh ${BOARD} user
### To build boot loader
```bash
cd ${BSPHOME}/scripts
./mk_bootloader.sh ${BOARD}
cd ${BSPHOME}/scripts
./mk_bootloader.sh ${BOARD}
### To build boot image
```bash
cd ${BSPHOME}/scripts
./mk_bootimg.sh ${BOARD}
cd ${BSPHOME}/scripts
./mk_bootimg.sh ${BOARD}
### To build recovery image
```bash
cd ${BSPHOME}/scripts
./mk_recoveryimg.sh ${BOARD}
cd ${BSPHOME}/scripts
./mk_recoveryimg.sh ${BOARD}
### To build system image
```bash
cd ${BSPHOME}/scripts
./mk_systemimg.sh ${BOARD}
cd ${BSPHOME}/scripts
./mk_systemimg.sh ${BOARD}
### To build OTA image
```bash
cd ${BSPHOME}/scripts
./mk_otapackage.sh ${BOARD}
``````bash
cd ${BSPHOME}/scripts
./mk_otapackage.sh ${BOARD}
The OTA package update.zip is located in:
../android/out/target/product/${BOARD}/
Boot up from SD card or eMMC
To create a bootable SD card
cd ${BSPHOME}/scripts
./mksd-android.sh ${SD_DEVICE}
cd ${BSPHOME}/scripts
./mksd-android.sh ${SD_DEVICE}
### To transfer whole system to onboard eMMC
Boot from SD card then run:
```bash
cd /data/mkimage/scripts
sh ./mksd-android.sh ${MMC_DEVICE}
``````bash
cd /data/mkimage/scripts
sh ./mksd-android.sh ${MMC_DEVICE}
Remove SD card, then target board can boot from onboard eMMC.
Software Functionality
Serial Port Test
Serial Port Setup
-
Click "Serial Port"

-
Click "Setup"

-
Select device (e.g. ttymxc1)
-
Select baudrate (e.g. 115200)
Console Test
- Open serial console, click "Console".

Type This is a test. 123456789ABCDEF → message shows up.
Send "MESSAGE from Android" → message shows in console.
Loopback Test
- Plug loopback into COM2, click "Loopback".

Send01010101 Test
- Open serial console, click "Send01010101".
Character "U" (01010101) shows continuously.

Display Output Option
Single HDMI Display
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
### Single VGA Display
```console
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=lcd,1920x1080M@60,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=lcd,1920x1080M@60,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
### Single LVDS Display
```console
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=ldb,1024x768M@60,bpp=24 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=ldb,1024x768M@60,bpp=24 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off fbmem=28M androidboot.processors=freescale'
saveenv
reset
### Dual Display (HDMI + VGA)
```console
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:dev=lcd,1920x1080M@60,bpp=32 video=mxcfb2:off video=mxcfb3:off fbmem=28M,28M androidboot.processors=freescale'
saveenv
reset
setenv bootargs 'console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32 video=mxcfb1:dev=lcd,1920x1080M@60,bpp=32 video=mxcfb2:off video=mxcfb3:off fbmem=28M,28M androidboot.processors=freescale'
saveenv
reset
## Network Setup
### Wi-Fi
1. Open "Settings", turn Wi-Fi on.

2. Choose ESSID (ex: Testing), enter password.


3. Authenticating / connecting / obtaining IP...



4. Connected

### Ethernet
1. "Settings" → "Ethernet configuration".

2. Open Ethernet, configure DHCP or static.


## To update system
1. Build OTA package (ref 1.4.6).
2. Copy `update.zip` to SD card, insert.
3. "Settings" → "About tablet" → "Addition system updates".

4. System reboots for updating.

# System Recovery
Refer to **1.5.1** & **1.5.2** to create bootable SD card and transfer system to eMMC.
---