Hi,
I'm still not able to get android to boot on the Overo. 

I do not see the logger message on the Overo console window. When I login as root in the console window and type ./init, I get a segmentaton fault. 

Here is the updated porting guide. 

The patches got applied with no errors. However, I'm not sure how to check to see if the android modules got pulled into the current build. I specified it as part of the android-makefile patch, to pull in all the required drivers. 

What could be going wrong at this stage?

Best regards,

Elvis

Document Version 0.9

Overview

This document describe the procedure to patch the Overo linux kernel to run the Android platform on the Overo Earth.

Procedure

Step 01.00: Set up the Overo build environment.

These instructions will assume that you are installing the build system in your home directory under "overo-oe". If you decide to put it elsewhere you will need to make appropriate alterations to the steps below.

First we will create the "overo-oe" directory and cd into it:

$ mkdir -p ~/overo-oe
$ cd ~/overo-oe

Then we will install the OE metatdata, and check out the overo branch (you can safely ignore the warnings you will get from the git commands):

$ git clone git://gitorious.org/gumstix-oe/mainline.git org.openembedded.dev
$ cd org.openembedded.dev
$ git checkout --track -b overo origin/overo

The next step installs BitBake:

$ cd ~/overo-oe
$ svn co svn://svn.berlios.de/bitbake/branches/bitbake-1.8/ bitbake


Step 01.01: Create the OE configuration files and profile.

We now will create a profile script and the configuration files required to tailor OE to our needs.

To make this a somewhat easier task, there is a template for the required files in the openembedded installation we just did.

Copy these files to your overo-oe directory:

$ cp -r org.openembedded.dev/contrib/gumstix/build .

If you have followed the example installation and placed the build system in overo-oe in your home directory, you are now ready to proceed to the next step. If you have installed the build system in a different location you will need to edit overo-oe/build/profile and change the definition of OVEROTOP as appropriate.

Step 01.02: Setup source code caching.

As part of the build process OpenEmbedded downloads source code tarballs for the linux kernel, compiler, and other software packages. 

By default this source code cache will be placed in overo-oe/sources. If you would like this cache to be located elsewhere, now is the time to edit build/conf/site.conf and set DL_DIR as appropriate.

For example, if you would like to cache the sources in /usr/share/sources, perform the following steps:

Add new group for cache management and add operating user to this group.

$ sudo groupadd oe
$ sudo usermod -a -G oe {your_username}

Next make source code storing directory and set owner and permission appropriately.

$ sudo mkdir /usr/share/sources
$ sudo chgrp oe /usr/share/sources
$ sudo chmod 0775 /usr/share/sources
$ sudo chmod ug+s /usr/share/sources

Edit the buid/conf/site.conf and set DL_DIR to /usr/share/sources as follows:

DL_DIR = "/usr/share/sources"

Step 01.03: Setup environment variables.

Press ctrl+h to display all hidden files. 

Setup environment variables by modifying you bash profile.

Copy the contents of ~/gumstix-oe/extras/profile to you .bashrc file.

$ cp ~/.bashrc ~/bashrc.bak
$ cat ~/overo-oe/build/profile >> ~/.bashrc

Step 01.04: Modify the OE sources

overo-oe/conf/auto.conf
overo-oe/conf/local.conf
overo-oe/org.openembedded.dev/conf/machine/overo3503-palo43.conf
overo-oe/org.openembedded.dev/conf/distro/android-1.0.conf

Search for the omap3-console-image.bb file by typing the following command
find org.openembedded.dev -name *.bb | grep “omap*”

This should be located in the following folder:

overo-oe/org.openembedded.dev/recipies/images/

Create a copy of the following file:

recipies/images/omap3-console-image.bb 

and save it as 

recipies/images/omap3-android-image.bb


Step 02.00: Download the android-2.6.27 kernel sources.

Adapted from instructions outlined in Get source ‎(Android Open Source Project)‎.

Step 02.01: Create an empty directory to hold your working files: 

$ mkdir android
$ cd android

We’re only interested in getting the Android Kernel sources, so type the following command:

$ git clone git://android.git.kernel.org/kernel/common.git kernel

Step 02.02: Check out the android-2.6.27 kernel files.

Run the following command to checkout the android-2.6.29 kernel files:

$ cd kernel
$ git checkout --track -b android-2.6.27 origin/android-2.6.27

For a full list of available android kernel versions, go to http://android.git.kernel.org/?p=kernel/common.git;a=summary.

Note: If you want to switch back and forth between the android-2.6.29 and android-2.6.27 kernel, to check the files in the two branches, type

$ git checkout android-2.6.29
$ git checkout android-2.6.27


Step 03.00: Download the linux-2.6.29 kernel sources.


Step 03.01: Clone the linux-2.6 git repository. 

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
$ ls
$ kernel-2.6

Step 03.02: Switch to the linux-2.6.29 kernel files.

Run the following command to change the local working copy to the linux-2.6.29 kernel files:

$ cd kernel-2.6
$ git checkout v2.6.29

We’ll make some modifications to the linux-2.6/drivers/misc/Makefile to include the patched android drivers in a later step. 


Step 04.00: Make a set of patches using the android-2.6.27 and android-2.6.29 kernel sources.

To make a set of patches between the two kernel versions, type the following command:

$ git format-patch v2.6.30-rc1

Step 04.01: Create a set of patches for android-2.6.27 against the linux kernel v2.6.30-rc1.

$ git checkout android-2.6.27
$ git format-patch v2.6.30-rc1

 Move the patches in the recipes/linux/linux-omap3-2.6.29/android-2.6.27 folder and add them to the SRC_URI of the linux-omap3_2.6.29.bb recipe.

To make things easier, get the list of file names by typing ls > android-2.6.27-patchfilelist., and copy paste all the file names to the linux-omap3_2.6.29.bb recipe.

Step 04.02: Create a set of patches for android-2.6.29 against the linux kernel v2.6.30-rc1.

$ git checkout android-2.6.29
$ git format-patch v2.6.30-rc1

