tags:

views:

1083

answers:

3

Hi Friends,

I am working on a system on which currently linux kernel and microwindows windowing system is running. Code of current linux system drivers is available to me. I want to port android on it, just as a hobby project.

can you please tell me what all understanding of linux-kernel is required to port it?

Please give me references (Books, Tutorials) to build-up understandings.

Thanks, Sunny.

P.S. I have basic understanding of linux.

Configuration of device is

450 Mhz ARM9,
64 MB RAM,
256 MB NAND
480x272 resolution.
+7  A: 

Since you already have Linux up and running on your board you most likely won't need to have a deep understanding of the kernel. It will need to be modified, however, to include the following additional Android specific features. This may be as easy as applying some patches but it could be more involved.

  • Low Memory Killer
  • Android Logger
  • Android Shared Memory Subsystem (Ashmem)
  • Android Power Management (Wakelocks)
  • Binder IPC

In user space, Android uses its own display software called Surface Manager so you won't be using the Nano-X Window System (formerly known as Microwindows).

For an overview of what will likely be involved in a port, I would give the Android Porting Guide a read.

Websites on porting Android to other ARM based devices that may include helpful tips:

  1. Beagleboard (Cortex)
  2. Zoom OMAP (Cortex)
  3. Nokia Internet Tablet (ARM9E)
  4. Neo 1973 (ARM9TDMI)
  5. Intel Bulverde Evaluation Board (XScale)
  6. Sharp Zaurus SL-C760 (XScale)

Online groups that may be able to help:

Tim Kryger
Hi tkryger, I know that drivers part I have to write for my board in device. How much linux kernel has been modified by android? What is the architecture of Android? Is there any step by step guide or tutorial for it? Which simply tells me where I have to write my default screen resolution, Cache Prefrences.
Sunny
Normally on development boards we get BSPs, Does Android comes with something similar to BSP? Which documents Beagle Board developers had read before porting android?
Sunny
I'm not sure how many kernel changes are necessary to support Android. Probably not that many. I think the majority of the features of Android are in userland. A good description with a picture of the architecture is available at http://developer.android.com/guide/basics/what-is-android.html or if you like videos more check out http://www.youtube.com/watch?v=Mm6Ju0xhUW8
Tim Kryger
Thank you very much for Video link, That's really good.
Sunny
the Embinux link does not describe what they had to do, just the shell scripts you have to do to install it on that board. So these steps are only valid for beagleboard, not for any other board.
Adriaan
+5  A: 

To start porting Android, a basic understanding of the changes to the linux kernels is required. Also, you'll need to understand which drivers besides the Linux are required. linuxfordevices describes what was changed to the Linux kernel for the sake of Android. They also provide handy links like a diff of the changes they made....

On Android architecture, I found the youtube presentation Android Architecture][1] helpful.

I expect some issues in the display resolution. Android applications expect a number of standard resolutions. As a first step, I suggest to limit display to the next smaller size and then improve on this once it is up and running.

Since I've looked into Adroid for use in e-readers, I'm very interested in the porting myself. For this reason, I have registered for a (web based) training on android hardware (porting). I have looked for books etc. on the subject, but the books I found were much more on using Android and writing applications.

Adriaan
Thanks Adarian, Web based training point is helpful.
Sunny
Thanks! I really appreciate this.
Adriaan
+1  A: 

Have a look at these books as well:

Android - A Programmers Guide

Professional Android Application Development

Adrian
Both of these books are about writing applications; they do not describe how to configure/port android kernel software.
Adriaan