Can anyone provide an overview of the Linux kernel's role in Android OS?
Please share any links or documentation.
It seems to me like Wikipedia provides what you're looking for in pretty plain English right here.
Android is basically a specialized Linux distro that sits on top of a modified kernel. There are lots of things in Android's modified kernel that are not in the Linux Kernel mainline (though that is expected to change in Linux Kernel 3.4).
So think of the role of the Linux Kernel in Android OS as sort of like the role of the foundation of a skyscraper. Android couldn't exist without the Linux Kernel (albeit a modified version thereof).
Related
I'm trying to build an android linux kernel for an amlogic meson3 processor. Specifically the current running Linux shows the display configuration is
CONFIG_AML_TCON_KR070PC7S
When searching on google, it turns out to be a "60P LCD screen KR070PC7S". However, it seems google does not search the source code repositories around the web to give an answer.
Thus the questions:
Where you can find the driver in source code? Or in pre-built obj binary?
Where you can find the datasheet of the LCD if the driver is not available?
Which other devices (model, brand) use the same display?
Is 60P LCD a standard interface? Where is the spec?
Thank you in advance for any answers or hints.
Google does normally index CONFIG_xxx in parts of the Linux mainline kernel OK. I suspect you're running a custom kernel where they haven't merged it back into the mainline and haven't placed the source in a publically indexable area.
There is nothing wrong with the latter under the terms of the GPL as far as I know, but the original hardware vendor should make the modified kernel source available to customers upon request assuming they have based the driver on GPL code. Otherwise they have no obligation to provide datasheets / code etc.
Does any one know the real difference between stock & aosp kernel? If know please describe in detail or give me any reference.
Currently I want to build an aosp kernel based on htc stock kernel.
Android uses slightly different approach. To interact with the hardware it has a special intermediate layer between drivers and Linux kernel (called Hardware Abstraction Layer). So, even if you port kernel to a new device, this does not mean that drivers will work there. I guess you understand this.
As for the question itself, I can recommend you to find a book of Karim Yaghmour
"Embedded Android". There is main differences between stock Linux kernel and Android modifications are considered.
I am new to android technology. Can somebody answer few of my question:
What are the similarities and differences between linux kernel and android kernel?
What is the minimum hardware requirement for mobile device to have android support?
Whether it is required to have a touch-screen mobile to run android technology?
Q1. The Android kernel is the Linux kernel with added device drivers for the hardware components that are not supported by the pure Linux kernel. However, there are also other differences. Quoted from here, and here:
The Android kernel code is more than
just the few weird drivers that were
in the
drivers/staging/androidsubdirectory in
the kernel. In order to get a working
Android system, you need the new lock
type they have created, as well as
hooks in the core system for their
security model. In order to write a
driver for hardware to work on
Android, you need to properly
integrate into this new lock, as well
as sometimes the bizarre security
model. Oh, and then there's the
totally-different framebuffer driver
infrastructure as well.
You may also refer to this page for an opinion on this matter.
Q2. You may take a look at the Android 2.3 Compatibility Definition
(I haven't read it). For 3.0 the requirements are (quoted from here):
1GHZ processor, 512MB RAM, a display
screen that is at least 3.5-inches in
size
Q3. No, your device does not need to have a touchscreen to be compatible with Android. Refer to the compatibility guide above, but this is also evidenced by the first Android testing devices, that were running android (picture).
Hi
I'm trying to find out about what the differences are in operating systems of mobile devices compared to those in desktop machines. Specifically things like memory management, scheduling etc.
I'm aware that mobile operating systems must need to do several other things like power management and worry about the smaller memory capacity.
Does anyone have any good resources to find out about the technical differences in mobile operating systems to their desktop counterpart and maybe specifically about android OS?
At low level, Android has a different lightweight C standard library the bionic LibC. Instead of X11 it uses video framebuffer device. To make the OS lightweight on Android only a subset of POSIX standard is implemented.
Have a good reading :) : http://developer.android.com/guide/topics/fundamentals.html
Depends how deep you want to go. Here you can find the desktop Linux kernel and here you can find the kernel and all other relevant Android source codes. I guess you can't get more technical than looking at the source code of both platforms.
Maybe one of them most interesting reads for you should be What is Android?
Android vs. Linux as embedded OSes and Android is based on Linux are two good resources.
See also the major changes that Android made to the Linux kernel.
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.
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:
Beagleboard (Cortex)
Rowboat (I tried this one and it works)
Embinux
Zoom OMAP (Cortex)
OMAPpedia
Nokia Internet Tablet (ARM9E)
NITdroid
Neo 1973 (ARM9TDMI)
Benno Leslie's Blog
Intel Bulverde Evaluation Board (XScale)
NemusTech Blog
Sharp Zaurus SL-C760 (XScale)
EU Edge Blog
Online groups that may be able to help:
Android Porting
Android Internals
Android Platform
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.
Have a look at these books as well:
Android - A Programmers Guide
Professional Android Application Development