Move the patches in the recipes/linux/linux-omap3-2.6.29/android-2.6.29 folder and add them to the SRC_URI of the linux-omap3_2.6.29.bb recipe.

To make things easier, get the list of file names by typing ls > android-2.6.27-patchfilelist., and copy paste all the file names to the linux-omap3_2.6.29.bb recipe.

Note: 

01. For the Gizmo-DO, we will need to incorporate the TSC2046 touchscreen chip. 

02. For the Palo43. we will need to incorporate the TI ADS7846 touchscreen driver.

03. You don't need YAFFS2. It is used by Android because it is a lot faster at startup.

04. Goldfish is the device name for the simulated armv5 target used with qemu to run Android on a host.

Step 04.03: Create a patch for the /drivers/misc/Makefile for linux-2.6.29 kernel version.

Change to the following folder:

$ cd kernel-2.6/drivers/misc
$ vi Makefile

Modify the contents of drivers/misc/Makefile as follows:

#
# Makefile for misc devices that really don't fit anywhere else.
#

obj-$(CONFIG_IBM_ASM) += ibmasm/
obj-$(CONFIG_HDPU_FEATURES) += hdpuftrs/
obj-$(CONFIG_ATMEL_PWM) += atmel_pwm.o
obj-$(CONFIG_ATMEL_SSC) += atmel-ssc.o
obj-$(CONFIG_ATMEL_TCLIB) += atmel_tclib.o
obj-$(CONFIG_ICS932S401) += ics932s401.o
obj-$(CONFIG_LKDTM) += lkdtm.o
obj-$(CONFIG_TIFM_CORE)     += tifm_core.o
obj-$(CONFIG_TIFM_7XX1)     += tifm_7xx1.o
obj-$(CONFIG_PHANTOM) += phantom.o
obj-$(CONFIG_SGI_IOC4) += ioc4.o
obj-$(CONFIG_ENCLOSURE_SERVICES) += enclosure.o
obj-$(CONFIG_KGDB_TESTS) += kgdbts.o
obj-$(CONFIG_SGI_XP) += sgi-xp/
obj-$(CONFIG_SGI_GRU) += sgi-gru/
obj-$(CONFIG_HP_ILO) += hpilo.o
obj-$(CONFIG_C2PORT) += c2port/
obj-y += eeprom/
obj-$(CONFIG_LOW_MEMORY_KILLER) += lowmemorykiller.o
obj-$(CONFIG_ANDROID_RAM_CONSOLE) += ram_console.o
obj-$(CONFIG_BINDER_IPC) += binder.o
obj-$(CONFIG_LOGGER) += logger.o
obj-$(CONFIG_TIMED_GPIO) += timed_gpio.o
obj-$(CONFIG_TIMED_OUTPUT) += timed_output.o

To create a patch file, type: 

$ git diff > android-2.6.29-makefile.patch

Copy the generated patch file to the following folder:

overo-oe/org.openembedded.dev/recipies/linux/linux-omap3-2.6.29

Step 04.04: Modify the linux-omap3-2.6.29.bb recipie.

Open the recipe file:

overo-oe/org.openembedded.dev/recipies/linux/linux-omap3-2.6.29.bb

Modify its contents as follows:

require linux.inc

DESCRIPTION = "Linux kernel for OMAP3 processors"
KERNEL_IMAGETYPE = "uImage"

COMPATIBLE_MACHINE = "beagleboard|omap3evm|overo"

SRCREV = "90e758af52ba803cba233fabee81176d99589f09"

PV = "2.6.29"
PR = "r15"

SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;branch=master;protocol=git \
  file://defconfig \
          "

