AM335X EVM-SK Android Devkit Guide

'''  Content is no longer maintained and is being kept for reference only! ''' = AM335X EVM-SK Android Devkit Guide  =

'''  Content is no longer maintained and is being kept for reference only! '''



EVM-sk is a development board, equipped with ARM Cortex A8 processor, SGX graphics processor, sensors, and Wireless connectivity.

This platform is well suited as a development platform for mid-end android solutions. This document contains instructions to:
 * Install the release
 * Set up the hardware
 * Use the pre-built binaries in the package
 * Run Android on the supported platforms
 * Set up the Android debugger “adb” with the hardware platform
 * Install and execute Android (out of market) applications on hardware platforms

Installation
This section explains how to prepare a micro-sd card for booting android on the EVM-sk. The details on booting the EVM-sk and evaluating Android is also explained.

Software Host Requirements
The host and target software dependencies and requirements are described below.

Host PC requirements
If you are an Android application developer or would like to use Android SDK Tools then refer to Android SDK Requirements for Host PC requirements.

To evaluate this release we recommend you to have a Linux "Ubuntu 10.04 or above" Host machine, See Ubuntu Linux installation notes

Setup
This section gives the instructions to quickly prepare an SD Card image and get an experience of AM335x EVM-SK platforms/devices.

Getting Prebuilt Images
EVM-sk Prebuilt from Prebuilt images can be obtained from
 * AM335X EVM-SK Release Page,

Preparation of SD card
Connect a Micro SD card (Atleast 2GB size and Class 4) via a USB card reader on an Ubuntu Machine From a terminal, type the below commands, $ tar -jxvf TI_Android_EVM-sk.tar.bz2 $ cd TI_Android_EVM-sk

The tree structure for pre-built image directory should be as: .  `--  |-- START_HERE |-- Boot_Images |  |-- MLO |  |-- u-boot.img |  |-- uEnv.txt |  `-- uImage |-- Filesystem |  `-- rootfs.tar.bz2 |-- Media_Clips |  |-- Audio |  |-- Images |  `-- Video |-- README.txt `-- mkmmc-android.sh

$ sudo ./mkmmc-android.sh /dev/sd&lt;device&gt; The above step prepares the SD Card with three partitions.


 * 1) boot - Boot Images (Boot Loaders, Boot Script and Kernel)
 * 2) rootfs - Filesystem (Android ICS 4.0.3)
 * 3) data - Media Clips (Audio, Video and Images)

Now this card can be used to boot the EVM-sk

Hardware setup
Connect MicroB USB Cable, Ethernet Cable and 5V DC Power to the EVM-sk and have it powered. Windows or Linux Host can be used to connect and evaluate EVM-sk. We prefer to use Ubuntu &gt; 10.04 as the host to connect to EVM-sk.

Getting serial console
Serial console is provided via micro-usb cable connection between the EVM-sk and the Host. To establish a connection the serial console enter the following commands on the linux console:

$ sudo modprobe ftdi_sio vendor=0x0403 product=0xa6d0 $ minicom -D /dev/`dmesg | grep FTDI | grep "now attached to" | tail -n 1 | awk '{ print $NF }'`

Powering on to Android Terminal
Put the Micro SD card to the slot on the EVM-sk. Press the power button(SW5) for 3 sec that is given down of the user LEDs.

Allow the boot loader to run.Kernel boots up and Android shell is activated. Wait till Android init to start the zygote thread. See the below message appearing on the shell. warning: `zygote' uses 32-bit capabilities (legacy support in use)

Booting the platform
Booting over MMC using uEnv.txt

NOTE: - If the board has bootargs configured already, then the board will not boot for Android automatically, - It is suggested to either delete the bootargs or use the following commands on u-boot prompt through UART console.

#&gt; mmc init #&gt; fatload mmc 0 0x82000000 uEnv.txt #&gt; source 0x82000000

Boot arguments
Boot arguments for EVM-sk are as follows

