Android深度探索(卷一)HAL与驱动开发 第九章

通过学习Android深度探索(卷一)HAL与驱动开发的第九章让我知道了HAL硬件抽象层,为什么要在Android中加入HAL和Android HAL架构。

HAL是建立在Linux驱动之上的一套程序库。这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层,其主要目的除了尽量避免应用程序直接访问Linux驱动外,还有一个重要原因,那就是保护“私人财产”。

在传统的Linux系统中Linux驱动一般有两种类型的代码:访问硬件寄存器代码和业务逻辑代码。所以加入HAL的主要原因就是:1、统一硬件的调用接口,由于HAL有标准的调用接口,所以可以利用HAL屏蔽Linux驱动复杂、不统一的接口;2、解决了GPL版权问题,由于Linux内核基于GPL协议,而Android基于apache licence2.0协议,而HAL将原本位于Linux驱动中的敏感代码向上一了一个层次;3、针对一些特殊的要求,对于有些硬件,可能需要访问一些用户的空间资源,或在内核空间不方便完成的工作以及特殊需求,在这种情况下,可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作。

HAL架构的基本原理就是在Android系统中使用程序库调用位于内核空间的Linux驱动,然后Android应用程序可以通过ndk程序访问HAL中的程序库,或直接在Android应用程序中访问HAL中的程序库。

时间: 2024-11-05 13:37:28

Android深度探索(卷一)HAL与驱动开发 第九章的相关文章

《Android深度探索》(卷1)HAL与驱动开发 第九章心得体会

本章主要学习了硬件抽象层:HAL. Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节.也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间.为什么要这样安排呢?把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间

Android深度探索--HAL与驱动开发----第九章读书笔记

Google为Android加入HAL主要有如下的目的. 统一硬件的调用接口.由于HAL 有标准的调用接口,所以可以利用HAL屏蔽Linux 驱动复杂.不统一的接口. 解决了GPL版权问题.由于Linux 内核基于GPL协议,而Android 基于Apache Licence 2 . 0.协议.因此Google 玩了个“穿越“,将原本位于Linux驱动中的敏感代码向上移了一个层次.这样这些敏感代码就摆脱了GPL 协议的束缚, 那些不想开源的Linux驱动作者也就没必要开源了. 针对一些特殊的要求

Android深度探索(卷1)HAL与驱动开发第九章读书笔记

本章主要讲硬件抽象层:HAL.HAL 是建立在linux 驱动之上的一套程序库,Google为Android加入HAL主要如下的目的. 1.统一硬件的调用接口 2.解决了GPI版权的问题 3.针对一些特殊的要求 在LED的驱动中,我们加入HAL使用程序不需要关心Linux驱动和设备文件的交互方式.编写一款支持HAL的linux驱动程序的步骤: 第一步:编写linux驱动 第二步:编写 HAL Library 第三步:编写Service library 编写HAL模块的步骤和原理如下: 第一步:定

Android深度探索(卷1)HAL与驱动开发第九章总结

本章主要讲硬件抽象层:HAL.HAL 是建立在linux 驱动之上的一套程序库,Google为Android加入HAL主要如下的目的. 1.统一硬件的调用接口 2.解决了GPI版权的问题 3.针对一些特殊的要求 在LED的驱动中,我们加入HAL使用程序不需要关心Linux驱动和设备文件的交互方式.编写一款支持HAL的linux驱动程序的步骤: 第一步:编写linux驱动 第二步:编写 HAL Library 第三步:编写Service library 编写HAL模块的步骤和原理如下: 第一步:定

Android深度探索(卷1)HAL与驱动开发 第九章 硬件抽象层:HAL 读书笔记

HAL是建立在Linux驱动之上的一套程序库.这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层.HAL的主要目的一个是用来保护"私人财产",另一个是尽量避免应用程序直接访问Linux驱动程序. 传统的Linux系统中Linux驱动一般有两种类型的代码,访问硬件寄存器和业务逻辑代码.对于访问硬件寄存器代码,并无秘密可言,因为都是调用Linux内核的标准函数进行的标准操作.而Linux的业务逻辑部分对于有些企业或者个人并不想讲源代码公开.Linux内核采用GPL协议,

Andriod深度探索—HAL与驱动开发 第九 章 读书笔记and一点心得

HAL是建立在Linux驱动上的一套程序库.这套程序库并不属于Linux内核,而是属于Linux内核层之上的应用层.Google为Android增加HAL的主要目的除了尽量避免应用程序直接访问Linux驱动外,还有一个重要原因,那就是保护“私人财产”. Google为Abdroid加入HAL主要有如下目的: 统一硬件的调试接口. 解决了GPL版权问题. 针对一些特殊要求. 编写一款支持HAL的Linux驱动程序的步骤 第一步:编写Linux驱动 第二步:编写HAL Libray 第三步:编写 S

Andriod深度探索(卷1)HAL与驱动开发 第九章读书心得

本章主要讲硬件抽象层:HAL,它是建立在Linux驱动之上的一套程序库.刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口.二,解决了GPL版权问题.三,针对一些特殊的要求.可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作. 下一个小节讲了Android HAL 架构.接下来讲了为led驱动增加HAL,主要是将所有的业务逻辑从LED驱动移到HAL模块,而LED驱动只保留读写寄存器的功能. 涉及的HAL步骤:1.编写Linux驱动2.编写HAL L

Android深度探索HAL与驱动开发 第二章

Android深度探索HAL与驱动开发 第二章 搭建Android开发环境 读书笔记 一.Android底层开发需要的工具 1.JDK6或以上版本 2.Eclipse3.4或以上版本 3.ADT(用于开发Android的应用程序) 4.CDT(用于开发Android NDK程序) 5.Android SDK 6.Android NDK 7.交叉编译环境 8.Linux内核源代码 9.Android源代码 10.用于调试开发板的串口工具:minicom 二.安装JDK 下载JDK后在终端输入 #

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记 本章是 Android系统移植与驱动开发概述性的具体讲解.首先,Android被分为了四层架构.在最底层的是Linux内核 .然后分别是C/C++代码库.Android SDK A和应用程序.而Android的移植又分为系统移植和应用移植.系统移植要实现Android操作系统在其他硬件平台上运行起来,其中的关键是Linux的内核.内核必须要完成对平台上运行的各个硬件的识别.所以这就需要Linu