SRC_URI_append = " \
           file://logo_linux_clut224.ppm \
           file://no-empty-flash-warnings.patch;patch=1 \
           file://fix-install.patch;patch=1 \
           file://fix-audio-capture.patch;patch=1 \
           file://beagle-asoc.patch;patch=1 \
           file://smsc911x-1.patch;patch=1 \
           file://smsc911x-2.patch;patch=1 \
           file://smsc911x-3.patch;patch=1 \
           file://smsc911x-4.patch;patch=1 \
           file://dss2.patch;patch=1 \
           file://musb-otg.patch;patch=1 \
           file://mmc.patch;patch=1 \
           file://ads7846-detection.patch;patch=1 \
           file://neon-deadlock.patch;patch=1 \
#   file://android-2.6.27/0001-PM-Add-wake-lock-api.patch;patch=1 \
#   file://android-2.6.27/0002-PM-Add-early-suspend-api.patch;patch=1 \
#   file://android-2.6.27/0003-PM-Implement-wakelock-api.patch;patch=1 \
#   file://android-2.6.27/0004-PM-Implement-early-suspend-api.patch;patch=1 \
#   file://android-2.6.27/0005-PM-Enable-early-suspend-through-sys-power-state.patch;patch=1 \
#   file://android-2.6.27/0006-PM-Add-user-space-wake-lock-api.patch;patch=1 \
#   file://android-2.6.27/0007-PM-wakelock-Abort-task-freezing-if-a-wake-lock-is.patch;patch=1 \
#   file://android-2.6.27/0008-PM-earlysuspend-Add-console-switch-when-user-reque.patch;patch=1 \
#   file://android-2.6.27/0009-PM-earlysuspend-Removing-dependence-on-console.patch;patch=1 \
#   file://android-2.6.27/0010-rtc-Add-android-alarm-driver.patch;patch=1 \
#   file://android-2.6.27/0011-rtc-Try-to-prevent-RTC-errors-from-accumulating.patch;patch=1 \
#   file://android-2.6.27/0012-ledtrig-sleep-Add-led-trigger-for-sleep-debugging.patch;patch=1 \
#   file://android-2.6.27/0013-PM-Wait-for-console-in-resume.patch;patch=1 \
#   file://android-2.6.27/0014-PM-Fix-suspend_console-resume_console-use-only-one.patch;patch=1 \
#   file://android-2.6.27/0015-switch-switch-class-and-GPIO-drivers.patch;patch=1 \
  file://android-2.6.27/0016-lowmemorykiller-Initial-support-for-2.6.27.patch;patch=1 \
  file://android-2.6.27/0017-android-ram_console-Initial-support-for-2.6.27.patch;patch=1 \
  file://android-2.6.27/0018-Add-binder-driver.patch;patch=1 \
  file://android-2.6.27/0019-logger-for-2.6.27.patch;patch=1 \
  file://android-2.6.27/0020-timed_gpio-driver-for-GPIOs-that-turn-back-off-afte.patch;patch=1 \
#   file://android-2.6.27/0021-pmem-Add-pmem-driver.patch;patch=1 \
#   file://android-2.6.27/0022-Add-android_aid.h.patch;patch=1 \
#   file://android-2.6.27/0023-ashmem-for-2.6.27.patch;patch=1 \
#   file://android-2.6.27/0024-Paranoid-network.patch;patch=1 \
#   file://android-2.6.27/0025-net-socket-ioctl-to-reset-connections-matching-loca.patch;patch=1 \
#   file://android-2.6.27/0026-printk-Fix-log_buf_copy-termination.patch;patch=1 \
#   file://android-2.6.27/0027-Add-build-option-to-to-set-the-default-panic-timeout.patch;patch=1 \
#   file://android-2.6.27/0028-FAT-Add-new-ioctl-VFAT_IOCTL_GET_VOLUME_ID-for-read.patch;patch=1 \
#   file://android-2.6.27/0029-Grants-system-server-access-to-proc-pid-oom_adj-f.patch;patch=1 \
#   file://android-2.6.27/0030-Make-dev-mem-configurable-as-we-don-t-want-it.patch;patch=1 \
#   file://android-2.6.27/0031-sysfs_net_ipv4-Add-sysfs-based-knobs-for-controllin.patch;patch=1 \
#   file://android-2.6.27/0032--ARM-Add-code-to-prevent-system-calls-from-being-re.patch;patch=1 \
#   file://android-2.6.27/0033--ARM-Fix-v6_early_abort-to-not-trash-r0-if-strex-su.patch;patch=1 \
#   file://android-2.6.27/0034--ARM-Save-thread-registers-in-coredumps.patch;patch=1 \
#   file://android-2.6.27/0035--ARM-armv6-dcc-tty-driver.patch;patch=1 \
#   file://android-2.6.27/0036-yaffs-Import-yaffs-from-Mon-Oct-13-03-47-26-2008-0.patch;patch=1 \
#   file://android-2.6.27/0037-yaffs-Set-YAFFS_IGNORE_TAGS_ECC-if-compiled-without.patch;patch=1 \
#   file://android-2.6.27/0038-yaffs-Pass-trough-single-bit-errors-from-MTD.patch;patch=1 \
#   file://android-2.6.27/0039-yaffs-Enable-automatic-checkpointing.patch;patch=1 \
#   file://android-2.6.27/0040-yaffs-Add-yaffs_auto_checkpoint-parameter.patch;patch=1 \
#   file://android-2.6.27/0041-yaffs-Don-t-trust-checkpoint-objects-to-have-a-dire.patch;patch=1 \
#   file://android-2.6.27/0042-yaffs-Don-t-crash-when-mounting-a-filesystem-with-i.patch;patch=1 \
#   file://android-2.6.27/0043-yaffs-Add-bad-block-sequence-number-and-use-it-if-y.patch;patch=1 \
#   file://android-2.6.27/0044-yaffs-Update-stats-when-using-mtdif2.patch;patch=1 \
#   file://android-2.6.27/0045-kernel_debugger_core-add-interrupt-context-debugger.patch;patch=1 \
#   file://android-2.6.27/0046-kernel_debugger_core-Add-sysrq-command.patch;patch=1 \
#   file://android-2.6.27/0047-Input-Generic-GPIO-Input-device.patch;patch=1 \
#   file://android-2.6.27/0048-Input-Hold-wake-lock-while-event-queue-is-not-empty.patch;patch=1 \
#   file://android-2.6.27/0049-Input-Use-monotonic-time-for-event-time-stamps.patch;patch=1 \
#   file://android-2.6.27/0050-Input-synaptics_i2c_rmi-Driver-for-Synaptics-Touch.patch;patch=1 \
#   file://android-2.6.27/0051-pca963x-Phillips-PCA963X-4-bit-i2c-led-driver.patch;patch=1 \
#   file://android-2.6.27/0052-amk8976-Adding-support-for-AKM8976-compass-driver.patch;patch=1 \
#   file://android-2.6.27/0053-mmc-Add-status-IRQ-and-status-callback-function-to.patch;patch=1 \
#   file://android-2.6.27/0054-mmc-sd-Add-new-CONFIG_MMC_PARANOID_SD_INIT-for-ena.patch;patch=1 \
#   file://android-2.6.27/0055-mmc-Add-concept-of-an-embedded-SDIO-device.patch;patch=1 \
#   file://android-2.6.27/0056-trout-Add-functions-for-WiFi.patch;patch=1 \
#   file://android-2.6.27/0057-mmc-Add-new-API-call-sdio_reset_comm-for-resettin.patch;patch=1 \
#   file://android-2.6.27/0058-ARM-Make-low-level-printk-work.patch;patch=1 \
#   file://android-2.6.27/0059-yaffs-Pass-GFP_NOFS-to-kmalloc.patch;patch=1 \
#   file://android-2.6.27/0060-bluetooth-Respect-HCI_UART_DEBUG-config-in-hci_ll.c.patch;patch=1 \
#   file://android-2.6.27/0061-pmem-Use-the-thread-group-leader-insted-of-the-curr.patch;patch=1 \
#   file://android-2.6.27/0062-bluetooth-Drop-ACL-link-after-2-seconds-not-10-ms-w.patch;patch=1 \
#   file://android-2.6.27/0063--Bluetooth-Forcably-disable-eSCO.patch;patch=1 \
#   file://android-2.6.27/0064-paranoid-networking-Use-in_egroup_p-to-check-grou.patch;patch=1 \
#   file://android-2.6.27/0065-input-Add-keyreset-driver.patch;patch=1 \
#   file://android-2.6.27/0066-mmc-sd-When-resuming-try-a-little-harder-to-init.patch;patch=1 \
#   file://android-2.6.27/0067-switch-Export-symbol-switch_set_state.patch;patch=1 \
#   file://android-2.6.27/0068-fs-Export-symbol-do_fsync.patch;patch=1 \
#   file://android-2.6.27/0069-mmc-mmcblk-Add-new-feature-CONFIG_MMC_BLOCK_PARAN.patch;patch=1 \
#   file://android-2.6.27/0070-mmc-sd-Add-retries-in-re-detection.patch;patch=1 \
#   file://android-2.6.27/0071-android_usb-Composite-USB-gadget-driver-for-android.patch;patch=1 \
#   file://android-2.6.27/0072-cpufreq-Fix-on-resume-now-preserves-user-policy-mi.patch;patch=1 \
#   file://android-2.6.27/0073-PM-wakelock-Replace-expire-work-with-a-timer.patch;patch=1 \
#   file://android-2.6.27/0074-rfkill-Introduce-CONFIG_RFKILL_PM-and-use-instead-o.patch;patch=1 \
#   file://android-2.6.27/0075-Input-gpio_event-Fix-spinlocks.patch;patch=1 \
#   file://android-2.6.27/0076-Input-keyreset-Initialize-spinlock.patch;patch=1 \
#   file://android-2.6.27/0077-switch-gpio-Don-t-call-request_irq-with-interrupts.patch;patch=1 \
#   file://android-2.6.27/0078-sched-Enable-might_sleep-before-initializing-driver.patch;patch=1 \
#   file://android-2.6.27/0079-input-keychord-Add-keychord-driver.patch;patch=1 \
#   file://android-2.6.27/0080-tiwlan-Add-abstract-wifi-control-functions-support.patch;patch=1 \
#   file://android-2.6.27/0081--Bluetooth-Fix-SCO-connection-issue.patch;patch=1 \
  file://android-2.6.27/0082-timed_gpio-Rename-android_timed_gpio-to-timed_gpio.patch;patch=1 \
#   file://android-2.6.27/0083-uidstat-Adding-uid-stat-driver-to-collect-network-s.patch;patch=1 \
#   file://android-2.6.27/0084-yaffs-Consolidate-post-restore-clean-up-of-unlinked.patch;patch=1 \
  file://android-2.6.27/0085-timed_gpio-Separate-timed_output-class-into-a-separ.patch;patch=1 \
#   file://android-2.6.27/0086-Bluetooth-Pause-RFCOMM-tx-connection-when-encryptio.patch;patch=1 \
#   file://android-2.6.27/0087-Bluetooth-Disconnect-L2CAP-connections-without-encr.patch;patch=1 \
#   file://android-2.6.27/0088-Bluetooth-Set-RFCOMM_SEC_PENDING-flag-when-the-stat.patch;patch=1 \
#   file://android-2.6.27/0089-yaffs2-Fix-tracing-variable-placement.patch;patch=1 \
#   file://android-2.6.27/0090-yaffs2-Ignore-chunks-with-unfixed-ECC-during-yaffs2.patch;patch=1 \
#   file://android-2.6.27/0091-ram_console-Disable-ECC-when-early-init-is-enabled.patch;patch=1 \
  file://android-2.6.27/0092-lowmemorykiller-Only-iterate-over-process-list-when.patch;patch=1 \
  file://android-2.6.27/0093-lowmemorykiller-Don-t-count-free-space-unless-it-me.patch;patch=1 \
#   file://android-2.6.27/0094-Bluetooth-Enable-eSCO-capability.patch;patch=1 \
#   file://android-2.6.27/0095-Revert-Bluetooth-Fix-SCO-connection-issue.patch;patch=1 \
#   file://android-2.6.27/0096-Bluetooth-Fix-SCO-state-handling-for-incoming-conne.patch;patch=1 \
#   file://android-2.6.27/0097-pagemap-Don-t-drop-the-upper-32-bits-of-the-64-bit.patch;patch=1 \
#   file://android-2.6.27/0098-pmem-Add-some-apis-to-reference-and-flush-pmem-file.patch;patch=1 \
#   file://android-2.6.27/0099-Bluetooth-Add-SCO-fallback-for-eSCO-connection-atte.patch;patch=1 \
#   file://android-2.6.27/0100-Bluetooth-Fix-race-condition-with-L2CAP-information.patch;patch=1 \
#   file://android-2.6.27/0101-Bluetooth-Fix-double-L2CAP-connection-request.patch;patch=1 \
#   file://android-2.6.27/0102-pmem-Remove-unused-depricated-fd-api-to-pmem.patch;patch=1 \
#   file://android-2.6.27/0103-USB-android-gadget-add-remote-wakeup-attribute-to.patch;patch=1 \
#   file://android-2.6.27/0104-pmem-Remove-error-message-when-calling-get_pmem_add.patch;patch=1 \
#   file://android-2.6.27/0105-switch-Use-device_create-instead-of-device_create_d.patch;patch=1 \
  file://android-2.6.27/0106-timed_output-Use-device_create-instead-of-device_cr.patch;patch=1 \
#   file://android-2.6.27/0107-input-keyreset-Fix-2.6.29-build.patch;patch=1 \
  file://android-2.6.27/0108-binder-Fix-2.6.29-build.patch;patch=1 \
#   file://android-2.6.27/0109-bluetooth-Fix-2.6.29-build.patch;patch=1 \
#   file://android-2.6.27/0110-net-Fix-2.6.29-build.patch;patch=1 \
#   file://android-2.6.27/0111-i2c-akm8976-Add-proper-probe-function-provide-ha.patch;patch=1 \
#   file://android-2.6.27/0112-cpufreq-Governor-poll-frequency-tuneables-exported.patch;patch=1 \
#   file://android-2.6.27/0113-mm-Add-min_free_order_shift-tunable.patch;patch=1 \
#   file://android-2.6.27/0114--docs-android-Add-android-config-documentation-to.patch;patch=1 \
#   file://android-2.6.27/0115-Input-synaptics_i2c_rmi-Retry-read-if-i2c_transfer.patch;patch=1 \
#   file://android-2.6.27/0116-USB-move-isp1301_omap-to-drivers-usb-otg.patch;patch=1 \
#   file://android-2.6.27/0117-USB-otg-gpio_vbus-transceiver-stub.patch;patch=1 \
#   file://android-2.6.27/0118-USB-otg-sharable-otg-transceiver-ops.patch;patch=1 \
#   file://android-2.6.27/0119-USB-otg-twl4030-transceiver-driver.patch;patch=1 \
#   file://android-2.6.27/0120-mm-Check-if-any-page-in-a-pageblock-is-reserved-bef.patch;patch=1 \
#   file://android-2.6.27/0121-block-block_dump-Add-number-of-sectors-to-debug-ou.patch;patch=1 \
#   file://android-2.6.27/0122-fs-block_dump-Don-t-display-inode-changes-if-block.patch;patch=1 \
#   file://android-2.6.27/0123-mmc-core-Hold-a-wake-lock-accross-delayed-work-m.patch;patch=1 \
#   file://android-2.6.27/0124-mmc-sd-Remove-debugging-printk.patch;patch=1 \
#   file://android-2.6.29/0001-Bluetooth-Fix-issue-with-return-value-of-rfcomm_soc.patch;patch=1 \
#   file://android-2.6.29/0002-Bluetooth-Preparation-for-usage-of-SOL_BLUETOOTH.patch;patch=1 \
#   file://android-2.6.29/0003-Bluetooth-Add-global-deferred-socket-parameter.patch;patch=1 \
#   file://android-2.6.29/0004-Bluetooth-Add-support-for-deferring-RFCOMM-connecti.patch;patch=1 \
#   file://android-2.6.29/0005-Bluetooth-Add-support-for-deferring-L2CAP-connectio.patch;patch=1 \
#   file://android-2.6.29/0006-Bluetooth-Reject-incoming-SCO-connections-without-l.patch;patch=1 \
#   file://android-2.6.29/0007-Bluetooth-Fix-SCO-state-handling-for-incoming-conne.patch;patch=1 \
#   file://android-2.6.29/0008-Bluetooth-Add-enhanced-security-model-for-Simple-Pa.patch;patch=1 \
#   file://android-2.6.29/0009-Bluetooth-Replace-L2CAP-link-mode-with-security-lev.patch;patch=1 \
#   file://android-2.6.29/0010-Bluetooth-Replace-RFCOMM-link-mode-with-security-le.patch;patch=1 \
#   file://android-2.6.29/0011-Bluetooth-Pause-RFCOMM-TX-when-encryption-drops.patch;patch=1 \
#   file://android-2.6.29/0012-Bluetooth-Disconnect-L2CAP-connections-without-encr.patch;patch=1 \
#   file://android-2.6.29/0013-Bluetooth-Restrict-application-of-socket-options.patch;patch=1 \
#   file://android-2.6.29/0014-Bluetooth-Update-version-numbers.patch;patch=1 \
#   file://android-2.6.29/0015-Bluetooth-Remove-CONFIG_DEBUG_LOCK_ALLOC-ifdefs.patch;patch=1 \
#   file://android-2.6.29/0016-Bluetooth-Eliminate-a-sparse-warning-in-bt3c-driver.patch;patch=1 \
#   file://android-2.6.29/0017-Bluetooth-When-encryption-is-dropped-do-not-send-R.patch;patch=1 \
#   file://android-2.6.29/0018-Bluetooth-Submit-bulk-URBs-along-with-interrupt-URB.patch;patch=1 \
#   file://android-2.6.29/0019-Bluetooth-Don-t-check-encryption-for-L2CAP-raw-sock.patch;patch=1 \
#   file://android-2.6.29/0020-Bluetooth-Add-SCO-fallback-for-eSCO-connection-atte.patch;patch=1 \
#   file://android-2.6.29/0021-Bluetooth-Use-general-bonding-whenever-possible.patch;patch=1 \
#   file://android-2.6.29/0022-Bluetooth-Set-authentication-requirements-if-not-av.patch;patch=1 \
#   file://android-2.6.29/0023-Bluetooth-Fix-race-condition-with-L2CAP-information.patch;patch=1 \
#   file://android-2.6.29/0024-Bluetooth-Fix-double-L2CAP-connection-request.patch;patch=1 \
#   file://android-2.6.29/0025-Bluetooth-Don-t-enforce-authentication-for-L2CAP-PS.patch;patch=1 \
#   file://android-2.6.29/0026-Bluetooth-Request-L2CAP-fixed-channel-list-if-avail.patch;patch=1 \
#   file://android-2.6.29/0027-Bluetooth-Add-CID-field-to-L2CAP-socket-address-str.patch;patch=1 \
#   file://android-2.6.29/0028-Bluetooth-Ask-upper-layers-for-HCI-disconnect-reaso.patch;patch=1 \
#   file://android-2.6.29/0029-Bluetooth-Fix-authentication-requirements-for-L2CAP.patch;patch=1 \
#   file://android-2.6.29/0030-Bluetooth-Set-authentication-requirement-before-req.patch;patch=1 \
#   file://android-2.6.29/0031-Bluetooth-Fix-poll-misbehavior-when-using-BT_DEFE.patch;patch=1 \
#   file://android-2.6.29/0032-Bluetooth-Change-RFCOMM-to-use-BT_CONNECT2-for-BT_D.patch;patch=1 \
#   file://android-2.6.29/0033-Bluetooth-Disallow-usage-of-L2CAP-CID-setting-for-n.patch;patch=1 \
#   file://android-2.6.29/0034-Bluetooth-Fix-RFCOMM-usage-of-in-kernel-L2CAP-socke.patch;patch=1 \
#   file://android-2.6.29/0035-Bluetooth-Permit-BT_SECURITY-also-for-L2CAP-raw-soc.patch;patch=1 \
#   file://android-2.6.29/0036-Bluetooth-Move-hci_conn_del_sysfs-back-to-avoid-d.patch;patch=1 \
#   file://android-2.6.29/0037-Bluetooth-Remove-some-pointless-conditionals-before.patch;patch=1 \
#   file://android-2.6.29/0038-Bluetooth-Remove-some-pointless-conditionals-before.patch;patch=1 \
#   file://android-2.6.29/0039-Staging-android-binder-fix-printk-format-warnings.patch;patch=1 \
#   file://android-2.6.29/0040-Staging-android-ram_console-fix-printk-format-war.patch;patch=1 \
#   file://android-2.6.29/0041-Staging-Android-fix-more-printk-formats.patch;patch=1 \
#   file://android-2.6.29/0042-ARM-Make-low-level-printk-work.patch;patch=1 \
#   file://android-2.6.29/0043-Bluetooth-Fallback-from-eSCO-to-SCO-on-error-code-0.patch;patch=1 \
#   file://android-2.6.29/0044-binder-Remove-VM_EXEC-check.patch;patch=1 \
#   file://android-2.6.29/0045-binder-Don-t-create-two-proc-entries-with-the-same.patch;patch=1 \
#   file://android-2.6.29/0046-binder-mmap-fixes.patch;patch=1 \
#   file://android-2.6.29/0047-binder-Add-more-offset-validation.patch;patch=1 \
#   file://android-2.6.29/0048-binder-Keep-a-reference-to-the-files_struct-while-t.patch;patch=1 \
#   file://android-2.6.29/0049-binder-Cast-to-uintptr_t-instead-of-size_t-when-ali.patch;patch=1 \
#   file://android-2.6.29/0050-binder-Prevent-the-wrong-thread-from-adding-a-trans.patch;patch=1 \
#   file://android-2.6.29/0051-binder-Defer-flush-and-release-operations-to-avoid.patch;patch=1 \
#   file://android-2.6.29/0052-lowmemorykiller-Only-iterate-over-process-list-when.patch;patch=1 \
#   file://android-2.6.29/0053-lowmemorykiller-Don-t-count-free-space-unless-it-me.patch;patch=1 \
#   file://android-2.6.29/0054-timed_gpio-Separate-timed_output-class-into-a-separ.patch;patch=1 \
#   file://android-2.6.29/0055-mm-Add-min_free_order_shift-tunable.patch;patch=1 \
#   file://android-2.6.29/0056-mm-Check-if-any-page-in-a-pageblock-is-reserved-bef.patch;patch=1 \
#   file://android-2.6.29/0057-Add-build-option-to-to-set-the-default-panic-timeout.patch;patch=1 \
  file://android-2.6.29/0058-sched-Enable-might_sleep-before-initializing-driver.patch;patch=1 \
#   file://android-2.6.29/0059-Make-dev-mem-configurable-as-we-don-t-want-it.patch;patch=1 \
#   file://android-2.6.29/0060--ARM-Add-code-to-prevent-system-calls-from-being-re.patch;patch=1 \
#   file://android-2.6.29/0061--ARM-Save-thread-registers-in-coredumps.patch;patch=1 \
#   file://android-2.6.29/0062--ARM-armv6-dcc-tty-driver.patch;patch=1 \
#   file://android-2.6.29/0063-cpufreq-Governor-poll-frequency-tuneables-exported.patch;patch=1 \
  file://android-2.6.29/0064-PM-Add-wake-lock-api.patch;patch=1 \
  file://android-2.6.29/0065-PM-Add-early-suspend-api.patch;patch=1 \
  file://android-2.6.29/0066-PM-Implement-wakelock-api.patch;patch=1 \
  file://android-2.6.29/0067-PM-Implement-early-suspend-api.patch;patch=1 \
  file://android-2.6.29/0068-PM-Enable-early-suspend-through-sys-power-state.patch;patch=1 \
  file://android-2.6.29/0069-PM-Add-user-space-wake-lock-api.patch;patch=1 \
  file://android-2.6.29/0070-PM-wakelock-Abort-task-freezing-if-a-wake-lock-is.patch;patch=1 \
  file://android-2.6.29/0071-PM-earlysuspend-Add-console-switch-when-user-reque.patch;patch=1 \
  file://android-2.6.29/0072-PM-earlysuspend-Removing-dependence-on-console.patch;patch=1 \
  file://android-2.6.29/0073-rtc-Add-android-alarm-driver.patch;patch=1 \
#   file://android-2.6.29/0074-rtc-Try-to-prevent-RTC-errors-from-accumulating.patch;patch=1 \
#   file://android-2.6.29/0075-ledtrig-sleep-Add-led-trigger-for-sleep-debugging.patch;patch=1 \
  file://android-2.6.29/0076-switch-switch-class-and-GPIO-drivers.patch;patch=1 \
  file://android-2.6.29/0077-pmem-Add-pmem-driver.patch;patch=1 \
  file://android-2.6.29/0078-Add-android_aid.h.patch;patch=1 \
  file://android-2.6.29/0079-ashmem-for-2.6.27.patch;patch=1 \
#   file://android-2.6.29/0080-Paranoid-network.patch;patch=1 \
#   file://android-2.6.29/0081-net-socket-ioctl-to-reset-connections-matching-loca.patch;patch=1 \
#   file://android-2.6.29/0082-sysfs_net_ipv4-Add-sysfs-based-knobs-for-controllin.patch;patch=1 \
#   file://android-2.6.29/0083-uidstat-Adding-uid-stat-driver-to-collect-network-s.patch;patch=1 \
#   file://android-2.6.29/0084-FAT-Add-new-ioctl-VFAT_IOCTL_GET_VOLUME_ID-for-read.patch;patch=1 \
#   file://android-2.6.29/0085-Grants-system-server-access-to-proc-pid-oom_adj-f.patch;patch=1 \
  file://android-2.6.29/0086-Input-Generic-GPIO-Input-device.patch;patch=1 \
  file://android-2.6.29/0087-Input-Hold-wake-lock-while-event-queue-is-not-empty.patch;patch=1 \
#   file://android-2.6.29/0088-Input-Use-monotonic-time-for-event-time-stamps.patch;patch=1 \
#   file://android-2.6.29/0089-Input-synaptics_i2c_rmi-Driver-for-Synaptics-Touch.patch;patch=1 \
#   file://android-2.6.29/0090-input-Add-keyreset-driver.patch;patch=1 \
#   file://android-2.6.29/0091-input-keychord-Add-keychord-driver.patch;patch=1 \
#   file://android-2.6.29/0092-pca963x-Phillips-PCA963X-4-bit-i2c-led-driver.patch;patch=1 \
#   file://android-2.6.29/0093-mmc-Add-status-IRQ-and-status-callback-function-to.patch;patch=1 \
#   file://android-2.6.29/0094-mmc-sd-Add-new-CONFIG_MMC_PARANOID_SD_INIT-for-ena.patch;patch=1 \
#   file://android-2.6.29/0095-mmc-Add-concept-of-an-embedded-SDIO-device.patch;patch=1 \
#   file://android-2.6.29/0096-trout-Add-functions-for-WiFi.patch;patch=1 \
#   file://android-2.6.29/0097-mmc-Add-new-API-call-sdio_reset_comm-for-resettin.patch;patch=1 \
#   file://android-2.6.29/0098-mmc-sd-When-resuming-try-a-little-harder-to-init.patch;patch=1 \
#   file://android-2.6.29/0099-mmc-mmcblk-Add-new-feature-CONFIG_MMC_BLOCK_PARAN.patch;patch=1 \
#   file://android-2.6.29/0100-mmc-sd-Add-retries-in-re-detection.patch;patch=1 \
  file://android-2.6.29/0101-android_usb-Composite-USB-gadget-driver-for-android.patch;patch=1 \
#   file://android-2.6.29/0102-rfkill-Introduce-CONFIG_RFKILL_PM-and-use-instead-o.patch;patch=1 \
#   file://android-2.6.29/0103-tiwlan-Add-abstract-wifi-control-functions-support.patch;patch=1 \
  file://android-2.6.29/0104--docs-android-Add-android-config-documentation-to.patch;patch=1 \
#   file://android-2.6.29/0105-block-block_dump-Add-number-of-sectors-to-debug-ou.patch;patch=1 \
#   file://android-2.6.29/0106-fs-block_dump-Don-t-display-inode-changes-if-block.patch;patch=1 \
#   file://android-2.6.29/0107-mmc-core-Hold-a-wake-lock-accross-delayed-work-m.patch;patch=1 \
#   file://android-2.6.29/0108-mmc-sd-Remove-debugging-printk.patch;patch=1 \
#   file://android-2.6.29/0109-Revert-printk-remove-unused-code-from-kernel-print.patch;patch=1 \
#   file://android-2.6.29/0110-printk-Fix-log_buf_copy-termination.patch;patch=1 \
#   file://android-2.6.29/0111-kernel_debugger_core-add-interrupt-context-debugger.patch;patch=1 \
#   file://android-2.6.29/0112-kernel_debugger_core-Add-sysrq-command.patch;patch=1 \
#   file://android-2.6.29/0113-yaffs-Import-yaffs-from-Tue-Mar-17-01-12-00-2009-0.patch;patch=1 \
#   file://android-2.6.29/0114-yaffs-Set-YAFFS_IGNORE_TAGS_ECC-if-compiled-without.patch;patch=1 \
#   file://android-2.6.29/0115-yaffs-Pass-through-single-bit-errors-from-MTD.patch;patch=1 \
#   file://android-2.6.29/0116-yaffs-Update-stats-when-using-mtdif2.patch;patch=1 \
  file://android-2.6.29/0117-pmem-Add-include-sched.h-to-fix-compile-errors.patch;patch=1 \
  file://android-2.6.29-makefile.patch;patch=1 \
           "

