[Q] Looking for clarification concerning Android ROM architecture - General Questions and Answers

I have been reading some of the items about people modifying ROMS, porting ROMS, etc. and I am not certain if I have all of the terminology correct. I am wondering if there is some type of architecture definition or diagram that would indicate the different parts of a ROM.
I found one web post that broke items down to kernel, libraries, bootloader, recovery, radio, framework, core, android runtime. What I don't know is what kind of correlation there is between a framework and runtime to a kernel. Is this a situation like Linux where you have a kernel with all of its drivers and you would run the Android GUI on top of that and any version of the Android GUI is going to work with pretty much any kernel, or is there some type of match-up between a kernel and specific versions of Android?
I have an Elocity A7+ which uses a Tegra II 1ghz dual core CPU. It was only built with Android 2.2. It seems like this tablet should be able to run ICS fairly well since I have seen a number of single core tablets running it. The manufacturer made the kernel source available for this tablet, but what I don't understand is if it is possible to build the ICS framework and runtime with this kernel.
Without detailed information it would seem to me that the kernel is taking care of interfacing directly with items like the touch screen, the camera, the audio system, the buttons, the wi-fi, etc. Do requirements for kernel interfaces change from android version to android version or can an ICS framework communicate with the kernel from a 2.2 device? Is there any kind of documentation that indicates what kernel calls have to be available to the different Android versions?
I apologize if I am not asking the right questions.

Related

[Q] Port Android Questions

