Building android-4.0.4 IceCreamSandwich on Pandaboard/Pandaboard ES

This is the 2nd post about building Android for pandaboard. I quote from the previous post

Google maintainers advise to always repo sync the master branch for panda claiming it’s the most stable , but in my opinion they should focus on stabilizing tags. Tags should represent a stable snapshot of he source tree to build and run . That’s what a tag means in Software Engineering anyway !

This post is a translated version of the Japanese post on blog.sola-dolphin-1.net reposted under permission of the main author  that describes how to build Android JB tag android-4.0.4_r1.2 for pandaboard, of course some patching is required to get it work, you can download all the patches required from this mirror or follow the steps to get them one by one from the main mirror.

android-4.0.4

IMPORTANT: To compile ICS you need to be using gcc 4.4 , so you may downgrade your gcc version or just installing gcc/gcc++ 4.4 and specifying them while making.

$ sudo apt-get install gcc-4.4 gcc-4.4-multilib g++-4.4 g++-4.4-multilib


Then, override make’s default variables with

$ make CC=gcc-4.4 CXX=g++-4.4 -j4

– prepare the directory

$ mkdir ~/panda_work
$ export PANDA_WORK=~/panda_work
$ mkdir ~/panda_work/android
$ export ANDROID_ROOT=~/panda_work/android

– init the repo

$ cd $ANDROID_ROOT
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1
$ repo sync

notes:

  1. to save time you can use an old tree and repo init inside it’s dir , then sync will grab only the differences
  2. in case repo sync hangs use repo sync -j1 to disable multi threading also check repo sync -h for other options

– get the gpu user space binaries

$ wget https://dl.google.com/dl/android/aosp/imgtec-panda-20120430-67545da7.tgz
$ tar zxvf imgtec-panda-20120430-67545da7.tgz
$ ./extract-imgtec-panda.sh

– apply the patches

$ wget http://android-development-environment.googlecode.com/files/panda.ics.patch.tar.bz2
$ tar jxvf panda.ics.patch.tar.bz2
$ cd device/ti/panda 
$ git apply panda.ics.patch/0001-merge-master-to-device-ti-panda.patch # merges the contents of master branch into /device/ti/panda
$ cd ..
$ tar jxvf panda.ics.patch/hardware_ti_wlan.tar.bz2 -C hardware/ti/ # merges the contents of master branch
$ tar jxvf panda.ics.patch/hardware_ti_wpan.tar.bz2 -C hardware/ti/ # merges the contents of master branch
$ git apply panda.ics.patch/0003-Change-ALOG-to-LOG.patch # fixes a bug
$ git apply panda.ics.patch/0004-enable-wifi.patch # merges the contents of master branch to enable wifi
$ git apply panda.ics.patch/0005-change-console-permission.patch # root permssion to console

– add the script of flashing or you can use fastboot instead , but note that this script will create an extra partition (/media)

$ git apply panda.ics.patch/0008-add-mksdcard_pandaboard.sh.patch

– build the tree

$ cd $ANDROID_ROOT
$ source build/envsetup.sh
$ lunch full_panda-userdebug
$ make CC=gcc-4.4 CXX=g++-4.4 -j4

– format and flash from a ubuntu machine, /dev/sdx is the the sdcard device

$ LANG=C sudo ./mksdcard_pandaboard.sh /dev/sdX $ANDROID_ROOT

kernel

– prepare the environment

$ export ARCH=arm
$ export CROSS_COMPILE=$ANDROID_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-

– clone the repo

$ cd $PANDA_WORK
$ git clone https://android.googlesource.com/kernel/omap.git kernel
$ cd kernel
$ git checkout -b android-omap-panda-3.0 origin/android-omap-panda-3.0
$ git checkout 52f476403350050beb0dff135a55c06c9e7a82a9

– build

$ make panda_defconfig
$ make -j4
$ cp -a arch/arm/boot/zImage $ANDROID_ROOT/device/ti/panda/kernel

note: though bootloader and xloader images are provided within device/ti/panda dir , you can build them from source using the following instructions

xloader

– build xloader

$ cd $PANDA_WORK
$ git clone git://git.omapzoom.org/repo/x-loader.git
$ cd x-loader
$ git checkout -b omap4_dev origin/omap4_dev
$ make omap4430panda_config
$ make ift
$ cp -a MLO $ANDROID_ROOT/device/ti/panda/xloader.bin

bootlader(uboot)

– clone the repo

$ cd $PANDA_WORK
$ git clone git://git.omapzoom.org/repo/u-boot.git
$ cd u-boot
$ git checkout -b omap4_dev origin/omap4_dev

– change the boot parameters

$ wget http://android-development-environment.googlecode.com/files/0001-change-bootarges.patch
$ git apply 0001-change-bootarges.patch

– build

$ make omap4430panda_config
$ make
$ cp -a u-boot.bin $ANDROID_ROOT/device/ti/panda/bootloader.bin

3 thoughts on “Building android-4.0.4 IceCreamSandwich on Pandaboard/Pandaboard ES

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s