SRC_URI_append_beagleboard = " \
           file://beagle-ehci.patch;patch=1 \
          "

SRC_URI_append_omap3evm = " \
          "

SRC_URI_append_overo = " \
           file://overo-ehci.patch;patch=1 \
          "


S = "${WORKDIR}/git"

Step 04.05: Modify the defconfig file in the linux-omap3-2.6.29/overo folder, and add the Android configuration entires.

 2.6.29 based Android Kernel features 

Belows is kernel feature for the 2.6.29 based android kernel: 

01). GoldFish : Qemutrace , FB Driver/RTC/Power/Nand/MMC/Events/tty/ audio for godlfish 
02). pmem : Android pmem allocator 
03). yaffs : mtdif2 
04). kernel debugger 
05). android USB : USB Gadget driver for android. 
06). HAL : TI Wifi Control Functions , Bluetooth (RFCOMM-L2CAP Socket) 
07). Android Shared Memory (ASHMEM) 
08). Paranoid  Network 
09). Binder: mmap fix , more offset validation 
10). Power : User Wake Lock , Wake Lock , Early Suspend , FB Eearlysuspend 
11). Logger Subsystem 
12). Low Memory Killer: /sys/module/lowmemorykiller/parameters/adj and minfree 
11). Etc : Timed GPIO / Timed Output 

