收藏 分享(赏)

Android.docx

上传人:11xg27ws 文档编号:7054987 上传时间:2019-05-04 格式:DOCX 页数:6 大小:20.57KB
下载 相关 举报
Android.docx_第1页
第1页 / 共6页
Android.docx_第2页
第2页 / 共6页
Android.docx_第3页
第3页 / 共6页
Android.docx_第4页
第4页 / 共6页
Android.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、已经有一些的文章介绍 Android 内核了,本系列篇将从 Linux 内核的角度来分析 Android 的内核,希望给初学者提够有用的信息。本章将简单的介绍 Android 内核的全貌,起到一个抛砖引玉的作用。从下一篇开始将详细介绍每一个 Android 内核驱动程序及其作用。Android 内核是基于 Linux 2.6 内核的(目前最新开发版本是 2.6.31),它是一个增强内核版本,除了修改部分 Bug 外,它提供了用于支持 Android 平台的设备驱动,其核心驱动主要包括:Android Binder,基于 OpenBinder 框架的一个驱动,用于提供 Android 平台的进程

2、间通讯(IPC,inter-process communication)。源代码位于 drivers/staging/android/binder.cAndroid 电源管理( PM),一个基于标准 Linux 电源管理系统的轻量级的 Android 电源管理驱动,针对嵌入式设备做了很多优化。源代码位于 kernel/power/earlysuspend.ckernel/power/consoleearlysuspend.ckernel/power/fbearlysuspend.ckernel/power/wakelock.ckernel/power/userwakelock.c低内存管理器(

3、Low Memory Killer),相对于 Linux 标准 OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程来释放需要的内存。源代码位于 drivers/staging/android/lowmemorykiller.c匿名共享内存(ashmem ),为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。源代码位于 mm/ashmem.cAndroid PMEM(Physical),PMEM 用于向用户空间提供连续的物理内存区域,DSP 和某些设备只能工作在连续的物理内存上。源代码位于 drivers/misc/pmem.cAndroid Logger,

4、一个轻量级的日志设备,用于抓取 Android 系统的各种日志。源代码位于 drivers/staging/android/logger.cAndroid Alarm,提供了一个定时器用于把设备从睡眠状态唤醒,同时它也提供了一个即使在设备睡眠时也会运行的时钟基准,源代码位于 drivers/rtc/alarm.cUSB Gadget 驱动,一个基于标准 Linux USB gadget 驱动框架的设备驱动,Android 的 USB 驱动是基于 gaeget 框架的,源代码位于 drivers/usb/gadget/Android Ram Console,为了提供调试功能,Android 允许

5、将调试日志信息写入一个被称为RAM Console 的设备里,它是一个基于 RAM 的 Buffer。源代码位于 drivers/staging/android/ram_console.c。Android timed device,提供了对设备进行定时控制功能,目前支持 vibrator 和 LED 设备。源代码位于 drivers/staging/android/timed_output.c(timed_gpio.c)。Yaffs2 文件系统,Android 采用 Yaffs2 作为 MTD nand flash 文件系统,源代码位于 fs/yaffs2/目录下。Yaffs2 是一个快速稳定

6、的应用于 NAND 和 NOR Flash 的跨平台的嵌入式设备文件系统,同其他 Flash 文件系统相比,Yaffs2 使用更小的内存来保存他的运行状态,因此它占用内存小;Yaffs2 的垃圾回收非常简单而且快速,因此能达到更好的性能;Yaffs2 在大容量的 NAND Flash上性能表现尤为明显,非常适合大容量的 Flash 存储。Android 内核添加或修改的文件很多,下面的列表描述了 Android Emulator 内核的文件: drivers/misc/kernel_debugger.cdrivers/misc/pmem.cdrivers/misc/qemutrace/qemu

7、_trace_sysfs.cdrivers/misc/qemutrace/qemu_trace.cdrivers/misc/qemutrace/qemu_trace.hdrivers/misc/uid_stat.cdrivers/staging/android/lowmemorykiller.cdrivers/staging/android/logger.cdrivers/staging/android/timed_output.hdrivers/staging/android/ram_console.cdrivers/staging/android/timed_gpio.cdrivers/s

8、taging/android/logger.hdrivers/staging/android/binder.hdrivers/staging/android/binder.cdrivers/staging/android/timed_output.cdrivers/staging/android/timed_gpio.hdrivers/rtc/alarm.cdrivers/rtc/rtc-goldfish.cdrivers/net/pppolac.cdrivers/net/ppp_mppe.cdrivers/net/pppopns.cdrivers/video/goldfishfb.cdriv

