Presentation is loading. Please wait.

Presentation is loading. Please wait.

Porting Android to Beagleboard

Similar presentations


Presentation on theme: "Porting Android to Beagleboard"— Presentation transcript:

1 Porting Android to Beagleboard
Anish Dhanekula Karl Arndt

2 Porting Android to Beagleboard
What is Android? Linux-based Operating System for Mobile Devices Developed by Android, Inc. Acquired by Google Open-Source, under Apache License Proprietary extensions developed by vendors don’t have to be submitted back to open-source commnunity Porting Android to Beagleboard

3 Porting Android to Beagleboard
What is Android? Modified Linux Kernel Éclair (Android v2.0/2.1) based on Filesystem Uses the Bionic C Library instead of glibc Dalvik Java Virtual Machine Is it really Linux? Sort of… Definitely Linux kernel, but not a traditional userspace Porting Android to Beagleboard

4 Porting Android to Beagleboard
What is Android? Porting Android to Beagleboard

5 Porting Android to Beagleboard
What’s a Beagleboard? Porting Android to Beagleboard

6 Porting Android to Beagleboard
What’s a Beagleboard? OMAP 3530 TI SoC with ARM Cortex A8 and 64x DSP SDRAM and Flash on-package with Package-on-Package (PoP) Porting Android to Beagleboard

7 Porting Android to Beagleboard
What’s a Beagleboard? Peripherals SD/MMC Socket for Storage DVI-D and S-Video Stereo In and Out USB Serial Bootloader U-Boot comes loaded on the PoP Flash Porting Android to Beagleboard

8 Porting Android to Beagleboard
Porting Process Get Android Source Kernel and Filesystem Prove it can work Modify Kernel files as necessary to work with Beagleboard Compile Write to SD Card Try to Boot Doesn’t work – pray that your Beagleboard gets stolen while you grab dinner Fix Kernel Boot Errors Repeat Porting Android to Beagleboard

9 ‘Git’ing Android Source
Kernel – android.git.kernel.org OMAP tree Filesystem – source.android.com We used a prebuilt filesystem known to work on Beagleboard in order to focus on the kernel Git Source management tool Porting Android to Beagleboard

10 Porting Android to Beagleboard
Storage Format Kernel and Filesystem need to be stored in a particular way on the SD Flash Two Partitions FAT32 Boot Partition Holds U-Boot update and compressed Kernel Image (uImage) EXT3 Filesystem Partition Holds the complete root filesystem Porting Android to Beagleboard

11 Porting Android to Beagleboard
Early Boot Process OMAP PoP Flash comes with U-Boot, but needs to be replaced on boot The PoP Flash U-Boot knows to attempt to boot from the SD Flash first, and when it does it finds the updated U-Boot Environment variables must be set to boot properly setenv bootcmd ‘mmc init; fatload mmc uImage; bootm ’ setenv bootargs 'mem=128M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw init=/init Porting Android to Beagleboard

12 Porting Android to Beagleboard
Prove it can Work Rowboat Someone has already ported Android to Beagleboard Confirmed that this distribution works on our board Porting Android to Beagleboard

13 Porting Android to Beagleboard
Compiling the Kernel Since the kernel is being compiled on an x86 host for an ARM target, cross-compiling is necessary The arm-eabi toolchain is used for this Included in the Android Filesystem Source make ARCH=arm CROSS_COMPILE=/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi uImage –j4 uImage is the compressed Kernel Image -j4 tells Make it can use 4 threads (two per CPU on a dual-core machine Porting Android to Beagleboard

14 Modifying Kernel Source
Create the .config file make defconfig make ARCH=arm defconfig make ARCH=arm omap3_beagle_defconfig Edit .config to include all necessary settings and modules make ARCH=arm menuconfig Porting Android to Beagleboard

15 Modifying Kernel Source
menuconfig Porting Android to Beagleboard

16 Modifying Kernel Source
.config Compilation parameters are chosen Particular implementation of an architecture Drivers are chosen Must determine the correct drivers for your SoC/Board and include them here Drivers can be included as built-in or modular Porting Android to Beagleboard

17 Modifying Kernel Source
.config – selecting the right drivers Real Time Clock Real Time Clock initialization was failing on kernel boot Found that the Beagle uses a TWL4030 I2C RTC Controller Had to enable I2C, TWL Core, and TWL4030 Drivers Porting Android to Beagleboard

18 Modifying Kernel Source
.config – selecting the right drivers MMC/SD Filesystem is stored on SD card Found correct driver by sorting through Angstrom Linux running on the Beagleboard Porting Android to Beagleboard

19 Modifying Kernel Source
Correct Drivers are chosen, but Kernel won’t boot… Need to dig into actual Kernel Source and Boot Process Porting Android to Beagleboard

20 Modifying Kernel Source
Kernel Boot Process Run code from /arch/arm/mach-omap2 to initialize devices Run /init/main.c to mount the root filesystem Once the root filesystem is mounted, run /init (or whatever is specified to U-Boot) as the first process Porting Android to Beagleboard

21 Modifying Kernel Source
RTC is initialized now, but Kernel Boot still hangs “Waiting for root device /dev/mmcblk0p2…” This message was found in /init/do_mounts.c Called in /init/main.c While loop continuously polling Device_probe_done() name_to_dev_t() Porting Android to Beagleboard

22 Modifying Kernel Source
One of the routines is not completing Traversed name_to_dev_t() with printk Seems to work fine Difficult to traverse name_to_dev_t() Decided to look through initial device initialization code in /arch/arm/mach-omap2 and SD driver in /drivers/mmc/host/omap_hsmmc.c Porting Android to Beagleboard

23 Modifying Kernel Source
/arch/arm/mach-omap2/board-omap3beagle Several __init statements omap3_beagle_init Calls omap3beagle_flash_init This is where the devices are initialized during bootup, but we can’t find anything wrong… Porting Android to Beagleboard

24 Porting Android to Beagleboard
Next Steps Hard-coded device names Porting Android to Beagleboard

25 Things we would do differently
Spend less time modifying the .config file and more time on the kernel source itself Maybe try Network File System (NFS) to store the Filesystem Porting Android to Beagleboard

26 Porting Android to Beagleboard
References Linux Kernel in a Nutshell Greg Kroah-Hartman Linux from Scratch Gerard Beekmans code.google.com/p/beagleboard/wiki code.google.com/p/rowboat/wiki source.android.com android.git.kernel.org Porting Android to Beagleboard

27 Porting Android to Beagleboard
Questions? Porting Android to Beagleboard


Download ppt "Porting Android to Beagleboard"

Similar presentations


Ads by Google