Compare the android Linux kernel downloaded from Google's official website (http://code.google.com/p/android/downloads/list) with the standard Linux 2.6.25 version of kernel, the android system kernel mainly adds the following content:
1. Add the gold-fish platform based on the ARM architecture. The directories added are as follows:
Kernel/ARCH/ARM/Mach-goldfish
Kernel/include/ASM-arm/arch-goldfish
The gold-fish platform uses arm926t CPU as the baseband processor. The CPU clock speed is at least 200 MHz. to smoothly run the Android system, the CPU clock speed must be at least 400 MHz or above. That is to say, if you want to use the Android system, it is best to use the arm11 and above platforms for development.
2. added the yaffs2 FLASH file system and added the following directories: kernel/fs/yaffs2.
In fact, the system. IMG and ramdisk. IMG files generated after the android package is compiled are in the yaffs2 format.
3. added the android driver. The corresponding directory is:
Kernel/Drivers/android
Mainly divided:
Android IPC: binder
Android log system: Logger
Android power management: Power
Android alarm management: Alarm
Android memory Console: ram_console
Gpio controlled by Android clock: timed_gpio
4. Added switch processing. The corresponding directory is: kernel/Drivers/switch/
5. A new shared memory processing method is added. The corresponding files are: kernel/MM/ashmem. C.
6. Other patches for the Linux-2.6.25 kernel, such as Bluetooth,
In addition, the driver files related to the goldfish platform are as follows:
1. character output device:
Kernel/Drivers/Char/goldfish_tty.c
2. Image Display Device: (frame buffer)
Kernel/Drivers/Video/goldfishfb. c
3. keyboard input device:
Kernel/Drivers/input/keyboard/goldfish_events.c
4. RTC device: (real time clock)
Kernel/Drivers/RTC/rtc-goldfish.c
5. USB device:
Kernel/Drivers/USB/gadget/android_adb.c
6. SD card devices:
Kernel/Drivers/MMC/host/goldfish. c
7. Flash devices:
Kernel/Drivers/MTD/devices/goldfish_nand.c
Kernel/Drivers/MTD/devices/goldfish_nand_reg.h
8. LED device:
Kernel/Drivers/LEDs/ledtrig-sleep.c
9. Power supply device:
Kernel/Drivers/power/goldfish_battery.c
10. audio device:
Kernel/ARCH/ARM/Mach-goldfish/audio. c
11. Power Management:
Kernel/ARCH/ARM/Mach-goldfish/PM. c
12. Clock management:
Kernel/ARCH/ARM/Mach-goldfish/Timer. c
The following section from http://www.kandroid.org/android_pdk/intro_source_code.html
Linux Kernel
The android Linux kernel provided des enhancements to the Linux 2.6 kernel that provide additional drivers to support the Android platform, including:
- Binder: An openbinder-based driver to facilitate inter-process communication (IPC) in the Android platform.
- Android power management: a light weight power management driver built on top of standard Linux power management but optimized for embedded systems.
- Low memory killer: Based on hints from the userspace, the low memory killer can kill off processes to free up memory as necessary. it is designed to provide more flexibility than the out of memory (OOM) killer in the standard kernel.
- Logger: a light weight Logging Device used to capture system, radio, logdata, etc.
- USB Gadget: uses the USB function framework.
- Android/pmem: The pmem (physical memory) driver is used to provide contiguous physical memory regions to userspace libraries that interact with the digital signal processor (DSP) and other hardware that cannot conflict with scatter-gather.
- Android alarm: A driver which provides timers that can wake the device up from sleep and a monotonic timebase that runs while the device is asleep.
Look for Android-specific enhancements in the following directories:
/drivers/android
/drivers/misc
/include/linux