Android Linux Kernel 移植流程

来源:互联网 发布:数据质量考核办法 编辑:程序博客网 时间:2024/04/29 01:47

转自:http://itlab.idcquan.com/linux/administer/964185.html

Android Driver

  Android Binder:基于openBinder框架的驱动,进程间通信底层主要驱动,没有可它,android无法工作

  Android Logger:是一个轻量级的日志系统,在内核里是misc(杂项)设备驱动,它与logcat配合实现调试。

  代码位置:driver/staging/android/logger.c

  Android Low memory killer:低内存管理器,是linux标准OOM(Out Of Memory)改进版,当系统内存不足时,会杀死一些不重要的进程,释放空间

  代码位置:driver/staging/android/lowmemorykiller.c

  Android Ram Console:辅助调试的内核机制,它用一段物理内存虚拟一个console设备,这样printk的时候会把调试信息写一份到这块ram,最后通过/proc文件系统输出

  Android Timed Device timed_gpio:基于platform driver实现的一个增强的gpio驱动,它与内核定时器绑定在了一起,实现了一种时钟控制的gpio

  Android Switch:android新引进的驱动,用于检查一些开关量,如耳机插入,USB设备插入,通过sysfs实现

  Android Power Mananger:基于标准linux电源管理系统的轻量级电源管理驱动

  Android Ashmem:匿名共享内存,为进程间通信提供大块共享内存,同时为内核提供回收和管理这些内存的机制

  Android PMEM:用于向用户空间提供连续的物理内存,DSP和其他需要连续物理内存的设备需要它的提供服务

  代码位置:driver/misc/pmem.c

  Android alarm:提供一个定时器用于把设备从睡眠状态唤醒,同时它也提供了一个即使在设备睡眠时也会运行的时钟基准。

  代码位置:driver/rtc/alarm.c

  USB Gadget:一个基于标准Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gadget框架的

  代码位置:driver/usb/gadget

  移植Drivers

  Connectivity

  Bluetooth

  GPS

  Wi-Fi

  Display Drivers

  Input Devices

  Keymaps and Keyboard

  Lights

  Multimedia

  Audio

  Camera/Video

  Power Management

  Sensors

  Telephony

  Radio Interface Layer

  SIM Toolkit Application(STK)

  Android Linux Kernel 特性

  从Linux 2.6.33开始,Google智能手机操作系统Android核心代码被删除。

  Android 2.2 froyo使用Linux Kernel版本为2.6.32

  Linux 2.6.32版本上Android添加了如下几个模块

  几个重要的makefile

  Android.mk 编译源码mk文件,每个module和package目录下有这么一个文件

  main.mk 定义编译全部代码的依赖关系

  config.mk 用于配制编译系统,决定如何编译

  envsetup.mk 定义了编译环境配置

  product_config.mk 读取AndroidProducts.mk生成TARGET_DEVICE变量

  AndroidProducts.mk 定义了某厂商所有产品文件列表

  BoardConfig.mk 定义开发板软件相关配置项,将来影响系统条件编译。

  编译Android系统

  source build/envsetup.sh

  加载编译用到的环境变量

  定义了一些命令参数,这些命令函数方便用户选择Android产品编译选项,如help,lunch等

  加载vendor目录下自定义厂商产品编译项文件vendorsetup.sh,以此让编译系统编译不同产品的定制系统。

  lunch [build-option]

  用于选定编译平台

  不加build-option打印所有的系统编译项,设置主要的环境变量

  TARGET_RPODUCT,TARGET_BUILD_VARIANT、TARGET_BUILD_TYPE

  make

  执行编译

  make 依据当前目录下Makefile编译目标文件

  -j4 表示4线程同时编译(多核心)

  make snod make //sdk no depend 只编译SDK,生成system.img

  make ramdisk

  make framework

  make sdk

  m 编译全部

  mm 只编译当前目录

  mmm 编译指定目录

  编译结果

 

 

  Android系统磁盘分区(一般情况)

 






0 0
原创粉丝点击