在这里http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Porting-Android-to-a-new-device/发现一篇分析Android kernel与标准kernel的差异的文章,但是,作者用的是2.6.25的内核,我发现在Android2.6.29内核中,与之前相比,有了很多改变,因此在上面link中的文章的基础上,重新分析了2.6.29版本的Android kernel和标准kernel的区别。


总的区别可以归纳如下:

  • ARCH -- 这是Android修改了arch/arm下面的一些文件:

    arch/arm:

    • Chg: arch/arm/kernel/entry-armv.S

      Chg: arch/arm/kernel/module.c

      Chg: arch/arm/kernel/process.c

      Chg: arch/arm/kernel/ptrace.c

      Chg: arch/arm/kernel/setup.c

      Chg: arch/arm/kernel/signal.c

      Chg: arch/arm/kernel/traps.c

      Chg: arch/arm/mm/cache-v6.S

      Chg: arch/arm/vfp/entry.S

      Chg: arch/arm/vfp/vfp.h

      Chg: arch/arm/vfp/vfphw.S

      Chg: arch/arm/vfp/vfpmodule.c

  • Goldfish -- 这是Android为了模拟器所开发的一个虚拟硬件平台。Goldfish执行arm926T指令(在2.6.29中,goldfish也支持ATMv7指令),但是在实际的设备中,该虚拟平台的文件不会被编译。

    arch/arm/mach-goldfish:

    • New: arch/arm/mach-goldfish/audio.c

      New: arch/arm/mach-goldfish/board-goldfish.c

      New: arch/arm/mach-goldfish/pdev_bus.c

      New: arch/arm/mach-goldfish/pm.c

      New: arch/arm/mach-goldfish/switch.c

      New: arch/arm/mach-goldfish/timer.c

  • YAFFS2 -- PC把文件存储在硬盘上不一样, 移动设备一般把Flash作为存储设备。尤其是NAND flash应用非常广泛(绝大多数手机用的都是NAND flash,三星的一些手机使用的是OneNAND)。NAND flash具有低成本和高密度的优点。

    YAFFS2是“Yet Another Flash File System, 2nd edition"的简称。 它提供在Linux内核和NAND flash设备 之前高效率的接口。YAFFS2并没有包含在标准的Linux内核中,Google把它添加到了Androidkernel

    fs/yaffs2:

    • New: fs/yaffs2/devextras.h

      New: fs/yaffs2/Kconfig

      New: fs/yaffs2/Makefile

      New: fs/yaffs2/moduleconfig.h

      New: fs/yaffs2/yaffs_checkptrw.c

      New: fs/yaffs2/yaffs_checkptrw.h

      New: fs/yaffs2/yaffs_ecc.c

      New: fs/yaffs2/yaffs_ecc.h

      New: fs/yaffs2/yaffs_fs.c

      New: fs/yaffs2/yaffs_getblockinfo.h

      New: fs/yaffs2/yaffs_guts.c

      New: fs/yaffs2/yaffs_guts.h

      New: fs/yaffs2/yaffsinterface.h

      New: fs/yaffs2/yaffs_mtdif1.c

      New: fs/yaffs2/yaffs_mtdif1.h

      New: fs/yaffs2/yaffs_mtdif2.c

      New: fs/yaffs2/yaffs_mtdif2.h

      New: fs/yaffs2/yaffs_mtdif.c

      New: fs/yaffs2/yaffs_mtdif.h

      New: fs/yaffs2/yaffs_nand.c

      New: fs/yaffs2/yaffs_nandemul2k.h

      New: fs/yaffs2/yaffs_nand.h

      New: fs/yaffs2/yaffs_packedtags1.c

      New: fs/yaffs2/yaffs_packedtags1.h

      New: fs/yaffs2/yaffs_packedtags2.c

      New: fs/yaffs2/yaffs_packedtags2.h

      New: fs/yaffs2/yaffs_qsort.c

      New: fs/yaffs2/yaffs_qsort.h

      New: fs/yaffs2/yaffs_tagscompat.c

      New: fs/yaffs2/yaffs_tagscompat.h

      New: fs/yaffs2/yaffs_tagsvalidity.c

      New: fs/yaffs2/yaffs_tagsvalidity.h

      New: fs/yaffs2/yportenv.h

  • Bluetooth --  GoogleBluetooth打上了patchfix了一些Bluetoothbug

    drivers/bluetooth:

    • Chg: drivers/bluetooth/bfusb.c

      Chg: drivers/bluetooth/bt3c_cs.c

      Chg: drivers/bluetooth/btusb.c

      Chg: drivers/bluetooth/hci_h4.c

      Chg: drivers/bluetooth/hci_ll.c

  • Scheduler --对于Scheduler的改变非常小,我对它并没有去研究。

    • Chg: kernel/sched.c

  • New Android Functionality --除了fix一些bug以及其他一些小的更改,Android增加了一些新的功能,介绍如下:

    • IPC Binder -- The IPC Binder is an Inter-Process Communication (IPC) mechanism. It allows processes to provide services to other processes via a set of higher-level APIs than are available in standard Linux. An Internet search indicated that the Binder concept originated at Be, Inc., and then made its way into Palm's software, before Google wrote a new Binder for Android.

      • New: drivers/staging/android/binder.c

    • Low Memory Killer -- Android adds a low-memory killer that, each time it's called, scans the list of running Linux processes, and kills one. It was not clear in our cursory examination why Android adds a low-memory killer on top of the already existing one in the standard Linux kernel.

      • New: drivers/staging/android/lowmemorykiller.c

    • Ashmem -- Ashmem is an Anonymous SHared MEMory system that adds interfaces so processes can share named blocks of memory. As an example, the system could use Ashmem to store icons, which multiple processes could then access when drawing their UI. The advantage of Ashmem over traditional Linux shared memory is that it provides a means for the kernel to reclaim these shared memory blocks if they are not currently in use. If a process then tries to access a shared memory block the kernel has freed, it will receive an error, and will then need to reallocate the block and reload the data.

      • New: mm/ashmem.c

    • RAM Console and Log Device -- To aid in debugging, Android adds the ability to store kernel log messages to a RAM buffer. Additionally, Android adds a separate logging module so that user processes can read and write user log messages.

      • New: drivers/staging/android/ram_console.c

    • Android Debug Bridge -- Debugging embedded devices can best be described as challenging. To make debugging easier, Google created the Android Debug Bridge (ADB), which is a protocol that runs over a USB link between a hardware device running Android and a developer writing applications on a desktop PC.

      drivers/usb/gadget:

    • New: drivers/usb/gadget/android.c

      Chg: drivers/usb/gadget/composite.c

      Chg: drivers/usb/gadget/f_acm.c

      New: drivers/usb/gadget/f_acm.h

      New: drivers/usb/gadget/f_adb.c

      New: drivers/usb/gadget/f_adb.h

      New: drivers/usb/gadget/f_mass_storage.c

    • New: drivers/usb/gadget/f_mass_storage.h



      Android also adds a new real-time clock, switch support, and timed GPIO support. We list the impacted files for these new modules at the end of this document.

  • Power Management --  Power management is one of the most difficult pieces to get right in mobile devices, so we split it out into a group separate from the other pieces. It's interesting to note that Google added a new power management system to Linux, rather than reuse what already existed. We list the impacted files at the end of this document.

    kernel/power:

    • New: kernel/power/consoleearlysuspend.c

      New: kernel/power/earlysuspend.c

      New: kernel/power/fbearlysuspend.c

      Chg: kernel/power/main.c

      Chg: kernel/power/power.h

      Chg: kernel/power/process.c

      New: kernel/power/userwakelock.c

      New: kernel/power/wakelock.c

  • Miscellaneous Changes --  In addition to the above, we found a number of changes that could best be described as, 'Miscellaneous.' Among other things, these changes include additional debugging support, keypad light controls, and management of TCP networking.

