zoukankan      html  css  js  c++  java
  • 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 系统移植与驱动开发》 华清远见移动互联网学院 郑萌 等编著

  • 相关阅读:
    [UWP]使用CompositionLinearGradientBrush实现渐变画笔并制作动画
    [WPF 自定义控件]模仿UWP的ProgressRing
    [UWP]占领标题栏
    [WPF 自定义控件]关于ScrollViewer和滚动轮劫持(scroll-wheel-hijack)
    [WPF 自定义控件]给WPF一个HyperlinkButton
    VisualStudio中的单元测试
    重温《单元测试的艺术》,总结常用知识点
    [WPF 自定义控件]自定义Expander
    nhibernate入门使用经验
    个人搜藏小技巧:eclipse 设定proxy,仍不能连网的问题
  • 原文地址:https://www.cnblogs.com/JabinZhang/p/5406281.html
Copyright © 2011-2022 走看看