bootargs=console=ttyO0,115200n8 androidboot.console=ttyO0 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait init=/init ip=off bootcmd=mmc rescan ; fatload mmc 0 81000000 uImage ; bootm 81000000 uenvcmd=boot

Configure Boot Arguments
The boot script (uEnv.txt) helps the board to boot automatically (Provided the NAND environment is empty).


 * Create a boot script file named uEnv.txt file with following content:

NOTE: You can edit uEnv.txt to update bootargs and bootcmd.

Android Home Screen
After the first boot, the user will see an unlocked Android home screen. On subsequent boot, a locked screen will be displayed. User needs to unlock the screen via TouchScreen by dragging the lock tab accross the screen. Once the screen is unlocked, the user can navigate using the icons on the right side of the display. Shortcuts are provided for Browser, RowboPERF benchmarks etc.



Keypad mappings
The below table lists the keypad mappings to Android UI functionality



Multimedia Experience

 * Using browser and android applications



Swipe across the screen to access more applications and widgets.


 * Image browsing and media playback

View Image
NOTE: The Android pre-built filesystem includes few images from http://www.freephotobank.org/main.php, they are marked under Creative Commons License. Thanks to Freephotobank.

Select "App Launcher" -&gt; "Gallery" -&gt; "Images". Click any thumbnail to view the image.

Double click the image to zoom in/out. Slide the image to view next image.



Play Video
Select "App Launcher" -&gt; "Gallery" -&gt; "Video". Click any thumbnail to play the video.

You can use the UI controls to Pause/Play/Seek the video. To stop playback and exit press the back key button.



Play Music
Select "App Launcher" -&gt; "Music" -&gt; "&lt;Artist&gt;" -&gt; "&lt;song-name&gt;" to experience the music.



Control Volume

 * Select "App Launcher" -&gt; "Settings" -&gt; "Sound" -&gt; "Volumes"

Enable Video Frame Per Second logs in Logcat
To print the FPS in logcat dump, type this command on the console before starting playback:

# setprop debug.video.showfps 1

To disable the prints, type:

# setprop debug.video.showfps 0

Rowboperf and 3D graphics applications
RowboPERF is comprehensive set of banchmarks and Demos. Select the rowboperf icon and get into the app directory. For more information on RowboPERF, please check RowboPERF User Guide

Browser Experience


NOTE:Set the time and date

Crank Demo applications
The demos provided were generated by Crank Software's Storyboard Suite. It provides UI Designers and Embedded Engineers a GUI development tool and embedded runtime to rapidly create rich animated user interfaces. Storyboard provides a drag and drop UI development environment that imports content directly from Photoshop and easily exports an Android APK that is completely accelerated through the Android NDK OpenGL ES 2.0 interface.

Storyboard from a single tool and runtime to prototype, develop and deploy embedded user interfaces. For more information or to obtain an evaluation license to the Storyboard suite, contact Crank Software at http://cranksoftware.com/

Storyboard 30 Day Evaluation

http://cranksoftware.com/products/eval.php

Storyboard on Android

http://cranksoftware.com/products/android.php

Storyboard Tutorial - Photoshop to Android APK

http://www.youtube.com/watch?v=xF8dRFvbB8w&feature=plcp

Crank Story-board Demo



Crank Thermostat Demo



Ethernet Configuration
Ethernet is configured by default for DHCP. Use below command to verify Ethernet configuration

# netcfg e.g.  lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00 sit0    DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00 eth0    UP                               172.24.191.26/22  0x00001043 96:cd:df:8b:c6:2b

You can configure ethernet from the Settings menu.




 * Select Ethernet configuration. Here you can enable/disable ethernet and perform any additional configuration.




 * Choose between DHCP and static IP based on your network configuration




 * Optional If you need to set up proxy, configure this from Ethernet proxy settings:



Accelerometer Sensor
This release supports the built-in accelerometer on the EVM-sk. You can check accelerometer functionality in the following ways:

