NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide

From Texas Instruments Wiki
Jump to: navigation, search

TIBanner.png

Contents

TI Android ICS-4.0.3-DevKit-3.0.1 Developer Guide[edit]

Developer Guide - April,5, 2012

About this manual[edit]

The objective of this document is to guide Android developers to get access to Android ICS DevKit release sources for TI AM335x platforms, setting up host environment for compilation and enabling debug environment to ease the app development, debugging and deployment.

This document contains instructions to:

  • Hardware and Software requirement
  • Setup the hardware
  • Setup the toolchain
  • Download & Build the source
  • Set up the Android debugger with the hardware platform
  • Install and execute Android applications on hardware platforms

Hardware Requirements[edit]

This release of TI Android ICS 4.0.3 DevKit 3.0.1 is evaluated on the platforms listed below. This package should be easily portable on other platforms on similar TI devices.


TI Device Platform Supported Version Other Accessories
AM335x



AM335x EVM Rev 1.1B USB HUB, USB Keyboard, USB Mouse, Ethernet, USB Micro-B Cable, UART Cable, Audio Speakers, MMC/SD Card (2GB min)

BeagleBone Rev A3 USB HUB, USB Keyboard, USB Mouse, Ethernet, USB Mini-B Cable, Micro MMC/SD Card (2GB min)


Host (PC) setup requirements[edit]

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.

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.

We recommend you to have a Linux "Ubuntu 10.04 or above" Host machine, See Ubuntu Linux installation notes

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[edit]

  $ 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

NOTE:

  1. Android ICS (4.0.3) needs Java 6.
  2. The Hard Disk should have at least 25 GigaBytes of free space to complete the building of sources.
  3. Please refer to the AOSP for latest information http://source.android.com/source/initializing.html

Getting Source & Toolchain[edit]

TI provides Android sources for all the supported devices in multiple locations, developers can download the sources from the rowboat repository or use the pre-packaged sources in the DevKit.

Using Rowboat Gitorious[edit]

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 Android Version Control.
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 > ~/bin/repo
  $ chmod a+x ~/bin/repo
  

The following commands help developers to clone sources from 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-3.0.1.xml
  $ repo sync

Using Pre-Packaged Sources[edit]

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_AM335x_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_AM335x_3.0.1.bin
  $ ./TI-Android-ICS-4.0.3_AM335x_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_AM335x_3.0.1/
    • Android Linux Kernel: $HOME/rowboat-android/TI-Android-ICS-4.0.3_AM335x_3.0.1/kernel
    • Bootloader  : $HOME/rowboat-android/TI-Android-ICS-4.0.3_AM335x_3.0.1/u-boot
    • Toolchain location will be at $HOME/rowboat-android/TI-Android-ICS-4.0.3_AM335x_3.0.1/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

Toolchain setup[edit]

  • Setup the toolchain 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
NoteNote: We recommend to keep the add the toolchain path as shown above to avoid conflicts with any other installed toolchain

Build Procedure[edit]

To Build Bootloader[edit]

  • Change directory to u-boot
  $ cd <android source path>/u-boot
  • Execute following commands:
 *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"

NOTE:Above command will work for both(AM335x EVM and BeagleBone)

To Build Android Linux Kernel[edit]

  • Change directory to kernel
  $ cd <android source path>/kernel
  • Execute following commands
  $ 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

NOTE:Genrated uImage run on both am335xevm and beaglebone.

To Build Android Filesystem[edit]

Filesystem with SGX[edit]

  • To Build the root filesystem for AM335x EVM and BeagleBone
  $ make TARGET_PRODUCT=<product-name> OMAPES=4.x -j<N>


  • Where <product-name> is am335xevm for AM335x EVM
  • Where <product-name> is beaglebone for BeagleBone


NOTE:

  • <N> should be twice the number of processors on your host machine. For example, a dual core machine would use -j4
  • The above command will build Android filesystem, kernel, <product_name> related modules,
  • SGX drivers and WLAN drivers will be built and installed in android roots for am335xevm
  • Android rootfs components (root and system directories) will be located in out/target/product/<product-name>.
  • SGX drivers and libraries will get installed in Android rootfs components.

Filesystem without SGX[edit]

  • If filesystem is already built with SGX, then the projects need to be cleaned using the following command:
  $ make TARGET_PRODUCT=<product-name> clean
  • Where <product-name> is am335xevm for AM335x EVM
  • Where <product-name> is beaglebone for BeagleBone