9、ers/switch/switch_class.cdrivers/switch/switch_gpio.cdrivers/char/dcc_tty.cdrivers/char/goldfish_tty.cdrivers/watchdog/i6300esb.cdrivers/input/misc/gpio_event.cdrivers/input/misc/gpio_input.cdrivers/input/misc/gpio_output.cdrivers/input/misc/keychord.cdrivers/input/misc/gpio_axis.cdrivers/input/misc

10、/gpio_matrix.cdrivers/input/keyreset.cdrivers/input/keyboard/goldfish_events.cdrivers/input/touchscreen/synaptics_i2c_rmi.cdrivers/usb/gadget/android.cdrivers/usb/gadget/f_adb.hdrivers/usb/gadget/f_mass_storage.hdrivers/usb/gadget/f_adb.cdrivers/usb/gadget/f_mass_storage.cdrivers/mmc/host/goldfish.c

11、drivers/power/goldfish_battery.cdrivers/leds/ledtrig-sleep.cdrivers/mtd/devices/goldfish_nand_reg.hdrivers/mtd/devices/goldfish_nand.ckernel/power/earlysuspend.ckernel/power/consoleearlysuspend.ckernel/power/fbearlysuspend.ckernel/power/wakelock.ckernel/power/userwakelock.ckernel/cpuset.ckernel/cgro

12、up_debug.ckernel/cgroup.cmm/ashmem.cinclude/linux/ashmem.hinclude/linux/switch.hinclude/linux/keychord.hinclude/linux/earlysuspend.hinclude/linux/android_aid.hinclude/linux/uid_stat.hinclude/linux/if_pppolac.hinclude/linux/usb/android.hinclude/linux/wifi_tiwlan.hinclude/linux/android_alarm.hinclude/

13、linux/keyreset.hinclude/linux/synaptics_i2c_rmi.hinclude/linux/android_pmem.hinclude/linux/kernel_debugger.hinclude/linux/gpio_event.hinclude/linux/wakelock.hinclude/linux/if_pppopns.hnet/ipv4/sysfs_net_et/ipv4/af_et/ipv6/af_et/bluetooth/af_bluetooth.csecurity/commoncap.cfs/proc/base.cAndroid 内核配置An

14、droid 是基于 Linux 的,对于一个新的设备,我们首先要编译一个支持 Android 的 Kernel,那么如何使你的 Kernel Android 化呢?除了要移植前面提到的驱动之外,就是如何配置你的Kernel 来支持 Android 平台,这可以参考 Goldfish 的内核配置文件 - arch/arm/configs/goldfish_defconfig。一般来说,我们会基于一个平台标准内核配置选项来配置 Android 内核,你可以根据具体的硬件平台来选择 Android 内核的配置选项,可以参考下面的 Android 内核配置列表:一般需要支持的内核选项 ANDROID_

15、PARANOID_NETWORKASHMEMCONFIG_FB_MODE_HELPERSCONFIG_FONT_8x16CONFIG_FONT_8x8CONFIG_YAFFS_SHORT_NAMES_IN_RAMDABEARLYSUSPENDFBFB_CFB_COPYAREAFB_CFB_FILLRECTFB_CFB_IMAGEBLITFB_DEFERRED_IOFB_TILEBLITTINGHIGH_RES_TIMERSINOTIFYINOTIFY_USERINPUT_EVDEVINPUT_GPIOINPUT_MISCLEDS_CLASSLEDS_GPIOLOCK_KERNELLkOGGER

16、LOW_MEMORY_KILLERMISC_DEVICESNEW_LEDSNO_HZPOWER_SUPPLYPREEMPTRAMFSRTC_CLASSRTC_LIBSWITCHSWITCH_GPIOTMPFSUID_STATUID16USB_FUNCTIONUSB_FUNCTION_ADBUSER_WAKELOCKVIDEO_OUTPUT_CONTROLWAKELOCKYAFFS_AUTO_YAFFS2YAFFS_FSYAFFS_YAFFS1YAFFS_YAFFS2但是 Android 推荐不要支持下面两个功能:CONFIG_YAFFS_DISABLE_LAZY_LOADDNOTIFY配置好后,就可以用 Toolchain 来编译内核了。编译内核比较简单,以 Emulator 的 kernel 为例:- git clone git:/android.kernel.org/kernel/common.git kernel-emulator- cd kernel-emulator- export ARCH=arm- export CROSS_COMPILE=arm-eabi- export PATH= PATH- make goldfish_defconfig- make

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报