The document summarizes efforts to port the Google Android mobile operating system to run on a Nokia N810 tablet device. It describes merging the Android source code with the Linux kernel used by the N810, addressing drivers and other changes. Key steps included porting the Linux kernel to a newer 2.6.25 version, adding Android patches, and resolving issues around filesystems, booting, and hardware support over nine days of development. Remaining tasks were noted as fixing crashes, adding WiFi and battery charging support.
8. Android Is Java applications Dalvik VM ‘ C’ libraries Linux kernel
9. Dalvik? Java-like virtual machine But not a Java Why? Google says performance But probably because of $$ Dalvik? Java-like virtual machine But not a Java Why? Google says performance But probably because of $$
10. Dalvik Write Java foo.java Compile to foo.class apkbuilder foo.class... -> foo.apk foo.apk has foo.dex + metadata Transfer to device Run Dalvik foo.apk
11.
12. Why Did Google Create Android? An open platform Where Google can ... ... make money from advertising?
13. Google released all the code Open source Royalty free / 免 费 看看 source.android.com 21 October 2008
18. Merge Linux Kernel 2.6.21 + N810 Patches Linux Kernel 2.6.25 + Android Patches
19. Nokia N810 Linux Kernel 2.6.21 + MultiMedia Card driver I2C serial bus driver Touch screen driver Keyboard map Audio and video DSP Direct Memory Access (DMA) Board revision patch System software is Maemo GTK-based Lots of hackers ( 牛 !)
20. Android Patches Linux Kernel 2.6.25 + Goldfish YAFFS2 Bluetooth Scheduler IPC binder Low memory killer Ashmem RAM console & logging Android Debug Bridge (ADB) Power management Other changes
22. YAFFS2 Phones store data in flash memory YAFFS2 = Yet Another Flash File System 2 Optimized for NAND flash chips Add 35 Files Created by Charles Manning for Aleph1 GPL, but not in mainline kernel Integrated into Android by Google PCs store data on disks FAT, ext2, NTFS, xfs, afs ... All optimized for a spinning disk
23. Bluetooth 蓝呀 Change 10 files Fix headset bugs Add debugging Add access control
33. Selected 2.6.25 ~75 files Drivers 163 files Some core OS User space quits if < 2.6.25
34. Port N810 to 2.6.25 MultiMedia Card driver I2C serial bus driver Touch screen driver Keyboard map Audio and video DSP Direct Memory Access (DMA) Board revision patch
35. Port N810 to 2.6.25 7 days Download Linux-OMAP git reset --hard v2.6.25-omap1 patch ... Compile/flash/debug/fix
36. Issue: WiFi No source for WiFi module Can’t recompile module No WiFi
37. Apply Android Patches to 2.6.25 Based on Linux 2.6.25 Goldfish YAFFS2 Bluetooth Scheduler IPC binder Low memory killer Ashmem RAM console & logging Android Debug Bridge (ADB) Power management Other changes
39. Bring-Up 9 days jffs2 mmap() doesn’t work Switched to ext2 -- data corruption Switched to ext3 -- OK System hang at boot. Random reboots. Disabled watchdog Booted, but screen blank Applied a double-buffered video patch Sometimes booted, often crashed Copied libs to the N810, fixed crashes Touch screen wouldn’t work, changed power config Keypad not right, so changed keypad config
40.
41. Next Steps Fix intermittent crashes WiFi Android Debug Bridge (ADB) Power off Battery charge