Android系统级深入开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1.2 Android对Linux内核的使用

在Android系统中,基本上使用的是标准的Linux 2.6内核,基本上和其他Linux系统类似。

1.Android中的Linux操作系统

Android中使用Linux操作系统,除了Linux的通用代码之外,主要包含3个方面的内容:

体系结构和处理器

Android特定的驱动程序

标准的设备驱动程序

Android中Linux的架构如图3-2所示。

图3-2 Android中的Linux内核与驱动

Android中Linux操作系统的3个方面中:体系结构处理器和标准的设备驱动程序这两个方面是和硬件相关的,但是对于同一种硬件,在Android系统和非Android的Linux系统中是基本一样的;Android特定的驱动程序,通常是和硬件无关的驱动程序,仅仅在Android系统中使用,但是对于同样适用Android操作系统的不同硬件,这部分的内容是一样的。

Android系统通常用于移动设备或者其他的嵌入式设备,因此多基于ARM体系结构,在ARM体系结构具有多种处理器。对于同一种处理器,对于不同外围设备,因此可能也将使用不同的驱动程序。

2.为Android构建Linux的操作系统

为Android构建一个基本Linux操作系统,如果以非Android的Linux操作系统为起点,那么主要的工作就是增加Android特定的驱动程序。Android中的Linux操作系统包含了很多的驱动程序,将其移植到一个新的系统中的步骤比较简单:

增加源代码

在KConfig中增加内容

在Makefile中增加内容

在基本Linux操作系统之上,主要的内容就是各种具体设备的驱动程序了。在Android系统中,通常使用framebuffer驱动、Event输入驱动、Flash MTD驱动、WIFI驱动、蓝牙驱动、串口驱动等标准的驱动程序。

在音视频的输入输出方面,标准的Linux具有Alas Audio驱动、OSS Audio驱动、Video for Linux视频驱动等驱动程序,在Android中经常被使用。

在Android系统中,振动器、背光、电源系统等使用sysfs接口作为内核空间和用户空间的接口,驱动程序需要提供这些内容。

Android系统中的传感器、GPS等设备,并没有指定驱动程序的类型,可以在实现的过程中根据系统的实际情况选择不同的接口(内核空间到用户空间)来实现。