附: 差异表:


  1. arch/arm:
  2. Chg: arch/arm/kernel/entry-armv.S
  3. Chg: arch/arm/kernel/module.c
  4. Chg: arch/arm/kernel/process.c
  5. Chg: arch/arm/kernel/ptrace.c
  6. Chg: arch/arm/kernel/setup.c
  7. Chg: arch/arm/kernel/signal.c
  8. Chg: arch/arm/kernel/traps.c
  9. Chg: arch/arm/mm/cache-v6.S
  10. Chg: arch/arm/vfp/entry.S
  11. Chg: arch/arm/vfp/vfp.h
  12. Chg: arch/arm/vfp/vfphw.S
  13. Chg: arch/arm/vfp/vfpmodule.c
  14. arch/arm/mach-goldfish:
  15. New: arch/arm/mach-goldfish/audio.c
  16. New: arch/arm/mach-goldfish/board-goldfish.c
  17. New: arch/arm/mach-goldfish/pdev_bus.c
  18. New: arch/arm/mach-goldfish/pm.c
  19. New: arch/arm/mach-goldfish/switch.c
  20. New: arch/arm/mach-goldfish/timer.c
  21. block:
  22. Chg: block/blk-core.c
  23. Chg: block/genhd.c
  24. drivers/base/power:
  25. Chg: drivers/base/power/main.c
  26. drivers/bluetooth:
  27. Chg: drivers/bluetooth/bfusb.c
  28. Chg: drivers/bluetooth/bt3c_cs.c
  29. Chg: drivers/bluetooth/btusb.c
  30. Chg: drivers/bluetooth/hci_h4.c
  31. Chg: drivers/bluetooth/hci_ll.c
  32. drivers/char:
  33. New: drivers/char/dcc_tty.c
  34. New: drivers/char/goldfish_tty.c
  35. Chg: drivers/char/mem.c
  36. drivers/cpufreq:
  37. Chg: drivers/cpufreq/cpufreq_conservative.c
  38. Chg: drivers/cpufreq/cpufreq_ondemand.c
  39. drivers/i2c:
  40. New: drivers/i2c/chips/pca963x.c
  41. drivers/input:
  42. Chg: drivers/input/evdev.c
  43. Chg: drivers/input/input.c
  44. New: drivers/input/keyboard/goldfish_events.c
  45. New: drivers/input/keyreset.c
  46. New: drivers/input/misc/gpio_axis.c
  47. New: drivers/input/misc/gpio_event.c
  48. New: drivers/input/misc/gpio_input.c
  49. New: drivers/input/misc/gpio_matrix.c
  50. New: drivers/input/misc/gpio_output.c
  51. New: drivers/input/misc/keychord.c
  52. New: drivers/input/touchscreen/synaptics_i2c_rmi.c
  53. drivers/leds:
  54. New: drivers/leds/ledtrig-sleep.c
  55. drivers/misc:
  56. New: drivers/misc/apanic.c
  57. New: drivers/misc/kernel_debugger.c
  58. New: drivers/misc/pmem.c
  59. New: drivers/misc/qemutrace
  60. New: drivers/misc/uid_stat.c
  61. New: drivers/misc/wl127x-rfkill.c
  62. drivers/mmc:
  63. Chg: drivers/mmc/card/block.c
  64. Chg: drivers/mmc/core/bus.c
  65. Chg: drivers/mmc/core/core.c
  66. Chg: drivers/mmc/core/debugfs.c
  67. Chg: drivers/mmc/core/sd.c
  68. Chg: drivers/mmc/core/sdio_bus.c
  69. Chg: drivers/mmc/core/sdio.c
  70. Chg: drivers/mmc/core/sdio_io.c
  71. New: drivers/mmc/host/goldfish.c
  72. drivers/mtd:
  73. New: drivers/mtd/devices/goldfish_nand.c
  74. New: drivers/mtd/devices/goldfish_nand_reg.h
  75. Chg: drivers/mtd/nand/nand_base.c
  76. drivers/net:
  77. New: drivers/net/pppolac.c
  78. New: drivers/net/pppopns.c
  79. drivers/power:
  80. New: drivers/power/goldfish_battery.c
  81. drivers/rtc:
  82. New: drivers/rtc/alarm.c
  83. Chg: drivers/rtc/class.c
  84. New: drivers/rtc/rtc-goldfish.c
  85. drivers/serial:
  86. Chg: drivers/serial/serial_core.c
  87. drivers/staging/android:
  88. New: drivers/staging/android/binder.c
  89. New: drivers/staging/android/lowmemorykiller.c
  90. New: drivers/staging/android/ram_console.c
  91. New: drivers/staging/android/timed_gpio.c
  92. New: drivers/staging/android/timed_gpio.h
  93. New: drivers/staging/android/timed_output.c
  94. New: drivers/staging/android/timed_output.h
  95. drivers/switch:
  96. New: drivers/switch/switch_class.c
  97. New: drivers/switch/switch_gpio.c
  98. drivers/usb/gadget:
  99. New: drivers/usb/gadget/android.c
  100. Chg: drivers/usb/gadget/composite.c
  101. Chg: drivers/usb/gadget/f_acm.c
  102. New: drivers/usb/gadget/f_acm.h
  103. New: drivers/usb/gadget/f_adb.c
  104. New: drivers/usb/gadget/f_adb.h
  105. New: drivers/usb/gadget/f_mass_storage.c
  106. New: drivers/usb/gadget/f_mass_storage.h
  107. drivers/video:
  108. New: drivers/video/goldfishfb.c
  109. fs:
  110. Chg: fs/exec.c
  111. Chg: fs/fat/cache.c
  112. Chg: fs/fat/dir.c
  113. Chg: fs/fat/fatent.c
  114. Chg: fs/fat/fat.h
  115. Chg: fs/fat/file.c
  116. Chg: fs/fat/inode.c
  117. Chg: fs/fat/misc.c
  118. Chg: fs/fat/namei_msdos.c
  119. Chg: fs/fat/namei_vfat.c
  120. Chg: fs/fs-writeback.c
  121. Chg: fs/partitions/check.c
  122. Chg: fs/proc/base.c
  123. fs/yaffs2/:
  124. kernel:
  125. Chg: kernel/cgroup.c
  126. Chg: kernel/cgroup_freezer.c
  127. Chg: kernel/cpuset.c
  128. Chg: kernel/exit.c
  129. Chg: kernel/fork.c
  130. Chg: kernel/futex.c
  131. Chg: kernel/panic.c
  132. Chg: kernel/posix-cpu-timers.c
  133. Chg: kernel/printk.c
  134. Chg: kernel/ptrace.c
  135. Chg: kernel/sched.c
  136. Chg: kernel/sysctl.c
  137. Chg: kernel/time/tick-sched.c
  138. kernel/power:
  139. New: kernel/power/consoleearlysuspend.c
  140. New: kernel/power/earlysuspend.c
  141. New: kernel/power/fbearlysuspend.c
  142. Chg: kernel/power/main.c
  143. Chg: kernel/power/power.h
  144. Chg: kernel/power/process.c
  145. New: kernel/power/userwakelock.c
  146. New: kernel/power/wakelock.c
  147. lib:
  148. Chg: lib/genalloc.c
  149. mm:
  150. New: mm/ashmem.c
  151. Chg: mm/mmap.c
  152. Chg: mm/page_alloc.c
  153. Chg: mm/shmem.c
  154. net:
  155. Chg: net/bluetooth/af_bluetooth.c
  156. Chg: net/bluetooth/cmtp/core.c
  157. Chg: net/bluetooth/hci_conn.c
  158. Chg: net/bluetooth/hci_core.c
  159. Chg: net/bluetooth/hci_event.c
  160. Chg: net/bluetooth/hci_sysfs.c
  161. Chg: net/bluetooth/l2cap.c
  162. Chg: net/bluetooth/rfcomm/core.c
  163. Chg: net/bluetooth/rfcomm/sock.c
  164. Chg: net/bluetooth/sco.c
  165. Chg: net/core/dev.c
  166. Chg: net/ipv4/af_inet.c
  167. Chg: net/ipv4/devinet.c
  168. New: net/ipv4/sysfs_net_ipv4.c
  169. Chg: net/ipv4/tcp_ipv4.c
  170. Chg: net/ipv6/af_inet6.c
  171. Chg: net/rfkill/rfkill.c
  172. Chg: net/socket.c
  173. security:
  174. Chg: security/commoncap.c
  175. Chg: security/security.c