To build the root file system for AM335x without SGX accelerated graphics support[edit]
  • AM335x EVM
  $ make TARGET_PRODUCT=am335xevm droid kernel_build wl12xx_compat  -j<N> 
  • BeagleBone
  $ make TARGET_PRODUCT=beaglebone droid kernel_build  -j<N> 


NOTE:

  • <N> should be twice the number of processors on your host machine. For example, a dual core machine would use -j4
  • droid will build basic Android filesystem
  • kernel_build will build the kernel
  • wl12xx_compat will build WLAN drivers and load WLAN and BT firmwares into Android filesystem (for am335xevm only)
  • The kernel image can be found at kernel/arch/arm/boot/uImage.
  • Android rootfs components (root and system folders) will be located in out/target/product/<product-name>.

NOTE: BeagleBone doesn't have WLAN support.

NOTE: Some applications (e.g. Gallery) may not work correctly without SGX libraries.

Create root filesystem tarball[edit]

The root filesystem tarball can be create in two ways.

1. Run the following command:

  make TARGET_PRODUCT=<product name> fs_tarball

2. To create the tarball manually, perform the following steps:

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


  • Where <product-name> is am335xevm for AM335x EVM
  • Where <product-name> is beaglebone for BeagleBone
  • The rootfs.tar.bz2 is the Android filesystem, it can be put on a SD/MMC Card or used for NFS.

RowboPERF Integration[edit]

  • Download the sources from rowboat inside the rowboat android source tree.
   $ git clone git://gitorious.org/rowboat/rowboperf.git
   $ cd rowboperf
  • Refer the instructions in the README file for building and installing rowboperf components.
  • Refer to RowboPERF User Guide to know more about dependency, build procedure and how to run applications.

Generate SD/MMC card IMAGE to boot Android[edit]

This section walks you through the steps necessary to create a bootable SD card with for Android, using the binaries you built in the previous step.

= Configure Boot Arguments[edit]

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:
File: uEnv.txt
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


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

  • Flash SD Card

Copy compiled Images to image folder and create a bootable SD card as follows.

 $ mkdir image_folder
  $ cp uEnv.txt 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/<product-name>/rootfs.tar.bz2 image_folder
  $ cp Media_Clips image_folder
  • Where <product-name> is am335xevm for AM335x EVM
  • Where <product-name> is beaglebone for BeagleBone

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

  • Copy the SDMMC card creation script
  $ cp <android-devkit>/Debug_and_Development_Tools/TI_Android_Utilities/mk-mmc/mkmmc-android.sh image_folder
  $ cd image_folder
  $ sudo ./mkmmc-android.sh /dev/sd<mount-point> MLO u-boot.img uImage uEnv.txt rootfs.tar.bz2 Media_Clips

NOTE:

  • mkmmc-android.sh is provided in TI Android Utilities package on the Devkit download page.
  • All the Images, Audio and Video can be put into Media_Clips directory and can be provided as an argument to the above script.

Booting the Platform[edit]

Here are the instructions to boot the prepared SD card on the two platforms:

AM335x EVM

  • Connect the UART port (J12 of base board) on AM335x EVM to the Host PC and have a Terminal software like TeraTerm, Minicom or Hyperterminal.
  • Connect the Ethernet (J15 of base board) on AM335x EVM.
  • Connect Audio Speakers (J26 on daughter card) on AM335x EVM.
  • Connect Audio Line-In cable (J27 on daughter card) on AM335x EVM.
  • Connect USB Host port (USB1) (J18 on base board) on AM335x EVM to USB Keyboard or USB Mouse.
  • Select Appropriate DIP Switch settings on AM335x EVM to boot over MMC/SD
  • For MMC/SD boot the DIP switch should be set as (SW3(1:8)=00010111) shown below:

AM335x EVM SD boot mode setting

Switch
1
2
3
4
5
6
7
8
State
OFF
OFF
OFF
ON
OFF
ON
ON
ON
  • Insert SD card into MMC/SD slot on AM335x EVM.
  • Connect power cable to J1 on AM335x EVM.
  • Switch ON the (SW13)on AM335x EVM.