Auto-rotate screen

 * Browse to the "App Launcher" -&gt; "Settings" -&gt; "Display".
 * Enable the "Auto-rotate screen" feature. Ensure the Check box gets ticked.
 * Now hold the device in horizontal or vertical orientation to find the screen getting rotated.



Amazed Game

 * Launch Amazed by browsing to the "App Launcher" -> "Amazed".
 * The game starts. Tap the screen to begin.
 * Hold the device in different orientation to move the ball to the destination and hence test the accelerometer.

Camera Support
Ti Android ICS supports USB camera for EVM-sk

Feature supported:


 * Image Capture


 * 1) Go to application/activity view luncher &gt; open camera
 * 2) Click on camera capture.By default images will get stored at - /sdcard/DCIM

Dual Ethernet
EVM-sk support Dual Ethernet support.
 * 1) Jumper J6 is a eth0
 * 2) Jumper J5 is a eth1

browse to "App Launcher" -&gt; "Settings" -&gt; "Ethernet configuration" -&gt; "Ethernet configuration" -&gt; "Ethernet Devices" and select eth0 browse to "App Launcher" -&gt; "Settings" -&gt; "Ethernet configuration" -&gt; "Ethernet configuration" -&gt; "Ethernet Devices" and select eth1
 * when you connect Ethernet cable in J6 then go
 * when you connect Ethernet cable in J5 then go

Wireless
EVM-sk supports Wi-Fi and Bluetooth on Android.

Enabling Wi-Fi

 * To turn on Wi-Fi, browse to "App Launcher" -&gt; "Settings" -&gt; "Wi-Fi".
 * Enable Wi-Fi by sliding the ON/OFF tab to the ON position and wait for few seconds.
 * The device scans for the available APs and displays them.




 * Connect to desired AP by clicking on its name and enter required details (username/key etc) and click Connect



[ 1270.525207] wl1271: loaded [ 1271.494323] wl1271: firmware booted (Rev 6.3.6.0.79_2) [ 1271.499694] wl1271: Driver version: R4_SP2_03_00 [ 1336.340881] cfg80211: Calling CRDA for country: IN [ 1336.379425] cfg80211: Regulatory domain changed to country: IN [ 1336.385559] cfg80211:    (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 1336.394287] cfg80211:    (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 1336.402160] cfg80211:    (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 1336.410064] cfg80211:    (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 1336.417968] cfg80211:    (5735000 KHz - 5835000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 1340.068145] wl1271: Association completed.
 * The following appears on console
 * when successfully connected, you will see status as connected under the respective AP name

Disabling Wi-Fi
[ 1459.324127] cfg80211: Calling CRDA to update world regulatory domain [ 1459.381622] cfg80211: World regulatory domain updated: [ 1459.386993] cfg80211:    (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 1459.395721] cfg80211:    (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 1459.403991] cfg80211:    (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 1459.412261] cfg80211:    (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 1459.420501] cfg80211:    (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 1459.428741] cfg80211:    (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 1459.438476] wl1271: down
 * To turn off Wi-Fi, browse to "App Launcher" -&gt; "Settings" -&gt; "Wi-Fi".
 * Disable Wi-Fi by sliding the ON/OFF tab to the OFF position.
 * Following message appears on console and the Wi-Fi status is shown as OFF.

Wi-Fi Hostspot (SoftAP)
TI-Android-ICS-4.0.3-DevKit-3.0.1 supports Wi-Fi hostspot (SoftAP) feature with TI WL1271 Wireless module.


 * To turn on Wi-Fi hotspot, browse to "App Launcher" -&gt; "Settings" -&gt; "More..." -&gt; "Portable hotspot"




 * Click "Configure Wi-Fi hotspot" to configure the hotspot settings..






 * Click the checkbox next to "Portable Wi-Fi hotspot" to start hotspot. You will see the message "Tethering or hotspot active" in the notification bar once the hotspot is fully functional.




 * The following screenshot shows the hotspot being detected from another evm.



Wi-Fi Direct
TI-Android-ICS-4.0.3-DevKit-3.0.1 supports Wi-Fi Direct with TI WL1271 Wireless module.


 * To turn on Wi-Fi direct, browse to "App Launcher" -&gt; "Settings" -&gt; "More..."
 * Click checkbox next to "Wi-Fi direct".




 * After Wi-Fi direct is enabled, click "Wi-Fi direct: Set up peer-to-peer connections". This window shows any nearby devices with Wi-Fi direct enabled.



Changing WLAN MAC address
The devices loaded with TI-Android-ICS-4.0.3-DevKit-3.0.1 will have the same MAC address which is encoded in wl1271-nvs.bin file. This may result in Wi-Fi not operating correctly when multiple devices are simultaneously in use. For optimum results, we recommend to modify the MAC address to ensure unique MAC for the devices before use

To change the MAC address, perform the following on the serial console of device:


 * First get the current MAC address for WLAN:

root@android:/ # calibrator get nvs_mac /system/etc/firmware/ti-connectivity/wl1271-nvs.bin


 * Then update the MAC address for WLAN:

root@android:/ # calibrator set nvs_mac /system/etc/firmware/ti-connectivity/wl1271-nvs.bin &lt;MAC Address&gt;

You need to reboot the board after changing the MAC address.

Enabling Bluetooth

 * To turn on Bluetooth, browse to "App Launcher" -&gt; "Settings" -&gt; "Bluetooth".
 * Enable Bluetoth by sliding the ON/OFF tab to the ON position and wait for few seconds.
 * Bluetooth icon appears on taskbar.
 * When BT is enabled the status shows Turning Bluetooth ON and lists out the available Bluetooth devices.




 * Select the desired device to pair with.
 * A popup dialog with pin will appear.




 * Click Pair button to confirm pairing.
 * Verify that the desired device shows the same pin. click OK. And then the device gets listed under the paired devices category.

Disabling Bluetooth

 * To turn off Bluetooth, browse to "App Launcher" -&gt; "Settings" -&gt; "Bluetooth".
 * Disable Bluetooth by sliding the ON/OFF tab to the OFF position.

Bluetooth Object Push profile
Using Bluetooth, it is possible to send / receive files (pictures, media files etc).

Sending files
'Share using Bluetooth' is not enabled by default in the Gallery app. You need to install a third party application like BlueFTP to enable the sharing option. Follow the instructions from http://www.medieval.it/blueftp-android/menu-id-68.html to download BlueFTP


 * browse to "App Launcher" -&gt; "Gallery" -&gt; "Images".
 * Select a picture to share.
 * Click share icon (top bar), select bluetooth from the options
 * select paired BT device to send to.
 * The BT device will prompt to accept. Accept incoming file at the other device.
 * Once download finishes, check file.

Receiving files

 * On paired device (e.g. phone), select send via Bluetooth, click on AM335XEVM.
 * On evm, notification appears about incoming connection.




 * Open the task bar and select "Bluetooth share: Incoming file".




 * A pop up appears asking for confirmation. On popup click Accept.




 * Once download completes, check file.

Bluetooth A2DP
You can listen to Media audio on Bluetooth A2DP headset.


 * Pair A2DP capable bluetooth headset with device. Android uses the stereo headset icon to denote A2DP headset.
 * After pairing succeeds, the status is updated to 'Connected'.




 * Open Music player and play any audio clip.
 * Audio will be heard on the Bluetooth headset.

Bluetooth HID
You can connect to Bluetooth keyboard or mouse.

Bluetooth Keyboard

 * Pair with the Bluetooth keyboard, by providing the suitable pass-code from the keyboard matching to the code shown on the device.
 * After the successful pairing of the keyboard with the device, the keyboard will be listed under the paired devices category.
 * The supported functionality of the paired keyboard can be used on the device.
 * For disconnecting the keyboard from the device, select the keyboard under paired devices category, and agree to disconnect message.





Bluetooth Mouse

 * Pair with the Bluetooth mouse, by providing the suitable pass-code from the device, matching to the supported code of the mouse.
 * After the successful pairing of the mouse with the device, the mouse will be listed under the paired devices category.
 * The supported functionality of the paired mouse can be used on the device.
 * For disconnecting the mouse from the device, select the mouse under paired devices category, and agree to the disconnect message.





Bluetooth AVRCP
You can control Media playback with Media player keys on Bluetooth headset with AVRCP capabilities.

NOTE: The following steps assume Bluetooth A2DP headset with AVRCP.


 * Pair the BT headset
 * The following text appears on the debug serial when the pairing is successfully completed. This confirms that AVRCP feature is registered with android

[ 3291.281250] input: AVRCP as /devices/virtual/input/input4


 * Open Music Player and go to playlist view. Check that there are multiple clips in the playlist.
 * Press the Play/Pause button on the BT headset - The currently queued clip begins playing on the headset.
 * Press the Play/Pause button again on the headset - The currently playing clip is paused.
 * Press the Next button on the headset; the next clip in the playlist begins to play on the headset.
 * Press the Prev button on the headset; the currently playing clip restarts from the beginning.

Power Management
Power management is supported on EVM-sk.

BackLight Control


 * Change of LCD backlights based on Wake Locks and Screen Timeouts
 * LCD back light brightness control from Settings Application

Suspend and Resume


 * Suspending the device to Memory.The following features are supported


 * 1) Suspend by a screen timeout.
 * 2) Prevent Suspend based on Wake Locks.
 * 3) System Resume on (SW3)Key Press or Touch

CPU Freq or Dynamic Voltage Frequency Scaling(DVFS)


 * A PM feature to automatically increase / decrease frequency and drop voltage based on CPU usage.
 * There are four different governors which can be used to control this feature, namely ondemand, performance, powersave and userspace governors.

CPU Idle States


 * There are two deeper power states introduced by CPU Idle namely Wait for interrupt,WFI and DDR Self Refresh.

Enable PM
By default we have disabled PM with the setting "setprop hw.nopm true" in init.rc.

Replace the line with "setprop hw.nopm false" to enable suspend/resume features.

Remove the selection "App Launcher" -&gt; "Settings" -&gt; "Developer options" -&gt; "Stay awake" if selected already.

To go in suspend mode
$ echo usb_connected > sys/power/wake_unlock
 * Release the USB wake lock by Giving the below command


 * wait for screen time out.

To resume from suspend mode

 * Touch the LCD screen for 3 to 4 second OR
 * Press Back Key (SW3)

To set the Screen Timeout to go suspend

 * Select "App Launcher" -&gt; "Settings" -&gt; "Display" -&gt; "Sleep"
 * Select one of the options from the list.

To set set the screen always on preventing suspend

 * Select "App Launcher" -&gt; "Settings" -&gt; "Developer options" -&gt; "Stay awake"

To set Screen Brightness

 * Select "App Launcher" -&gt; "Settings" -&gt; "Display" -&gt; "Brightness"

To set Alarm in Android

 * Select "App Launcher" -&gt; "Clock "
 * Click "Set alarm" -&gt; "Add Alarm". Set the alarm as per requirements.

Device will be woken up from suspend at Alarm Time.

To Disable Power Management

 * Edit init.rc file on the root directory.
 * Set the property hw.nopm to true

This will prevent screen timeout based suspend.

Enabling ondemand frequency governor
The ondemand governor enables DVFS(frequency/OPP) transitions based on CPU load.

#echo ondemand &gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Enabling performance frequency governor
The performance governor keeps the CPU always at the highest frequency.

#echo performance &gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Enabling powersave frequency governor
The powersave governor keeps the CPU always at the lowest frequency.

#echo powersave &gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Enabling userspace frequency governor
Once this governor is enabled, DVFS( frequency) transitions will be manually triggered by a userspace application by using the CPUfreq sysfs interface

#echo userspace &gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

See all the available operating points

#cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

Application can select any of the available frequency from the above

#echo &lt;Desired Frequancy&gt; &gt; /sys/devices/system/cpu/cpu0/cpufreq/ scaling_setspeed

CPU Idle settings
All states of Cpu Idle are enabled by default. System enter deeper states when the cpu is idle. The usage and time count for these different states can be checked via

#cat /sys/devices/system/cpu/cpu0/cpuidle/state*/time #cat /sys/devices/system/cpu/cpu0/cpuidle/state*/usage

To minimize the power consumption in runtime
The maximum power reduction in runtime is achieved when dvfs option is set to “power save”.

Power Consumption Analysis
Please check the power consumption analysis at TI-Android-ICS-4.0.3-DevKit-3.0.1 Performance Benchmark page

Limitations

 * Alarm to wake up the device from suspend will not work since there is no Real Time Clock functional when the device is put into suspend.
 * To wake the device from suspend, the user need to tap the touch the screen a little longer (2 seconds).


 * System never enter "WFI and DDR Self Refresh" cpu idle state since display is always active and preventing this state to enter in runtime.

Prepare file system on network machine (PC/server)
Android filesystem can be mounted over network. Follow the procedure explained below:

$ mkdir /home/workdir/Android_nfs $ cd /home/workdir/Android_nfs $ tar -xjvf ~/rootfs.tar.bz2
 * Extact the android filesystem


 * Change the permission of target rootfs else it will give permission denied errors

$ sudo chmod -R 777 /home/workdir/Android_nfs

Edit /etc/exports file and add following line
 * Export filesystem using NFS

/home/workdir/Android_nfs *(rw,sync,no_subtree_check,no_root_squash)


 * Run exportfs command

$ sudo exportfs -a

Run the following command to restart NFS server
 * Restart the NFS server

On Ubuntu 10.04 machine: $ sudo service nfs-kernel-server restart

Booting over Network Filesystem
Below are the complete bootargs for different boards using NFS:

setenv bootargs 'console=ttyO0,115200n8 androidboot.console=ttyO0 mem=256M root=/dev/nfs nfsroot=:/home/workdir/Android_nfs rw rootwait init=/init ip=dhcp omap_vout.vid1_static_vrfb_alloc=y vram=8M omapfb.vram=0:8M'

Developing with source code
This section show the steps to obtain the complete source code for the android images(Boot loader, Kernel and Filesystem) and to build the same.

Host (PC) setup requirements
The host development environment for Android is based on Ubuntu, please install Ubuntu version 10.04 or later http://www.ubuntu.com/desktop/get-ubuntu/download. The host installation would need few more Android specific dependencies, these can be installed dynamically over network using below commands. For Ubuntu on 32-bit machines $ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" $ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner" $ sudo apt-get update $ sudo apt-get install git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev minicom tftpd uboot-mkimage expect $ sudo update-java-alternatives -s java-6-sun

Developers can download the sources from the gitorious.org/rowboat repository.

A tool called 'Repo' helps to fetch the android sources from gitorious.org/rowboat. Repo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see the link http://source.android.com/source/version-control.html. To install, initialize, and configure Repo, follow these steps: Make sure you have a bin/ directory in your home directory, and that it is included in your path: $ mkdir ~/bin $ PATH=~/bin:$PATH Download the Repo script and ensure it is executable: $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo &gt; ~/bin/repo $ chmod a+x ~/bin/repo The following commands help developers to clone sources from www.gitorious.org/rowboat repository $ mkdir $HOME/rowboat-android $ cd $HOME/rowboat-android $ repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-ICS-4.0.3-DevKit-EVM-SK-3.0.1.xml $ repo sync

