你的位置:首页 > 操作系统

[操作系统]Android深度探索与HAL驱动开发(卷1)


本文主要从 Android版本与对应的linux内核版本关系 和 Android系统架构 两部分来讨论。

 

1、Android版本与Linux内核的关系

 (1)Android最初使用Linux2.6作为其内核,随着Android与Linux内核的发展,不同版本的Android使用的linux内核版本差异较大,所以不同Android版本驱动可能并不通用。

下表显示了目前所有Android版本与linux内核版本的联系。

 

Code nameAndroid Version numberLinux Kernel NumberInitial release dateAPI level
 1.0 23-Sep-081
 1.1 9-Feb-092
Cupcake1.52.6.2727-Apr-093
Donut1.62.6.2915-Sep-094
Eclair2.0–2.12.6.2926-Oct-095–7
Froyo2.2–2.2.32.6.3220-May-108
Gingerbread2.3–2.3.72.6.356-Dec-109–10
Honeycomb3.0–3.2.62.6.3622-Feb-1111–13
Ice Cream Sandwich4.0–4.0.43.0.118-Oct-1114–15
Jelly Bean4.1–4.3.13.4.09-Jul-1216–18
KitKat4.4–4.4.4, 4.4W-4.4W.2 31-Oct-1319–20
Lollipop5.0–5.1.1 12-Nov-1421–22
Marshmallow6.0–6.0.1 5-Oct-1523
NDeveloper Preview 2   

 

 (2)随着市场的发展,Android的不同版本被受众接受的程度大有不同。下图显示了自2009年12月以来,全球范围内Android版本使用的频率分布的比例。

 


从图中可以看出,2016年2月份时,Android 4.4 KitKat 版本是目前最广泛使用的版本,占到了所有Android设备使用率的35.5%。屈居第二的是占到了市场份额34.1%的Android版本 Lollipop 。

 

 2、Android System Architecture

Android系统从下至上分为4层:linux内核,Android核心库,及Android运行时环境(Android Runtime) ,应用程序框架,应用程序及小部件,如下图所示。

 

 

Android的 HAL 层是为了一些硬件提供商提出的保护专利的驱动程序而产生的,简而言之,就是为了避开 linux kernel 的 GPL License 的束缚。Android把控制硬件的动作都放在了用户空间中,而在 kernel driver 中只有最简单的读/写寄存器的操作,而完全去掉了各种功能性的操作(如控制逻辑),这些能够体现硬件特性的操作都放在了Android的 HAL 层。
  
Android的 HAL 层如下图所示。

 

参考资料:

1、Wikipedia-Android Version

2、《Android 系统移植与驱动开发》 华清远见移动互联网学院 郑萌 等编著