Please note that this Page is deprecated. The support for FastModels are available as part of the Vexpress Builds.The 13.01 release for Vexpress is available here. Please follow the instructions under the RTSM tab

Android on Fastmodels

This page describes how to run android on Fastmodels. The current builds run on big.LITTLE architectures and standalone A15 models.The current builds for big.LITTLE are based on the version 2.2 of the reference switcher.

Note: The first boot would take more than 2 hours to reach to GUI on big.LITTLE models if "-C coretile.cache_state_modelled=0" is not added while booting.

Fast Model Setup

For Linaro Developers : Please refer to Flexlm for setting up the fastmodels with license.

Android Setup

Booting Android Prebuilt Images

  • Fetch the prebuilt images:

wget http://snapshots.linaro.org/android/~linaro-android/vexpress-rtsm-ics-gcc46-armlt-stable-open/28/target/product/vexpress_rtsm/boot.tar.bz2
wget http://snapshots.linaro.org/android/~linaro-android/vexpress-rtsm-ics-gcc46-armlt-stable-open/28/target/product/vexpress_rtsm/system.tar.bz2
wget http://snapshots.linaro.org/android/~linaro-android/vexpress-rtsm-ics-gcc46-armlt-stable-open/28/target/product/vexpress_rtsm/userdata.tar.bz2
  • Create an SD card image and extract the bootable image:

bzr branch lp:linaro-image-tools
./linaro-image-tools/linaro-android-media-create --image_file mmc.bin --image_size 2000M --dev vexpress-a9 --system system.tar.bz2 --userdata userdata.tar.bz2 --boot boot.tar.bz2
tar -xvf boot.tar.bz2
  • Run on the big.LITTLE Simulator with semi-hosting:

$(PATH_TO_RTSM)/bin/RTSM_VE_Cortex-A15x1-A7x1 -a coretile.cluster0.*=./boot/img.axf -C motherboard.mmc.p_mmc_file=mmc.bin -C coretile.cache_state_modelled=0  -C coretile.cluster0.cpu0.semihosting-enable=1   -C coretile.cluster0.cpu0.semihosting-cmd_line='--kernel ./boot/zImagewithDT --initrd ./boot/Initrd -- console=ttyAMA mem=512M [email protected] androidboot.console=ttyAMA0 earlyprintk init=/init'
  • Run on the big.LITTLE Simulator without semi-hosting:

$(PATH_TO_RTSM)/bin/RTSM_VE_Cortex-A15x1-A7x1 -a coretile.cluster0.*=boot/img.axf -C motherboard.mmc.p_mmc_file=mmc.bin  -C coretile.cache_state_modelled=0
  • Run on the A15 Simulator with semi-hosting:

$(PATH_TO_RTSM)/bin/RTSM_VE_Cortex-A15x1 boot/linux-system-semi-A15.axf  -C motherboard.mmc.p_mmc_file=./mmc.bin -C cluster.cpu0.semihosting-cmd_line="--kernel ./boot/uImagewithDT --initrd ./boot/Initrd -- console=ttyAMA mem=512M [email protected] androidboot.console=ttyAMA0 earlyprintk init=/init"
  • Run on the A15 Simulator without semi-hosting:

$(PATH_TO_RTSM)/bin/RTSM_VE_Cortex-A15x1 boot/linux-system-A15.axf  -C motherboard.mmc.p_mmc_file=./mmc.bin

Building from Source

The build instruction are available on the android-build page: https://android-build.linaro.org/builds/~linaro-android/vexpress-rtsm-ics-gcc46-armlt-stable-open/

Users could run this script to fetch and build the android source: http://snapshots.linaro.org/android/~linaro-android/vexpress-rtsm-ics-gcc46-armlt-stable-open/4/linaro_android_build_cmds.sh

How to rebuild the kernel image

git clone git://git.linaro.org/people/bhoj/linux-3-arm.git -b android
cd linux-3-arm/
make ARCH=arm vexpress_rtsm_bldev_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage dtbs
cat arch/arm/boot/zImage arch/arm/boot/vexpress-v2p-ca15-rtsm.dtb > zImage
cd ../

To build the bootable image one would need Initrd image. Download the boot tarball from latest build from the "Downloads" link on the page: http://snapshots.linaro.org/android/~linaro-android/vexpress-rtsm-ics-gcc46-armlt-stable-open/

tar -xvf boot.tar.bz2

git clone git://git.linaro.org/people/dmart/arm-virt-bl.git -b linaro-next
cd arm-virt-bl/bootwrapper/
cp ../../boot/Initrd payload/fsimg
cp ../../linux-3-arm/zImage payload/kernel
export KCMD="console=ttyAMA0 mem=512M [email protected] earlyprintk init=/init"
make  CROSS_COMPILE=arm-linux-gnueabi- USE_INITRD=yes USE_PREBUILT_KERNEL=yes

Testing the switcher

The commands listed below switches little cluster.One can configure system to switch between the cluster using "bl-agitator -s <TIME in MSEC>"

insmod system/modules/arm-bl-cpufreq.ko
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
bl-agitator -f little

Networking and ADB support

adb works over network. Refer to section 2.13 in Fast Model user guide on setting network and follow the instructions from https://wiki.linaro.org/Platform/Android/SetupAdbOverTcp

Alternative Way to get ADB working (thanks to Chris Redpath): boot the device with "-C motherboard.hostbridge.userNetworking=true -C motherboard.hostbridge.userNetPorts="5555=6565" -C motherboard.smsc_91c111.enabled=1" option.

On the guest OS:

# The android fast model's I've tried don't allow ADB to function if you enable eth0 as shown below 
# for the FM 7.0 build 4 release.
netcfg eth0 up
netcfg eth0 dhcp
stop adbd
setprop service.adb.tcp.port 6565
start adbd

On the host Machine:

export ADBHOST=
adb kill-server;adb shell

if you get the error "device offline" try to connect again using adb shell.

Disable PM

Suspend needs to be avoided if you want to run any apps. Android tries to suspend and only the mouse would be working and GUI won't respond to that. To avoid this situation,one has to run Disablesuspend script from command line over adb .

Adding Extra packages to the image

For people who want to add native binaries or some packages one could mount the system partition and copy the binaries or use adb.

mkdir mnt/
sudo mount -t ext4 -o loop,offset=138412032 mmc.bin mnt/


Platform/Android/AndroidOnFastModels (last modified 2013-02-26 07:22:33)