1. Checkout Android source code from Rowboat

Rowboat is an active community that is delicated to Android enablement on Beagleboard. In our project, our development is mainly based on Roabow android source distribution: This article focuses on the validation of DSP on beagleboard with Rowboat-eclair. For more detail of building Rowboat, please refer tohttp://code.google.com/p/rowboat/wiki/DSP  .

2.1 Preparation
    apt-get install expect

2.2 Checkout the source code from repository
    mkdir ~/rowboat-android-eclair
    cd ~/rowboat-android-eclair
    repo init -u git://gitorious.org/rowboat/manifest.git -m rowboat-eclair-dsp.xml
    repo sync

    // Download and place codec_engine_2_25_05_16.tar.gz under the external/ti-dsp folder. Codec Engine is available here.

    cd ~/rowboat-android-eclair
    ./prepare  //install dsplink related toolchain


    //Install SGX (optional): 

    Refer to https://beagleboard.helixcommunity.org/SGX


    //Checkout 2.16.32 kernel:

    cd ~/rowboat-android-eclair

    mv kernel kernel-2.16.29

    git clone git://gitorious.org/rowboat/kernel.git -b rowboat-eclair-2.6.32

    //Use patched OpenMAX-DMAI bindings

    cd ~/rowboat-android-eclai/external/ti-dsp/dvsdk_3_01_00_10

    mv omx_ti omx_ti-bak

    Replace with the patched omx_ti: Image:Omx ti.zip.


    //Build android. Enter the command with BUILD_WITH_GST=true if you want to use gstreamer

    make TARGET_PRODUCT=beagleboard BUILD_WITH_GST=true dvsdk


2.  Checkout and Build Helix
Make sure you "export SYSTEM_ID = android-eclair-arm-beagle" to point to the right configuration file before you continue the following steps.

cd ~/beagle-build/helix-omx

build.py

Enter '0' and choose helix branch 'hxclient_3_7_1_atlas'

Enter '2' and set the profile as 'helix-client-android-full'

Enter '1', then enter '3' to  choose 'List player targets', and set the build target as android_omx

After above steps, the Build System Menu will be:
Ribosome v2.5.11
-> Current Directory: /home/rhuang/beagle-build/helix-omx
[0] Set BIF branch (hxclient_3_7_1_atlas)
[1] Set Target(s) (android_omx)
[2] Set Profile (/home/rhuang/beagle-build/build/umakepf/helix-client-android-full)
[3] run: build -trelease
[4] Toggle make depend & makefiles (-e -n)
[5] Toggle release (-trelease)
[6] Toggle 'make clean'  (-c)
[7] Toggle clobber (Dangerous!) (-C)
[8] Toggle halt-on-error (-p green)
[9] Toggle verbose mode (-v)
[10] Toggle static build (-tnodll)
[11] Checkout source for selected target now
[12] Set Tag/Branch/Timestamp
[13] Help Page (full help in build/doc/index.html)
[14] run history: build -trelease
[Q] Quit


After that, continue with steps:

Step 1) Enter "11" to checkout the code.

Step 2) Follow instructions in player/kit/android/readme to patch Android. Example: Image:Android eclair patch.diff
Step 3) Enter "3" to build Helix. The build result will be as follows. The failed 3 modules are related to proprietary Real audio/video codec.  You can neglect them.

     ... ...

   Build Complete: Mon Jul 19 19:10:42 2010
   MD5 (release/log.so)..................fb9ec4d9eabfab6039bf1d0217645406
   MD5 (release/logobserverfile.so)......65a5e5307830a9ee625d65c3f9a118a7
   MD5 (release/omxcomlib.a).............3d854f594c54dd77192a8e4ac9617ad7
   MD5 (release/omxv.so).................f8c9ed12e8db541d17a0310692de2118
   Build complete in 05:59, 3 of 173 modules failed.


3. Build Patched Android Again

 cd ~/rowboat-android-eclair

 make TARGET_PRODUCT=beagleboard


4. Install Binary Code To SD Card

Here we assume you already create a dual-partition SD card. The first partion is labeled with 'boot' and the 2nd partion is labeled with 'root'. Instructions refer to the online documentations: http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat


4.1  Configure the Bealgboard boot command arguments

    setenv bootargs  'androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw init=/init rootwait omap-dss.def_disp=dvi omapfb.video_mode=1024x768MR-16@60  mdev -s mem=88M@0x80000000 mem=128M@0x88000000'

    saveenv


4.2  Install SGX driver (Optional)

   cd ~/rowboat-android-eclair /OMAP35x_Android_Graphics_SDK_3_01_00_03/

    make install OMAPES=3.x   

   vim android_rootfs/init.rc

  // Add below two lines below line "# adbd is controlled by ... "

           # Start PowerVR SGX DDK
           service pvr /system/bin/sgx/rc.pvr start


4.3  Install Android binary code

   cd ~/rowboat-android-eclair /

   cp kernel/arch/arm/boot/uImage /media/boot

   cd ~/rowboat-android-eclair /out/target/product/beagleboard

   cp root/* /media/root -rf

   cp system /media/root -rf


4.4  Download HelixPlayer.apk or RealPlayer.apk from https://helixcommunity.org/projects/beagleboard/files, and copy it to directory /media/root/system/app


4.5  Install Helix Engine Library

   mkdir /media/root/data/helix

   cd ~/beagle-build/helix-omx/release

   rm log.so

   rm logobserverfile.so

   cp *.so /media/root/data/helix

   cp splay /media/root/helix


4.6 Copy vido/audio clips to the first partition of the SD card.


4.7  Boot Beageboard and Play multimedia clips with RealPlayer

At the first time you run RealPlayer, if the playable files in your SD card  is not listed, use "Dev Tools --> Media Scanner" to scan the clips.

Note that the maximum resolution supported by the TI is 856*480 or 720*576. In the currently setting we set it as 800*480. So make sure you clip meets the requirement, otherwise the decoder will fail. For H264, only basic profile is supported. More specification information can be found in external/ti-dsp/dvsdk_3_01_00_10/cs1omap3530_1_01_00/packages/ti/sdo/codecs. You can use the software mediainfo to see the exact information of your clips.