Required enabled config options 

After building a standard defconfig, ensure that these options are  enabled in  your .config or defconfig if they are not already. Based off the  msm_defconfig.  You should keep the rest of the default options enabled in the  defconfig unless you know what you are doing. 

ANDROID_PARANOID_NETWORK 
ASHMEM 
CONFIG_FB_MODE_HELPERS 
CONFIG_FONT_8x16 
CONFIG_FONT_8x8 
CONFIG_YAFFS_SHORT_NAMES_IN_RAM 
DAB 
EARLYSUSPEND 
FB 
FB_CFB_COPYAREA 
FB_CFB_FILLRECT 
FB_CFB_IMAGEBLIT 
FB_DEFERRED_IO 
FB_TILEBLITTING 
HIGH_RES_TIMERS 
INOTIFY 
INOTIFY_USER 
INPUT_EVDEV 
INPUT_GPIO 
INPUT_MISC 
LEDS_CLASS 
LEDS_GPIO 
LOCK_KERNEL 
LOGGER 
LOW_MEMORY_KILLER 
MISC_DEVICES 
NEW_LEDS 
NO_HZ 
POWER_SUPPLY 
PREEMPT 
RAMFS 
RTC_CLASS 
RTC_LIB 
SWITCH 
SWITCH_GPIO 
TMPFS 
UID_STAT 
UID16 
USB_FUNCTION 
USB_FUNCTION_ADB 
USER_WAKELOCK 
VIDEO_OUTPUT_CONTROL 
WAKELOCK 
YAFFS_AUTO_YAFFS2 
YAFFS_FS 
YAFFS_YAFFS1 
YAFFS_YAFFS2 