Ok, I know much of what I'm about to ask has generally been answered or discussed in other posts, but I could really use some more direct/specific answers to my own questions.
My first question is about hardware drivers. To my understanding, a great many, if not most, of the more common wifi drivers are incorporated into the latest linux kernels. If this is the case, will more or less any Android system run on a device so long as the appropriate kernel is provided?
To be a little more clear on that, I'm actually trying to learn Android development (both for apps and building roms) on a cheap Chinese tablet that I picked up. Naturally it already has a version of Android 2.2 pre-installed. However, I have not been able to extract the contents of the boot.img or the system.img, I keep getting an error, whereas I can unpack the SDK img's no problem. So I was hoping that I can get away without compiling a custom kernel, use the already existing one, and go ahead with tweaking the system.img from either the AOSP or SDK sources. Getting the source code from the manufacturer may be impossible since I can't even seem to find out who the manufacturer is or get their contact info.
I'm actually looking to port CM7 to my wife's LG Shine Plus eventually, but I don't want to pull a Tim Allen on her phone so I want to get some experience and feel for working with Android's internals on my tablet.
So my next question is still about drivers, but what I want to know is how are things like the LCD, touchscreen input, audio output, wifi and the cell radio handled on a typical Android device? Is it mostly handled by the hardware itself with the Android framework or kernel just passing universal APIs or do the drivers for each individual piece of hardware need to be compiled into the kernel? As in the gkisystem for radios, is this handled by the kernel or the framework? Which kinda brings me back to my first question, if it is built into the kernel itself, can I not use, for example, the already existing kernel on the LG Shine Plus (it's running 2.1) to port CM7?
Any and ALL help is honestly and truly appreciated. I've been looking for detailed answers for these questions EVERYWHERE.
** just bumping this post so that it can get seen**
any help or advice at all?

[Q] New Android Dev Questions

Hello everyone,
I am not new to the android scene, and am quite familliar with linux development in java and c. I found myself in the pleasant position of having a second Atrix 4g that I had previously unlocked and played with a bit and decided it was time to have a look at some of the android issues that have managed to sufficiently annoy me.
To this end I have pulled down the aosp of ICS as well as CM9 for comparison. I see that there are issues with the tegra2 binaries for ICS and was going to have a go at building a 2.6.39 kernel for ICS.
Can any of you point me to some info on integrating a new kernel into the android build? As I understand it, the currently available binary drivers are build against 2.6.36 for GB.
Is it only the opengl drivers that are an issue? Are there opensource drivers for the bt/wifi/cell? The cameras/touch sensors/gyros etc?
I have done some research and looked over Googles build info, but it only covers the reference gear. I have not yet found a good guide on integrating 3rd party drivers for other hardware..
Thanks for all your assistance. Once I learn the build system I'm sure I will be able to make some useful contributions.
Also, I may be able to offer some hosting assistance for some projects.

[Q] Building Cyanogenmod for IFC6410

HI all,
I have a IFC6410 board and I'm planning to build a CM version for this board as it seems to be very well optimized. One reason is that the BSP by the manufacturer doesn't properly work, USB camera and audio stream don't work.
I don't know where to start and what to do, I've such builds on Linux for various open source softwares but android is a different level of complexity.
I'm done with setting up my Ubuntu for android build, not yet downloaded the CM source code. The board is Snapdragon 600 based so is there a possibility of using a CM build of some other S600 device on this board, or if not I'd be glad to know what is the process of customizing syanogenmod for my board.
bump

what are kernels?

guys im new,just started to see how works android and stuff.
what are kernels?sort of drivers?
found here
In simple terms, the kernel is a bit of software that tells the operating system how to use the hardware. That includes the processors, RAM, buttons, speakers, the screen, etc. Root access is required to adjust kernel parameters, and an unlocked bootloader is required to flash custom kernels. A custom kernel can offer adjustments outside the stock settings, such as overclocking, undervolting, vibration intensity, screen color adjustments, touch-wake options, etc. A custom kernel has the potential (but no guarantee) to improve performance, battery life, and stability. Often custom kernels are more up-to-date than factory kernels, since the people that create and work on them base them on the latest from Linux/Android, while the manufacturers typically don't bother. But that depends on the device; for example a Nexus phone will have a plethora of custom kernels available to try, but some random Mediatek powered clone from China probably won't.
what are kernels in short.
kernels is a software domain chain which lets you interact with the os and the hardware.
donate me a thanks if it helped you.
With short words, kernel is bridge between software and hardware. An Android Kernel is essentially a modified Linux Kernel with specific modifications to support the device architecture. You can read more about it here: http://xda-university.com/as-a-developer/getting-started-building-a-kernel-from-source

[ROM] Android Gingerbread on Zedboard not reacting to Touch/Mouse input

Hi,
I know that Android Gingerbread is quite old so probably most people would not bother to port it any more, but I need it for a university project where the hardware resources are very limited.
After a lot of work, I managed to build Android Gingerbread for the Digilent Zedboard, but it is not reacting to any touches on my USB touchscreen or to movements/clicks with a USB mouse.
getevent provides the expected events and I tracked them in InputReader.cpp and they seem to be dispached fine, but the UI does not react to the input. I can see that the events are enqueued, but cannot find where Android actually picks up those events and works through that queue. Does anybody have an idea?
I followed a tutorial on elinux.org (I am not allowed to post links yet. It's elinux.org [slash] Zedboard_Android)
with small modifications (enabled USB touchscreens in the kernel config, switched to a different android repo since the one in the article is offline)
Any help is much appreciated.
Thank you!
Android Gingerbread is no longer supported, and cannot use Google Play Services.
Why are you trying to run Gingerbread?
Please read THIS BEFORE responding.
Thanks for the answer!
x13 said:
Android Gingerbread is no longer supported, and cannot use Google Play Services.
Click to expand...
Click to collapse
I do not need Google Play Services.
x13 said:
Why are you trying to run Gingerbread?
Click to expand...
Click to collapse
We are trying to show dynamic partial reconfiguration with Android. For that purpose, we selected the Xilinx Zynq processing system. It consists of a dual-core ARM processor and an FPGA. The point is to reconfigure parts of the FPGA from Android during runtime.
Unfortunately, we were unable to find hardware designs for the upper-level Zynq chips and do not have enough resources to build one ourselves. Therefore we are stuck with the smaller chips and went for a ZedBoard.
At a point in history (I am not sure when) there was even official android support for the ZedBoard by iveia. They used android gingerbread, thats the first reason why we chose to use it.
The second reason is that the ZedBoard has very little resources (slow processor, little RAM, no GPU), which disallow more current Android versions to run. Some people got more recent version booting (google noritsuna android zedboard), but they reported it being slow since there is no gpu and low ram (they used linux swap since the built in ram is not enough for android - but linux swap from an SD card is terribly slow). Also, we were unable to replicate their build. All build processes go through but it does not boot. No debug output is available - not even kernel messages over UART. I suspect the u-boot setup is wrong but am no expert and cannot fix it.
Gingerbread is working fine (except for the touch issue), so we decided to stick with it.

Categories

Resources