Android kernel和标准Linux Kernel的差异相关推荐

  1. Android 系统(4)---Android HAL层与Linux Kernel层驱动开发简介

    Android HAL层与Linux Kernel层驱动开发简介 近日稍微对Android中的驱动开发做了一些简要的了解,稍稍理清了一下Android驱动开发的套路,总结一下笔记. HAL:Hardw ...

  2. Android HAL层与Linux Kernel层驱动开发简介

    Android HAL层与Linux Kernel层驱动开发简介 阅读数:5070 近日稍微对Android中的驱动开发做了一些简要的了解,稍稍理清了一下Android驱动开发的套路,总结一下笔记. ...

  3. android linux kernel VS standard linux kernel

    在kernel子目录下存放的就是Android的Linux Kernel了, 通过和标准的Linux 2.6.25 Kernel的对比,我们可以发现,其主要增加了以下的内容: 1. 基于ARM架构增加 ...

  4. Android 核心已经从 Linux kernel 代码库中删除

    Greg Kroah-Hartman Novell 的开发人员,他主要负责维护 Linux 操作系统的启动,USB和驱动核心,近日他表示谷歌 Android 系统的驱动核心 已经从 Linux ker ...

  5. linux kernel 最新版本,linux kernel 最新版本4.10正式发布 附下载地址

    欢迎分享本新闻到大家的qq群.qq空间.微信群.微博等. 正如大家所预期的,大神Linus Torvalds今天发布了Linux Kernel 4.10的正式版,新版中带来了大量改善,强化了安全功能, ...

  6. linux kernel 培训,《Linux Kernel培训课件》.pdf

    <Linux Kernel培训课件>.pdf Introduction to Linux Kernel Subsystems 中科信软高级技术培训中心- Objectives  Unde ...

  7. Android内核开发 Goldfish Linux Kernel编译及安卓虚拟机测试

    本文出处: http://blog.csdn.net/leytton/article/details/52736549 1.配置交叉编译环境 作者用的是android-ndk的/交叉编译工具 方法一: ...

  8. linux kernel 文件夹,Linux kernel 文件夹说明

    Linux 内核代码的目录结构 arch: 包含和硬件体系相关的的代码,每种硬件平台占一个相应的目录,如i386,arm, arm64, powerpc,mips等. block: 块设备驱动程序I/ ...

  9. Android/Linux Kernel 内存管理-入门笔记

    Android/Linux Kernel上下層的記憶體管理機制,由於牽涉到基礎,核心與使用者空間的Framework,這系列的文章會分為幾個單元,依據筆者自己的時間安排,逐一分享出來,並希望對各位有所 ...

