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

本章主要讲硬件抽象层:HAL,它是建立在Linux驱动之上的一套程序库。刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口。二,解决了GPL版权问题。三,针对一些特殊的要求。可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作。

下一个小节讲了Android HAL 架构。接下来讲了为led驱动增加HAL,主要是将所有的业务逻辑从LED驱动移到HAL模块,而LED驱动只保留读写寄存器的功能。

涉及的HAL步骤:1.编写Linux驱动2.编写HAL Library 3.编写Service Library 精简LED驱动

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

第一步:定义结构体和宏 编写HAL模块需要使用到3个非常重要的结构体,在第一步需要定义两个新的结构体。

第二步:编写HAL模块的open函数 open函数是HAL模块的入口点。本例中使用的是led_device_open函数。该函数主要做如下三个工作。初始化hw_device_t的子结构体。 打开设备文件。 初始化寄存器。

第三步:定义hw_module_methhods_t 结构体变量

第四步:定义HAL_MODULE_INFO_SYM函数

第五步:编写HAL模块的close 函数 当HAL模块被卸载后会调用close函数

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

总之,本章讲了在Android系统中使用Linux的一种驱动方式。

我的博客园地址是:http://www.cnblogs.com/zzp036/p/5449784.html

时间: 2024-10-13 15:49:03

Andriod深度探索(卷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 驱动之上的一套程序库,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与驱动开发第二章总结

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

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

对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行测试.如设置断点,逐步跟踪代码,输出调试信息等.本章主要讲述了如何利用开发板.Android模拟器以及一些函数.工具调试嵌入式Linux内核模块.可执行程序和共享库. 1.打印内核调试信息:printk 该函数的用法和printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.函数原型: asmlinkage printk(const char *fmt, ...) 第一个参数表示格式字符串.后面