Difference between revisions of "Exeda Android"
m (1 revision(s)) |
|||
Line 23: | Line 23: | ||
== Image installation == | == Image installation == | ||
+ | {{Important|The CompuLab Android package for the Exeda can be installed only on the devices with option "Y" assembled}} | ||
+ | |||
* Follow the steps in [[Linux_Development_for_XScale_modules#Networked_Root_Filesystem|Networked Root Filesystem Guide]]. The root filesystem for the Exeda can be extracted from {{filename|images/android.tar.bz2}}. | * Follow the steps in [[Linux_Development_for_XScale_modules#Networked_Root_Filesystem|Networked Root Filesystem Guide]]. The root filesystem for the Exeda can be extracted from {{filename|images/android.tar.bz2}}. | ||
* Disable automatic Android startup for the networked root filesystem: | * Disable automatic Android startup for the networked root filesystem: |
Revision as of 06:58, 16 June 2009
Contents
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.
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
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.
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.
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