Required disabled config options 

CONFIG_YAFFS_DISABLE_LAZY_LOAD 
DNOTIFY 

Recommended enabled config options 

ANDROID_PMEM 
ANDROID_RAM_CONSOLE 
ANDROID_RAM_CONSOLE_ERROR_CORRECTION 
SCHEDSTATS 
DEBUG_PREEMPT 
DEBUG_MUTEXES 
DEBUG_SPINLOCK_SLEEP 
DEBUG_INFO 
FRAME_POINTER 
CPU_FREQ 
CPU_FREQ_TABLE 
CPU_FREQ_DEFAULT_GOV_ONDEMAND 
CPU_FREQ_GOV_ONDEMAND 
CRC_CCITT 
EMBEDDED 
INPUT_TOUCHSCREEN 
I2C 
I2C_BOARDINFO 
LOG_BUF_SHIFT=17 
SERIAL_CORE 
SERIAL_CORE_CONSOLE 

Step 04.06: Rebuild the overo kernel.

Go to the linux-omap3-2.6.29.bb file, and change the PR variable to a higher release number, e.g

PR = "r1" 

and then re-run the bitbake command

bitbake omap3-console-image

This should work without any compilations errors. 

Step 04.07: Copy the overo kernel files to a bootable microSD card.

$ su
# cd /media/disk
# tar xvjf ~/overo-oe/tmp/deploy/glibc/image/overo/omap3-android-image-overo.tar.bz2


