Open main menu

DAVE Developer's Wiki β

Changes

Android 4.0.3 ICS on DM814x (Naon)

2,398 bytes added, 14:32, 29 March 2013
Useful links
Texas Instruments provides the [http://www.ti.com/tool/ANDROIDSDK-SITARA Android developement kits] for the Sitara platform, but an official release for the DM814x/AM387x processor is not yet available. However, it is possible to build Android 4.0.3 Ice Cream Sandwich (ICS) for the DM814x/AM387x processor and make it run on the Naon/Maya/Dido SoMs.
 
For further information on Android, please visit [[:Category:Android|Android category page]].
== Useful links ==
* [http://gitorious.org/rowboat/manifest/blobs/master/rowboat-ics-ti81xx.xml Manifest file used for building]
* [http://source.android.com/source/downloading.html Downloading the source tree]
* [https://www.youtube.com/watch?v=bMv2U4gndmQ YouTube video: Android ICS running on Naon]
 
= Demo board =
 
Android 4.0.3 ICS has been built to run on the following system:
 
* Naon SOM with TI DM8148 processor
* [[:Category:NaonEVB-Lite |NaonEVB-Lite ]] carrier board with custom add-on to provide display support
* 800x480 LCD display (mod )
* Capacitive touch screen
 
[[File:Naon-android-ics-board.jpg|thumb|none|border|500px|Android ICS on Naon - Demo board]]
= Configuring the build system =
= Building Android =
 
== Building the kernel ==
Assuming that '''rowboat-android''' is the directory containing the full AOSP source code:
* '''out/target/product/ti814xevm/''' will contain the created root file system
To launch Android kernel build (please note that it will take some time, depending on the host system performaces) enter the following commands:
<pre>
 umask 0002export OUT_DIR_COMMON_BASEPATH=<path_to_toolchain>:$PATH export ARCH=armexport CROSS_COMPILE=/home/shared/devel/dave/naonarm-none-DAA/sw/linux/porsaria/android/rowboat-android/buildgnueabi-direxport OUT_DIR_COMMON_BASE=<path_to_build_directory>
export USE_CCACHE=1
export CCACHE_DIR=/home/shared/devel/dave/naon-DAA/sw/linux/porsaria/android/rowboat-android/cache<path_to_build_cache_directory>
make TARGET_PRODUCT=naon OMAPES=6.x
</pre>
=== Makefile customization ===
'''N.B''': The main '''Makefile''' must be modified at rows 71-73 so that the kernel configuration file naon_ics_defconfig is used instead of the default one.
<pre>
ifeq ($(TARGET_PRODUCT), naon)
</pre>
* == Building the RFS == To build the Android root file system (please note that it will take some time, depending on the host system performaces), launch the following commands: <pre>echo "Make new RFS..."sudo make TARGET_PRODUCT=naon OMAPES=6.x fs_tarballecho "DONE!"</pre> '''buildN.B''' tutti gli script per il build di androidfile modificato : The '''build/core/root.mk''' aggiungendo riga must be modified at row 13: 
<pre>
ifeq ($(TARGET_PRODUCT), naon)
else
</pre>
riga row 60 
<pre>
endif
</pre>
riga row 83
<pre>
ifeq ($(TARGET_PRODUCT), naon)
endif
</pre>
riga row 114
<pre>
ifeq ($(TARGET_PRODUCT), naon)
else
</pre>
riga row 125 
<pre>
endif
</pre>
* '''avvia_dbg.sh''' esegue il make con le opzioni di DEBUG per il kernel== Cleaning the build ==* '''mkRFS.sh''' crea il RFS** Nota: ho disabilitato la creazione del tar che nn server se si usa NFS. file '''build/tools/mktarball.sh'''* '''To clean.sh''' cancella la cartella di the build directory and repeat the process, just remove the '''out''' in modo che il successivo make compili tutto da capo.directory:  <pre>sudo rm -rf out</pre>
= Running Android on Naon =
 
== U-boot environment ==
 
The following u-boot environment variables must be set to run Android:
 
<pre>
naon_host=evb_lite_android
andrk=tftp ${loadaddr} android/uImage
andrroot=<path_to_android_rootfs>
andrcons=setenv bootargs ${bootargs} console=ttyO0,115200n8 androidboot.console=ttyO0 rootwait noinitrd init=/init rw earlyprintk
andrmem=setenv bootargs ${bootargs} mem=364M vram=16M notifyk.vpssm3_sva=${notify_mem}
andrenv-nfs=setenv bootargs root=/dev/nfs rw nfsroot=${nfsserverip}:${andrroot} panic=5 loglevel=6 rootdelay=5
andrenv-mmc=setenv bootargs root=/dev/mmcblk0p1 rootfstype=ext3 loglevel=8 rootdelay=2 panic=5
android=run andrk andrenv-nfs andrmem andrcons addip; bootm ${buf}
android-mmc=run andrk andrenv-mmc andrmem andrcons addip; bootm ${buf}
andrnand=run andrenv-mmc andrmem andrcons addip; sf probe 0:0; sf read ${loadaddr} 0x80000 0x400000; bootm ${loadaddr}
</pre>
 
== Display type and resolution ==
 
Android detects the display resolution from framebuffer settings. To change the resolution, the load parameter of the vpss.ko module must be adjusted into the rc.syslink init file. Some examples are the following:
 
* for HDMI output at 1080p, the parameter is'''mode=hdmi:1080p-60,dvo2:800x480@60'''
* for HDMI output at 1600x1200, the parameter is '''mode=hdmi:1600x1200@60,dvo2:800x480@60'''
* for the 800x480 LCD display, the parameter is '''mode=hdmi:800x480@60,dvo2:lcd-ta1h'''
 
== Screenshots ==
 
[[File:Naon-android-ics-boot.jpg|thumb|none|border|500px|Android ICS on Naon - Boot]]
 
[[File:Naon-android-ics-desktop.jpg|thumb|none|border|500px|Android ICS on Naon - Desktop]]
 
[[File:Naon-android-ics-apps.jpg|thumb|none|border|500px|Android ICS on Naon - Apps]]
 
[[File:Naon-android-ics-info.jpg|thumb|none|border|500px|Android ICS on Naon - Info Screen]]