zoukankan      html  css  js  c++  java
  • Android系统移植于驱动开发概述

      众所周知,Android是移动设备操作系统的龙头老大,有着极高的市场占有率,但是由于Android原生的代码支持的设备不多,因此要想在自己的设备上完美运行Android就必须开发一些驱动来使得Android来识别相应的硬件。那么,这个为特定设备定制Android的过程就被称为“移植”。

      Android的系统架构可以分为:Linux内核;C/C++代码库;Android SDK API;应用程序四部分。而Android是基于Linux的,所以Android和其他Linux系统的核心部分差异非常小。那么Android系统移植的主要工作是什么呢?Android移植可以分为应用移植和系统移植。应用移植其实和从字面上理解的一样,就是将应用程序移植到特定的硬件平台上。而Android系统移植则是将Android操作系统移植到某个特定硬件平台来运行。不过在Android系统中还增加了一个硬件抽象层——HAL。Android SDK通过HAL直接访问Linux驱动,并不像其他Linux系统一样由应用程序直接访问驱动,而是隔了HAL。之所以这样设计,有很多原因,之一是由于Linux内核基于GPL开源协议,而很多厂商不想开放源代码,所以增加了HAL层后,可以将Linux驱动的业务逻辑放在了HAL层,这样处理Linux驱动开源技术,也只是一个空架子而已。

      所以如果为Android增加了新的驱动或者修改原来的驱动代码,HAL中的代码就要做相应的调整。因此,Android移植的主要工作是:1)移植Linux驱动,2)移植HAL。而移植的复杂度则是多变的,这取决于各方面的原因,如要移植的Android系统提供了驱动源代码,或者无法获得驱动的源代码,这就有了很大的区别。

      在移植过程中需要认识到的是,Linux驱动只与Linux内核有关,也就是说与用户使用的系统无关,只要Linux系统的内核相同,那么驱动就是通用的。那么怎么进行Linux内核的判断呢?Linux系统的内核由主版本号、次版本号、修订版本号、微调版本号、为特定的Linux系统特别调校的描述这五部分组成,只要这五部分都相同,那么就可以说这两个Linux系统的内核是一样的,驱动也是通用的。学习Android驱动开发其实就是学习Linux驱动开发,不同的是Android增加了一个HAL,这属于Android特有的。不过HAL也不是必需的,通过NDK一样可以直接访问Linux驱动。

  • 相关阅读:
    Java程序:从命令行接收多个数字,求和并输出结果
    大道至简读后感
    大道至简第一章读后感Java伪代码
    Creating a SharePoint BCS .NET Connectivity Assembly to Crawl RSS Data in Visual Studio 2010
    声明式验证超时问题
    Error message when you try to modify or to delete an alternate access mapping in Windows SharePoint Services 3.0: "An update conflict has occurred, and you must re-try this action"
    Upgrading or Redeploying SharePoint 2010 Workflows
    Upgrade custom workflow in SharePoint
    SharePoint 2013中Office Web Apps的一次排错
    How to upgrade workflow assembly in MOSS 2007
  • 原文地址:https://www.cnblogs.com/ww3344/p/5427569.html
Copyright © 2011-2022 走看看