最新文章

  1. 使用Python,OpenCV检测摄像机到标记对象的距离
  2. 有效快速的学习微信小程序
  3. mac下mysql5.7.10密码问题
  4. php ajax城市联动,php+ajax 城市联动
  5. node --- 实现session认证.
  6. LogoSharp:Logo语言的C#实现
  7. eclipse 中文乱码
  8. Java8 Stream详解~排序:sorted
  9. 皮尔逊相关性_皮尔逊的相关性及其在机器学习中的意义
  10. QQ 调查用户是否希望推 「已读」功能,如何评价「已读」功能?QQ是否要加这个功能?...
  11. shaderop的定义
  12. 在Mac端的 几种文本操作技巧
  13. Migrate to vc8(vs2005)
  14. linux实验十shell程序设计,实验二Linux Shell编程.doc
  15. 印象笔记三级目录_如何建立印象笔记的三层目录构架
  16. 环境试验的认识和环境可靠性测试
  17. 使用Sugar制作数据可视化大屏的操作过程
  18. 使用WPF技术模拟手机界面
  19. Vue elementUI中的Breadcrumb面包屑
  20. 为云服务器(VPS)增加一个站点支持

热门文章

  1. [转载]YS18-3荧光管电子时钟100%开源放送(软件源工程及代码.硬件原理图)
  2. 互联网扫地僧精心总结,39W字上千道Java一线大厂面试题手册
  3. STM32F407单片机通用24CXXX读写程序(KEIL),兼容24C系列存储器(24C01到24C512),支持存储器任意地址跨页连续读写多个页
  4. php fpm什么意思,php-fpm是什么?
  5. 在Matlab中设计梳状滤波器
  6. vue中时间戳转化日期
  7. .dmp数据文件的解读
  8. 路由器和静态路由的配置
  9. StarCitizen星际公民添加好友一起玩教程
  10. html如何画出四个圆圈,HTML5 Canvas中绘制椭圆的4种方法