Android深度探索与HAL驱动开发(卷1)-- 第一章随笔

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

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

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

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

Code name Android Version number Linux Kernel Number Initial release date API level
  1.0   23-Sep-08 1
  1.1   9-Feb-09 2
Cupcake 1.5 2.6.27 27-Apr-09 3
Donut 1.6 2.6.29 15-Sep-09 4
Eclair 2.0–2.1 2.6.29 26-Oct-09 5–7
Froyo 2.2–2.2.3 2.6.32 20-May-10 8
Gingerbread 2.3–2.3.7 2.6.35 6-Dec-10 9–10
Honeycomb 3.0–3.2.6 2.6.36 22-Feb-11 11–13
Ice Cream Sandwich 4.0–4.0.4 3.0.1 18-Oct-11 14–15
Jelly Bean 4.1–4.3.1 3.4.0 9-Jul-12 16–18
KitKat 4.4–4.4.4, 4.4W-4.4W.2   31-Oct-13 19–20
Lollipop 5.0–5.1.1   12-Nov-14 21–22
Marshmallow 6.0–6.0.1   5-Oct-15 23
N Developer 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 系统移植与驱动开发》 华清远见移动互联网学院 郑萌 等编著

原文地址:https://www.cnblogs.com/JabinZhang/p/5406281.html