Step 05.00: Build android userland from source files.

We will now build the Android userland files from the Android sources. See Get source ‎(Android Open Source Project)‎ for more information.

Step 05.01: Download and install a Java JDK to build the Android sources.

jdk-6u12-linux-i586-rpm.bin

Step 05.02: Download and install gperf.

$ yum install gperf

Step 05.03: Go to the android directory and sync the repository to get all the android sources.

$ cd android
$ repo init -u git://android.git.kernel.org/platform/manifest.git
$ repo sync

Note: We have forced the kernel/common branch to android-2.6.29, from the previous steps. Else, as of April 14th 2009, the kernel/common branch defaults to android-2.6.27.

Step 05.04: Build android userland.

$ BUILD_WITHOUT_PV=true make

As of 15th April 2009, the build might fail, in which case, type the following command to switch to a previous working version and rebuild:

$ repo download platform/frameworks/base 9356/4
$ BUILD_WITHOUT_PV=true make

Step 05.06: Copy the android userland files to a bootable microSD Card.

See gumstix developer site - Creating a bootable microSD card for more instructions.

$ su
# cd /media/disk
# mkdir android-root
# cp -a ~/android/out/target/product/generic/root/* .
# cp -a ~/android/out/target/product/generic/data/* data/ 
# cp -a ~/android/out/target/product/generic/system/* system/
# ls
data          dev   init.goldfish.rc  proc  sys
default.prop  init  init.rc           sbin  system

