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

本章主要讲硬件抽象层:HAL.HAL 是建立在linux 驱动之上的一套程序库,Google为Android加入HAL主要如下的目的。

1.统一硬件的调用接口

2.解决了GPI版权的问题

3.针对一些特殊的要求

在LED的驱动中,我们加入HAL使用程序不需要关心Linux驱动和设备文件的交互方式。编写一款支持HAL的linux驱动程序的步骤:

第一步:编写linux驱动

第二步:编写 HAL Library

第三步:编写Service library

编写HAL模块的步骤和原理如下:

第一步:定义结构体和宏

描述HAL模块的hw-module-t结构体

描述HAL设备的HW-device-t结构体

描述模块入口函数的hw-module-methods-t结构体

第二步:编写HAL模块的open函数

第三步:定义hw-module-methods-t结构体变量

第四步:定义HAL-module-info-sym变量

第五步:编写HAL模块的close函数

第六步:编写控制LED的函数

在Android系统中使用Linux驱动由两种方式。一种就是通过传统的方式直接与Linux驱动交互,另外一种就是Android特有的,就是HAL模块。

http://home.cnblogs.com/u/zivjeli/

时间: 2024-10-15 03:31:57

Android深度探索(卷1)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协议,

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

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

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记

Android深度探索(卷1)HAL与驱动开发 第二章 搭建Android开发环境 读书笔记   本章主要讲解在Ubuntu Linux 下搭建Android开发环境. 1.JDK:从官网下载压缩包,并将其解压缩. Gedit etc/profile 并设置PATH环境变量,记得PATH. 2.搭建Android应用程序开发环境. 安装Android SDK 安装Eclipse 安装ADT 配置ADT 建立AVD 这个步骤是安装Android SDK,步骤与操作与在Windows操作系统下的安装

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

Android系统在2015年占全球市场份额的的81.6%,而且近几年一直持增长趋势,走在大街上,随处可见的安卓手机,毋庸置疑,安卓已经成为当前智能手机操作系统的老大.当我们想要搞明白Android驱动开发的时候,其实就是在学习linux驱动开发的过程,只不过安卓增加了一个HAL,这是Android特有的.Google这样设计的原因有很多,例如由于Linux内核基于CPL开源协议,而很多驱动厂商不想开放源代码,所以增加HAL层后,可已经Linux驱动的业务逻辑放在HAL层. Android的系统

Android深度探索(卷1)HAL与驱动开发1-4章

第一章:Android系统移植与驱动开发概述 这一章是学习Linux驱动的第一道门,在这一章中,主要对Android以及Linux驱动做一个总体的介绍,在这一章中,我对开发Linux驱动有了一个更深的认识.Android系统构层一共有4层内容:Linux内核.C/C++代码库.Android SDK API.应用程序.这一章中学会了Android系统移植,Android移植分为2个部分,一个是应用移植,一个是系统移植.Android系统移植是指让Android操作系统在某一个特定硬件平台上运行.

Android深度探索(卷1)HAL与驱动开发5-7章

第5章:搭建 S3C6.410 开发板的测试环境 开发板是开发和学习嵌入式技术的主要硬件设备, 尽管可以在 PC 上开发 Linux 驱动, 然后重 新编译成 ARM 架构的 Linux 驱动模块.但最终都是要在开发板上进行测试的.这主要是因为 ARM 架构的开发板可基于 X86 架构的 PC 在 CPU 指令以及二进制格式上都有所不同. 而且如果 Linux 驱动需要访问硬件(如 LCD. Wi-町.蓝牙等〉,并且这些硬件很难在 PC 上进行模拟, 那么就要在 带有这些硬件的开发板上进行调试和

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

本章主要介绍如何搭建Android底层开发的环境,主要包括Android应用程序开发环境.Android NDK 开发环境和交叉编译环境的搭建.开发,测试,和调试linux驱动.HAL程序需要很多工具,其中包括: JDK6或者以上版本.Eclipse3.4或者以上版本.ADT.CDT.Android NDK.交叉编译环境.Linux内核源代码等.安装JDK的方法有几种,其中Ubuntu linux提供的方法尤为简单,只需在Linux终端下执行命令即可安装并不需要再配置PATH环境变量.安装And

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

android系统框架包括四层: 最上层是应用层(Application层) 第二层是应用框架层(Framework层) 第三层是系统运行库层(Android Runtime 层,有人将二.三层统一到了一起) 最底层是Linux内核层(包括硬件驱动). Linux将存储器和外设分为3个基础大类: 字符设备.   块设备.     网络设备. (字符设备指那些必须以串行顺序依次进行访问的设备,如触摸屏.磁带驱动器.鼠标等.块设备可以按任意顺序进行访问,以块为单位进行操作,如硬盘.eMMC等.字符设