BeagleBone

  • Connect USB cable to the mini-USB port(P3) on BeagleBone to the Host PC and have a Terminal software like TeraTerm, Minicom or Hyperterminal.
  • Please refer BeagleBone-Android-DevKit Guide for detailed setup instructions.
  • Connect the Ethernet (P10) on BeagleBone.
  • Connect USB Host port (P2) on BeagleBone to USB Keyboard or USB Mouse.
  • Connect USB keyboard and USB Mouse to the USB HUB for use with BeagleBone.
  • Insert Micro SD card into MMC/SD slot on the BeagleBone
  • Power ON the BeagleBone by connecting power cable to (P5).


To exercise various Android DevKit features refer to:

  1. TI-Android-ICS-4.0.3-DevKit-3.0.1 UserGuide
  2. RowboPERF User Guide

Android Display through VNC[edit]

Setup Ethernet and VNC server on BeagleBone or AM335x EVM[edit]

Make sure Ethernet port on board and host machine are connected to the network. Check Ethernet configuration for the board

  # netcfg
  lo UP 127.0.0.1 255.0.0.0 0x00000049
  eth0 DOWN 0.0.0.0 0.0.0.0 0x00001002

If Ethernet was not configured, configure Ethernet using the Settings Menu. See User Guide for more information

Once Ethernet is up, VNC server can be started in the background.

  # androidvncserver &

Connecting to target from Host[edit]

Using VNC Viewer application user can connect to the Beagleboane at the target address [say 172.24.191.37] port 5901.

NOTE:Since the BeagleBone currently does not have a display output, we rely on VNC connection from the Host to the BeagleBone. Here are the steps to establish VNC connection between the BeagleBone to the Host PC

Boot Logs[edit]


BootLogs AM335x EVM BeagleBone
Kernel Boot Log BootLog-am335xevm.pdf BootLog-BeagleBone.pdf
Logcat Log LogCat-am335xevm.pdf LogCat-BeagleBone.pdf


Application Development and Debugging[edit]

Using TI's Code Composer Studio V5 (Eclipse based)[edit]

Code Composer Studio (CCS) is the integrated development environment for TI's DSPs, microcontrollers and application processors based on the Eclipse open source software framework which includes a suite of tools used to develop and debug embedded applications. Since CCS is based on Eclipse, it is possible to integrate the Android Development Tools (ADT) like Android Debug Bridge (ADB), Dalvik Debug Monitoring System (DDMS) and ndk-gdb in CCS to enable the debugging of Android Applications directly on Android Device (i.e TI EVM) along with the inherent CCS capability of Linux Aware Debug and DSP Debugging.

This wiki walks you through installation of Android Debugging Tools in CCS, connecting CCS with Android Device and illustrates a debugging session of an HelloWorld Application based on android NDK having a mix of Java and Native C Code.

Preparing CCS for Android Development[edit]

The steps below are condensed version of steps mentioned on http://developer.android.com/sdk/installing.html

  • Installing the ADT Plugin in CCS

Refer http://developer.android.com/sdk/eclipse-adt.html#installing

  • Adding Platforms and Other Components
  1. On Windows, double-click the SDK Manager.exe file at the root of the Android SDK directory
  2. On Linux, run '<SDK>tools/android'
  3. Proxy Settings (If needed): Go to Settings and set the Proxy to work with your network
  4. To download components, use the graphical UI of the Android SDK and AVD Manager, shown in Figure below, to browse the SDK repository and select new or updated components. The Android SDK and AVD Manager will install the selected components in your SDK environment. Refer the list of Recommended Components: http://developer.android.com/sdk/installing.html#which

Android-sdk-manager.png

  1. To Install the Terminal (similar to Teraterm) in CCS, please follow the steps mentioned in the wiki: http://processors.wiki.ti.com/index.php/How_to_install_the_terminal_plugin_in_CCSv5
  2. For more information regarding CCSv5 and ADT plugin setup please refer CCSv5SetupGuide

Debugging Android with CCS[edit]

Hello World Application on Android Virtual Device (AVD)[edit]

  1. Hello World Using CCSv5
  2. Android Hello World