Using Pre-Packaged Sources
The above method is time consuming, so developers can use the pre-packaged Android sources in DevKit package.

Download the pre-packaged DevKit sources from TI-Android-ICS-4.0.3-DevKit-EVM-SK-3.0.1.bin.

Run following commands to extract the pre-packaged source:


 * Commands

$ mkdir $HOME/rowboat-android $ cd $HOME/rowboat-android $ chmod a+x TI-Android-ICS-4.0.3-DevKit-EVM-SK-3.0.1.bin $ ./TI-Android-ICS-4.0.3-DevKit-EVM-SK-3.0.1.bin


 * Accept the Licence when the installer prompts


 * This will generate following sources
 * Android File system : $HOME/rowboat-android/TI-Android-ICS-4.0.3-DevKit-EVM-SK-3.0.1/
 * Android Linux Kernel: $HOME/rowboat-android/TI-Android-ICS-4.0.3-DevKit-EVM-SK-3.0.1/kernel
 * Bootloader : $HOME/rowboat-android/TI-Android-ICS-4.0.3-DevKit-EVM-SK-3.0.1/u-boot
 * Toolchain location will be at $HOME/rowboat-android/TI-Android-ICS-4.0.3-DevKit-EVM-SK-3.0.1/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

Tool chain setup
Setup the tool-chain path to point to arm-eabi- tools in prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin $ export PATH=$HOME/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

To build boot loader (u-boot)

 * Change directory to u-boot

$ cd u-boot


 * Execute the following commands

$ make CROSS_COMPILE=arm-eabi- distclean $ make CROSS_COMPILE=arm-eabi- am335x_evm_config $ make CROSS_COMPILE=arm-eabi-


 * This command will generate the MLO and the u-boot Image "u-boot.img"

To build Linux kernel

 * Change directory to kernel

$ cd kernel
 * Do the following to build kernel sources for EVM-sk

$ make ARCH=arm CROSS_COMPILE=arm-eabi- distclean $ make ARCH=arm CROSS_COMPILE=arm-eabi- am335x_evm_android_defconfig $ make ARCH=arm CROSS_COMPILE=arm-eabi- uImage


 * This will generate uImage (kernel image) in kernel/arch/arm/boot folder

To build Android filesystem
This step is needed only if the RowboPERF Application needs to be included in the Android file system.
 * RowboPERF Integration


 * Download the sources from rowboat

$ git clone git://gitorious.org/rowboat/rowboperf.git $ cd rowboperf $ git checkout in rowboat-ics branch

NOTE: Clone RowboPERF sources inside the rowboat-android tree.


 * Android filesystem build will take care of the integration of rowboperf applications

To Build the root file system for the EVM-sk, from android source top directory, type the following command

$ make TARGET_PRODUCT=am335xevm_sk -j8 OMAPES=4.x

This step will build the rowboPerf and install packages at

out/target/product/am335xevm_sk/system/app out/target/product/am335xevm_sk/system/bin

Create root filesystem tarball
Prepare the root filesystem as follows:

$ cd out/target/product/am335xevm_sk $ mkdir android_rootfs $ cp -r root/* android_rootfs $ cp -r system android_rootfs $ sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs. rootfs rootfs.tar.bz2

The rootfs.tar.bz2 is the android filesystem, it can be put on a SD/MMC Card or used our NFS.

To generate SD/MMC card to boot Android
These compiled Images can be copied to a SD / MMC card to boot Android on the Flashboard.

Copy all the images to one folder $ mkdir image_folder $ cp kernel/arch/arm/boot/uImage image_folder $ cp u-boot/u-boot.img image_folder $ cp u-boot/MLO image_folder $ cp out/target/product/am335xevm_sk/rootfs.tar.bz2 image_folder $ cp Media_clips image_folder

NOTE: Get the Media_clips folder from the SD card prebuilt image

$ cp mkmmc-android.sh image_folder

NOTE: Get the mkmmc-android.sh script from the SD card prebuilt image

Connect an SD card to the Host machine

Invoke the mkmmc-android.sh script to prepare the card for booting

$ cd image_folder $ sudo ./mkmmc-android.sh &lt;sd card mounted dev folder example:/dev/sdc&gt; MLO u-boot.bin uImage boot.scr rootfs.tar.bz2 Media_Clips

Wait for the script to complete. Safely remove the SD card and put it on the EVM-sk for Booting.

Demo applications Installation
The pre-built Image includes few demo applications,these applications were not developed by TI as such. The source sites and licensing for these apps is as given below:

Steps to download and integrate the demo apps in Android rootfs is as given below: 1-Download demo applications from gitoroius $ cd ~ $ git clone git://gitorious.org/rowboat/demo-apks.git 2-Copy demo-apks folder to filesystem/data/app folder $ cp -r demo-apks/* 


 * Download the sources from rowboat

$ git clone git://gitorious.org/rowboat/rowboperf.git $ cd rowboperf $ git checkout origin/rowboat-ics-evmsk

NOTE: Clone RowboPERF sources inside the rowboat-android tree.

3-Compile the Rowboperf $ mm TARGET_PRODUCT=am335xevm_sk OMAPES=4.x 4-Remove the launcher2.apk in filesystem/system/app folder

5-Create the root tar file system use below command $ make TARGET_PRODUCT=am335xevm_sk OMAPES=4.x fs_tarball

ADB
Android Debug Bridge (adb) is a versatile tool lets you manage the state of the Android-powered device. For more information about what is possible with adb, see Android Debug Bridge page at http://developer.android.com/guide/developing/tools/adb.html. The ADB tool can be used to


 * 1) Download an application from a host machine, install &amp; run it on the target board.
 * 2) Start a remote shell in the target instance.
 * 3) Debug applications running on the device using the debugging tool DDMS ( Dalvik Debug Monitor Server) which runs on top of adb connection.
 * 4) Copy files to and from the board to host machine

Please visit http://processors.wiki.ti.com/index.php/Android_ADB_Setup for setting up ADB on the EVM-sk

Porting Information
Android porting guide is at http://processors.wiki.ti.com/index.php/TI-Android-ICS-PortingGuide Linux Drivers porting guides:
 * 1) http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide
 * 2) http://processors.wiki.ti.com/index.php/AM335x_Power_Management_User_guide
 * 3) http://processors.wiki.ti.com/index.php/Sitara_GPIO_Driver_User_Guide
 * 4) http://processors.wiki.ti.com/index.php/AM335x_MMC/SD_Driver%27s_Guide
 * 5) http://processors.wiki.ti.com/index.php/AM335x_LCD_Controller_Driver%27s_Guide
 * 6) http://processors.wiki.ti.com/index.php/AM335x_Touchscreen_Driver%27s_Guide
 * 7) http://processors.wiki.ti.com/index.php/AM335x_Audio_Driver%27s_Guide
 * 8) http://processors.wiki.ti.com/index.php/AM335x_CPSW_(Ethernet)_Driver%27s_Guide
 * 9) http://processors.wiki.ti.com/index.php/AM335x_PWM_Driver%27s_Guide
 * 10) http://processors.wiki.ti.com/index.php/AM335x_USB_Driver%27s_Guide

NOTE:More Information on AM335x http://processors.wiki.ti.com/index.php/Category:AM335x

= Release notes =

See below table to find information on various individual components of this release

= References =
 * Android Sources for EVM-sk is hosted at http://www.gitorious.org/rowboat with manifest TI-Android-ICS-4.0.3-DevKit-3.0.1.xml

Technical Support and Product Updates
For further information or to report any problems, contact http://e2e.ti.com/android or http://support.ti.com. For community support join http://groups.google.com/group/rowboat For IRC #rowboat on irc.freenode.net

= Observations =