Step 05.07: Debug the android userland boot process.

Boot the Overo using the bootable microSD card, login as root and run the following command to debug the Android userland boot process:

# strace -ff -F -tt -s 200 -o strace.log chroot /media/mmcblk0p2/android-root /init &

Step 05.08: Configure auto login.

Edit the /etc/inittab file and change the getty for tty1 as follows:

1:2345:respawn:/sbin/agetty -l /bin/bash 115200 tty1

This tells agetty to run /bin/bash instead of /bin/login. This doesn’t work with getty or mingetty.

Create a file called android in /etc/init.d

#!/bash/sh
#
# Start android by chroot
#

start() {
echo “Starting android...”
/usr/sbin/chroot /media/mmcblk0p2/android-root /init
}

In order to execute the android startup script at run level 5, make a symlink as follows:

# cd /etc/rc5.d/
# ln -s ../init.d/android s99android

Step 05.09: Replace permissions.

# chown -R root.root *
# chmod -R 777 data/ system/


Step 06.00: Boot the android system.

Insert the bootable microSD card into the Overo’s microSD card slot.

Step 06.01: Connect to the Overo console. 

$ su
$ kermit -l /dev/ttyUSB0
C-Kermit>set flow-control none
C-Kermit>set carrier-watch off
C-Kermit>set speed 115200
/dev/ttyUSB0, 115200 bps
C-Kermit>connect
Connecting to /dev/ttyUSB0, speed 115200
Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------

Step 06.02: Power up the Overo system. 

...


Related Topics

01. Nabble - Gumstix - Andriod on a gumstix?


Related Videos

None.


Related Links

01. Android on bc9 - labs.beatcraft.com.

02. Get source ‎(Android Open Source Project)‎. Describes how to get the Android sources.

02. Android on OMAP - eLinux.org.

03. NthCode - Porting Android to a New Device.

04. Android Porting Guide to Beagle Board - Labs.embinux.org wiki.

05. MyGForge > Projects > Android on OMAPZoom > Wiki > View Page.

06. BeagleBoard.org - android.

07. Compile Android kernel from the source.

08. gumstix Overo - Setting up a build environment.


Related Repositories

01. android.git.kernel.org Git

02. Google Code Android Downloads.