Hello-jni of Android NDK on Android Device[edit]

  • In CCS:
  1. Click File > New Android Project...
  2. Select the Create project from existing source radio button.
  3. Select any API level above Android 1.5.
  4. In the Location field, click Browse... and select the <ndk-root>/samples/hello-jni directory.
  5. Click Finish.
  6. Go to C/C++ Perspective. Click File->New->Convert to C/C++ Project
  • Edit jni/Android.mk and add the following line before BUILD_SHARED_LIBRARY: APP_CFLAGS := -g. This will add debugging symbols in to your native C code.
  • Compile the native code using the ndk-build command from cmd prompt:
  cd <ndk-root>/samples/hello-jni
  <ndk_root>/ndk-build
  • In CCS, create a debug configuration for a C/C++ application:
    • Create a new debug configuration for a C/C++ application. Click Run->Debug Configurations.
    • Set the process launcher to “Standard Create Process Launcher”
    • On “Main” tab, set:
      C/C++ Application: android-ndk-r5-windows\android-ndk-r5\samples\hello-jni\obj\local\armeabi\app_process
      Select Disable auto build
    • On “Debugger” tab, set:
      • Debugger: gdbserver
      • Stop on startup at: Java_com_example_hellojni_HelloJni_stringFromJNI (It is the entry function of the native C code)
      • Main Tab:
        • GDB debugger: android-ndk-r5-windows\android-ndk-r5\toolchains\arm-eabi-4.4.0\prebuilt\windows\bin\arm-eabi-gdb.exe
        • GDB command file: android-ndk-r5-windows\android-ndk-r5\samples\hello-jni\libs\armeabi\gdb.setup
        • GDB command set: Standard
        • Protocol: mi
        • Select only Verbose console mode
      • Connection Tab:
        • Type: TCP
        • Host name or IP address: localhost
        • Port number: 5039
  • Open the ndk-gdb script that came with the android NDK and comment the last line (we are not calling the usual gdb client, but we will attach an Eclipse gdb session instead)
  # $GDBCLIENT -x $GDBSETUP -e $APP_PROCESS
  • Only For Windows: Run dos2unix.exe on ndk-gdb from cygwin after editing to make sure that we do not have any unwanted dos symbols in the script
  • Starting Java Debugger:
    • Make sure you are in Java Perspective.
    • Click Run->Debug Configurations.
    • Place a breakpoint in Java code just before the native code call
    • Select Android Debug Configuration instance “HelloJni” and click “Debug”
    • It will prompt you to switch and open to CCS Debug Perspective. Select “yes”
  • Starting GDB Debugger:
    • In cygwin, make sure that the root of android-ndk is in PATH.
    • In cygwin, Go to /android-ndk-r5-windows/android-ndk-r5/samples/hello-jni and execute the following and wait until you get a prompt again:
  ndk-gdb –adb=<PATH_TO_android-sdk-windows/platform_tools/adb.exe>
sample command: $ ndk-gdb --adb=/cygdrive/c/PROGRA~1/Android/android-sdk-windows/platform-tools/adb.exe
    • CCS, go to C/C++ Perspective and click Run->“Debug”. This will launch the gdbserver in CCS Debug Perspective.
    • Now, you can seamlessly debug between Java and Native C code

Using ADB Android Debugger, Downloader[edit]

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

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

Downloading "ADB" & Host setup[edit]

