Exeda Android

From Compulab Mediawiki
Jump to: navigation, search

Introduction

Android is a set of software for mobile devices, developed by Open Handset Alliance. The CompuLab Android package for Exeda includes NAND flash image, Linux kernel configuration and source code patches, and patches and configuration files used to build the Android image.


Admolition important.png The CompuLab Android package for the Exeda is based on Android 1.0 and it is provided "as-is", without maintenance or technical support

Package contents

images

  • android.jffs2 - ready to run image for Exeda NAND flash
  • android.tar.bz2 - archive of root file system used for JFFS2 image creation

kernel

  • kernel-2.6.25-exeda.jffs2 - JFFS2 image of Linux kernel 2.6.25 with Android and Exeda patches
  • linux-2.6.25-exeda.patch - cumulative patch vs. Linux kernel 2.6.25 including modifications and additions made by the Android team as well as support for the Exeda peripherals
  • uImage-2.6.25-exeda - kernel image that can be used for network boot

patches

This directory contains a set of patches required to build Android for the Exeda. The patches were generated vs. "android-1.0" release. There is a patch per Android subproject, each patch named by subproject path inside the Android tree with / replaced by _. For instance the patch for packages/apps/Settings is named packages_apps_Settings.patch

The only exception is

  • exeda_build.tar.bz2 - additions to Android build system required to build Android for the Exeda

Image installation

Admolition important.png The CompuLab Android package for the Exeda can be installed only on the devices with option "Y" assembled
  • Follow the steps in Networked Root Filesystem Guide. The root filesystem for the Exeda can be extracted from images/android.tar.bz2.
  • Disable automatic Android startup for the networked root filesystem:
rm /path/to/exeda/root/etc/rc5.d/S99zzzandroid
  • Make sure to power off the Exeda
  • Connect Exeda Ethernet port to your local Ethernet
  • Connect your host PC to the Exeda via a null modem cable supplied with the Eval Kit.
  • Start terminal emulation software on your PC using the COM port to which the null modem is connected. Set baud rate to 115200 bps, 8 bit per frame, 1 stop bit, no parity, no flow control.
  • Power up the Exeda. U-Boot will start and you will get the command prompt in your terminal program.
Admolition note.png If the boot settings of your Exeda are set to load the operating system, you may need to press and hold ^C while turning the Exeda on, in order to get command prompt.
  • You can use U-boot dhcp command to obtain IP address or manually set ipaddr and serverip environment variables:
> setenv serverip <host ip address>
> setenv ipaddr <Exeda ip address>
> saveenv
  • Next environment settings are passed to Linux Kernel and are needed for NFS root:
> setenv bootargs "root=/dev/nfs nfsroot=<your host ip>:/path/to/rootfs console=ttyS0,115200 ip=dhcp"
  • Use the following U-boot command to boot Linux on Eexeda:
> tftp a0100000 uImage && bootm
  • After the image is loaded you will get Linux login prompt. Login as root with password 111111 into the system.
  • Copy the kernel and Android jffs2 images from the Android package to NFS share, so you can access them from Exeda.
  • Now you can install kernel and filesystem images to the NAND flash from NFS share using standard Linux MTD utilities (flash_eraseall, nandwrite).
  • After the installation procces completed successfully, U-Boot on Exeda needs the following environment variables set prior to booting from NAND flash:
> setenv boot_mode "android"
> setenv nand_mode "on"
> setenv bootargs "root=/dev/mtdblock1 rootfstype=jffs2 console=ttyS0,115200"
> setenv bootcmd "fsload && bootm"
> saveenv
  • Now you can reboot the Exeda and it will boot Android from the internal NAND flash.
Admolition note.png First boot takes relatively much time because the system performs a lot of one-time initialization tasks

Building Android for Exeda

Linux kernel

  • Download Linux kernel source from preferred mirror
  • Unpack it to some directory
  • Apply the Exeda patchset
  • Set environment variables ARCH, and CROSS_COMPILE so that kernel build system cross compile the kernel
  • Build the kernel
mkdir /home/development/exeda/kernel
cd /home/development/exeda/kernel
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.tar.bz2
tar xjf linux-2.6.25.tar.bz2
cd linux-2.6.25
cat /path/to/exeda-android/kernel/linux-2.6.25-exeda.patch | patch -p1
export ARCH=arm
export CROSS_COMPILE=arm-linux-
make exeda_defconfig
make menuconfig
make uImage

In the above example, the Linux kernel image (uImage) will be created in /home/development/exeda/kernel/linux-2.6.25/arch/arm/boot

Android

  • Setup Android working environment as described at Get Source page of Android Open Source Project website
  • Unpack exeda_build.tar.bz2 to the Android working directory
  • Apply the Exeda patchset
  • Select Exeda platform using choosecombo command
  • Build Android
cd ~/mydroid
tar xjf /path/to/exeda-android/pacthes exeda_build.tar.bz2
for file in /path/to/exeda-android/pacthes/*patch; do
    prj=`basename $file .patch | sed -e 's|_|/|g'`
    cd $prj
    cat $file | patch -p1
    cd -
done
choosecombo  false release exeda
make

Known problems and limitations

  • Off-line battery charging is not implemented
  • Resume from suspended state may fail
  • SD card hotplug sometimes fails
  • Wifi connection to secure networks sometimes fails

See also