The adb tool is a part of Android SDK package located at http://developer.android.com/sdk/index.html. For an overview of how to install and set up the Android SDK, follow download & setup instructions from http://developer.android.com/sdk/index.html. Once you install Android SDK, the directory contents look like this.

  .
  |-- SDK Readme.txt
  |-- add-ons
  |-- google-market_licensing
  |-- platform-tools
  |   |-- NOTICE.txt
  |   |-- aapt
  |   |-- adb
  |   |-- aidl
  |   |-- dexdump
  |   |-- dx
  |   |-- lib
  |   `-- source.properties
  |-- platforms
  |-- temp
  `-- tools
      |-- NOTICE.txt
      |-- adb_has_moved.txt
      |-- android
      |-- ant
      |-- apkbuilder
      |-- ddms
      |-- dmtracedump
      |-- draw9patch
      |-- emulator
      |-- etc1tool
      |-- hierarchyviewer
      |-- hprof-conv
      |-- layoutopt
      |-- lib
      |-- mksdcard
      |-- monkeyrunner
      |-- proguard
      |-- source.properties
      |-- sqlite3
      |-- traceview
      `-- zipalign

The adb tool is located in paltform-tools/ directory under the Android SDK installation. Export the platform-tools and tools directory path as shown below.

  $ export PATH=<android_sdk_path>/platform-tools/:<android_sdk_path>/tools/:$PATH

Connecting Host machine to board through adb[edit]

This release of DevKit has been tested for three different methods of connecting a given board with host machine

  • adb over USB
  • adb over USB Ethernet
  • adb over Ethernet

The below sections describe each of these methods and provides necessary instructions for the same.

adb over USB[edit]

  • Make sure that the mini-usb cable is connected between the host usb port and the target’s USB OTG port
  • Turn on "USB Debugging" on your board. On the board (UI screen)-
    • Go to home screen, press MENU,
    • Select Applications, select Development, then enable USB debugging.
    • Alternatively, you can navigate to Settings->Applications->Development and then enable the "USB debugging" option.
  • Setup host machine to detect the board. On Ubuntu Linux host machines this is done by adding a rules file to configure device vendor ID of on-board OMAP device.
  • For the EVMs and Boards covered here, the vendor ID is "18d1".
    • Log in as root and create this file: /etc/udev/rules.d/51-android.rules
    For Gusty/Hardy, edit the file to read:
    SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
    SUBSYSTEM=="usb", SYSFS{idVendor}=="0451", MODE="0666"
  • Execute the following to change the user mode for the rules file.
    $ chmod a+r /etc/udev/rules.d/51-android.rules
  • Verify the adb connectivity between host and target board
    $ adb devices 

If device is connected, then output on screen should list the device, example:

       List of devices attached
       0123456789ABCDEF    device

adb over USB Ethernet (Ethernet over USB)[edit]

  • Make sure that the usb cable is connected between the host usb port and the target's USB OTG port.
  • Configure the Linux kernel to use Ethernet gadget. Enable USB support, configure the Inventra controller, and add USB gadget support.

IMPORTANT NOTE: Inventra configuration must occur in two places as shown below.

    $ make ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig
  • Select Device Drivers from the main menu.
  ...
  Power management options --->
  [*] Networking support --->
  Device Drivers --->
  File systems --->
  Kernel hacking --->
  ...
  • Select USB support as shown here:
  ...
  <*> Sound card support --->
  [*] HID Devices --->
  [*] USB support --->
  <*> MMC/SD/SDIO card support --->
  ...
  • Select Inventra Highspeed Dual Role Controller (TI, ADI, ...) as shown here:
  ...
  < >   R8A66597 HCD support
  < >   Host Wire Adapter (HWA) driver (EXPERIMENTAL)
  <*>   Inventra Highspeed Dual Role Controller (TI, ADI, ...)
          *** Platform Glue Layer ***
  < >     TUSB6010
  ...
  • Select USB Gadget Support as shown here:
  ...
  < >   iSight firmware loading support
  < >   USB YUREX driver support
  <*>   USB Gadget Support  --->
        *** OTG and related infrastructure ***
  [ ]   Hold a wakelock when USB connected
  ...
  • Select USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support)) as shown here:
  ...
  <*>   USB Peripheral Controller (Inventra HDRC USB Peripheral (TI, ADI, ...))  --->
  < >   Select one gadget as builtin for one port
  <*>   USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support))  --->
          Ethernet Gadget (with CDC Ethernet support)
  [*]       RNDIS support (NEW)
  [ ]       Ethernet Emulation Model (EEM) support (NEW)
  • Build the Kernel with the above configuration changes and use the uImage to boot the board. Refer to Kernel compiling instructions above.
  • Establish network connection
    • Assign an IP address to the usb ethernet adapter.

The USB network gadget g_ether is named usb0 (instead of eth0 or other network interface names). The normal set of Ethernet configuration tools should work, such as ifconfig, netstat, and route.

For example, the following commands will assign the network address 192.168.194.2 to the target. Run this on the target:

  $ ifconfig usb0 192.168.194.2 netmask 255.255.255.224 up

On Host machine, run the following commands to establish the connection to the target:

  $ sudo ifconfig usb0 192.168.194.1 netmask 255.255.255.224 up
  $ sudo route add 192.168.194.2 dev usb0

The target and the host machine should be connected, run ping command to test the same:

  $ ping -c 3 192.168.194.2
  PING 192.168.194.2 (192.168.194.2) 56(84) bytes of data.
  64 bytes from 192.168.194.2: icmp_seq=1 ttl=64 time=6.08 ms
  64 bytes from 192.168.194.2: icmp_seq=2 ttl=64 time=0.511 ms
  64 bytes from 192.168.194.2: icmp_seq=3 ttl=64 time=0.485 ms
  --- 192.168.194.2 ping statistics ---
  3 packets transmitted, 3 received, 0% packet loss, time 2000ms
  rtt min/avg/max/mdev = 0.485/2.361/6.089/2.636 ms

  • Establish ADB connection

On the host machine execute following commands to establish adb connection

  $ export ADBHOST=<target's ip address>
  $ adb kill-server
  $ adb start-server
  $ adb connect <target_ip_address>:5555

Verify the connection by executing

  $ adb devices 

If connected, device name should be listed as a "emulator"

  $ adb devices
   List of devices attached
   emulator-5554    device
  $ adb shell

adb over Ethernet[edit]

  • Make sure Ethernet port on board and host machine are connected to the network
  • Check Ethernet configuration for the board
  # netcfg                                                                        
  lo       UP    127.0.0.1       255.0.0.0       0x00000049                       
  eth0     UP    172.24.190.59   255.255.252.0   0x00001043                       
  • If Ethernet was not configured, configure Ethernet of the board using ifconfig/netcfg as shown below.
  # netcfg eth0 dhcp
  • Configure the ADB Daemon to use an ethernet connection using setprop as shown below.
  # setprop service.adb.tcp.port 5555
  • If network is configured successfully (above steps) then Restart service adbd on the target,
  # stop adbd
  # start adbd
  • On the host machine use following commands to establish adb connection
  $ export ADBHOST=<target's ip address>
  $ adb kill-server
  $ adb start-server
  $ adb connect <target_ip_address>:5555
  • Verify for device connectivity, by executing the following commands
    • If connected, find the device name listed as a "emulator"
  $ adb devices
    List of devices attached
    emulator-5554    device
  $ adb shell 

For more information about adb commands, see Android Debug Bridge page at http://developer.android.com/guide/developing/tools/adb.html

adb over USB on Windows Machine[edit]

Follow the below instructions to get ADB over USB work on a Windows PC

  • Download latest Android SDK

(http://developer.android.com/sdk/index.html) and uncompress it in a local folder (i.e. c:\android_sdk).

  • Optionally, you may want to add the location of the SDK's primary tools directory to your system PATH. Right-click on My Computer, and select Properties. Under the Advanced tab, hit the Environment Variables button, and in the dialog that comes up, double-click on Path (under System Variables). Add the full path to the tools\ directory to the path.
  • Download Android USB Driver

(https://dl-ssl.google.com/android/repository/usb_driver_r03-windows.zip) and uncompress it in a local folder (i.e. c:\android_sdk\usb_driver)

  • Edit (or create and then edit if it doesn't already exist) file in

"%USERPROFILE%\.android\adb_usb.ini":

  > echo 0x18D1 > "%USERPROFILE%\.android\adb_usb.ini"
  • Edit android_winusb.inf to match EVM/Beagle vendor and product ids:

Under [Google.NTx86] section add:

  ;TI EVM
  %SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_9018
  %CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_9018&MI_01

NOTE: Be careful to add it under Google.NTx86 and not under Google.NTamd64 unless your machine is AMD 64 bits. If you skip this step you won't be able to later install the driver as windows will reject it.

  • Boot the board as normal and wait until shell prompt is available (micro-B USB cable must be disconnected).
  • Connect micro-B USB cable between board and Windows PC.
  • If it is proceeding as planned, Windows will tell you it found a new hardware asks you to install the driver. Install driver that was downloaded as described in step 3 above:

Answer "No, not this time" to the question about running Windows Update to search for software.

    • Choose "Install the hardware that I manually select from a list (Advanced)" this is the 2nd option, then click "Next"
    • Select "Show All Devices", then click "Next"
    • You are going to see a grayed-out text box with "(Retrieving a list of all devices)", click the "Have Disk..." button
    • Browse" to your driver folder (c:\android_sdk\usb_driver). It will be looking of a .inf file so select "android_winusb.inf" and click "Open" then "OK". It's the only file there so you shouldn't go wrong.
    • Select "Android ADB Interface" then click the "Next" button.
    • A warning will appear, answer "Yes" but read the warning anyway.
    • Click the "Close" when the wizard is completed.
  • Disconnect and reconnect micro-B USB cable from Board(probably reboot it as well).
  • Open command prompt and restart adb server just to make sure it is in a proper state:
  > adb kill-server
  > adb start-server
  • List the attached devices with "adb devices". It should show your board/device with a random number.
  • Type "adb shell". You should see the "#" indicating it works.

Operations over ADB[edit]

The Root File System provided in this DevKit release contain only standard Android components and applications.

To install and run Android application follow steps mentioned below:

Installing (.apk files) application on Target Platform[edit]

  • From the host: You can use adb tool for package installation.
  $ adb install <package>.apk. 

NOTE: Use -s option with the adb tool, to install the package on external storage.

On successful installation adb tool will report SUCCESS on host terminal, and the application would be listed on the android main menu.

Un-installing applications (.apk) using adb[edit]

  • To un-install non-default components (that were installed later)
    • Method 1: On the host machine execute the following
  $ adb shell pm list packages
  $ adb uninstall <package name>
  • Method 2: On target:

Main menu -> Menu -> Settings -> Applications -> Manage applications -> Find the package Tap on it -> Uninstall -> OK -> OK

  • On successful removal, the application would have been removed from the android main menu. All the short-cuts to the application also removed.
  • To un-install default components, use the following commands from abd on host machine
  $ adb shell
  # rm /system/app/app.apk

On successful removal, the application would have been removed from the android main menu.

Copy any files to and from the board over ADB[edit]

  • Using the adb commands "pull" and "push" copy files to and from the board.
  • Unlike the install command, which only copies an .apk file to a specific location, the pull and push commands let you copy arbitrary directories and files to any location on the board.
  • To copy a file or directory (recursively) from the board, use
  $ adb pull <remote> <local>
  • To copy a file or directory (recursively) to the board, use
  $ adb push <local> <remote>

In the commands, <local> and <remote> refer to the paths to the file or directory on your development host (local) and on the target instance (remote).

  Here's an example: 
  $ adb push foo.txt /sdcard/foo.txt

Setup ADB for application Debugging[edit]

ADB and Eclipse, with ADT( Android Development Tools plug-in) allow users to create and debug Android applications. Follow Developing In Eclipse, with ADT at http://developer.android.com/guide/developing/eclipse-adt.html

Steps to connect Eclipse to the board.

  • Setup the adb connection with the board by following the instructions given above in connecting board ...
    Verify the connectivity by executing 
    $ adb devices
  • Open Eclipse IDE. Eclipse, with ADT plugin enable users to
    • Create an android project.
    • Build and Run the project on a connected board.
    • Debug the project using the Debug perspective.
    • Use DDMS (Dalvik Debug Monitor Server) to monitor the connected board.

For more detailed and complete information on the above follow Developing In Eclipse, with ADT at http://developer.android.com/guide/developing/eclipse-adt.html

  • Open DDMS(Dalvik Debug Monitor Server) perspective. This DDMS perspective can be opened from the eclipse menu via:
    Window -> Open Perspective -> Other -> DDMS; 
    Click on OK
  • DDMS provides port-forwarding services, screen capture on the device, thread and heap information on the device, logcat, process, and radio state information,incoming call and SMS spoofing, location data spoofing, and more.

Others[edit]

How to set media volume?[edit]

Main Menu->Settings->Sound->Volume

How to show fps in logcat messages?[edit]

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

How to set longer screen timeout ?[edit]

Main Menu->Settings->Display->Screen timeout->30 minutes

Acronyms[edit]

  • SDK – Software Development Kit
  • NDK – Native Development Kit (For more information, refer http://developer.android.com/sdk/ndk/overview.html)
  • ADT – Android Development Tools
  • ADB – Android Debug Bridge
  • DDMS – Dalvik Debug Monitoring System
  • AVD – Android Virtual Device

Quick References[edit]

Content Link Ref#
User Guide http://processors.wiki.ti.com/index.php/TI-Android-ICS-4.0.3-DevKit-3.0.1_UserGuide
Release Notes http://processors.wiki.ti.com/index.php/TI-Android-ICS-4.0.3-DevKit-3.0.1_ReleaseNotes
Porting Guides http://processors.wiki.ti.com/index.php/TI-Android-ICS-4.0.3-DevKit-3.0.1_PortingGuide
Downloads http://focus.ti.com/docs/toolsw/folders/print/androidsdk-sitara.html

Support[edit]

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

E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article TI-Android-ICS-4.0.3-DevKit-3.0.1 DevelopersGuide here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity