本章主要讲硬件抽象层: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的一种驱动方式。

硬件抽象层:HAL的更多相关文章

  1. Android架构分析之使用自定义硬件抽象层(HAL)模块

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本:2.3.7_r1 Linux内核版本:android-goldfish-2.6.29 在上一篇博 ...

  2. 硬件抽象层:HAL

    本节我们研究硬件抽象层:HALHAL,它是建立在Linux驱动之上的一套程序库.刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口.二,解决了GPL版权问题.三,针对 ...

  3. Android硬件抽象层(HAL)深入剖析(一)【转】

    作为一个搞android驱动或者说搞底层的人,我觉得对于hal那是必须要掌握的,而且必须达到一定深度,于是我总结了一下,将整个自己的分析思路写下来. 主要是看android源代码,根据源代码得到的思路 ...

  4. 硬件抽象层——HAL

    (一)为什么要在android中加入HAL Linux系统中Linux驱动有两种类型的代码:访问硬件寄存器的代码——调用的Linux内核的标准函数进行的标准操作  业务逻辑代码——有些企业或个人并不想 ...

  5. Android硬件抽象层(HAL)深入剖析(三)【转】

    前面分析了android HAL层是如何搜索硬件模块的动态共享库的,其实就是在"system/lib/hw/"或者"/vendor/lib/hw/"这两个路径下 ...

  6. Android硬件抽象层(HAL)深入剖析(二)【转】

    上一篇我们分析了android HAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t(硬件设备)的成员,下面我们来具体看看上层app到底是怎么实现操作硬件的? 我们知道 ...

  7. Android硬件抽象层(HAL)深入剖析(二)

    上一篇我们分析了android HAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t(硬件设备)的成员,下面我们来具体看看上层app到底是怎么实现操作硬件的? 我们知道 ...

  8. BSP与HAL关系(转)

    板级支持包(BSP)(Board Support Package)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件 ...

  9. 深入解析Windows操作系统笔记——CH2系统结构

    2.系统结构 本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境. 2.系统结构 2.1 需求和设计目标 2.2 操作系统模型 2.3 总体结构 2.3.1 可移植性 2.3.2 对称 ...

  10. Skyfree的毕业论文 《系统封装与部署的深入研究》

    Skyfree的毕业论文 <系统封装与部署的深入研究> https://www.itsk.com/thread-197-1-4.html Skyfree 发表于 2007-9-13 07: ...

随机推荐

  1. 基于Jforum开源项目的论坛网站

    基于Jforum开源项目的论坛网站 开发原因: 刚完成了以wordpress及其插件simple-press为基础的论坛网站,因为一直从事java方面开发, 所以尝试一下使用java开源项目Jforu ...

  2. node模块系统常用命令

    node模块系统常用命令 命令 示例 备注 安装模块 npm install commander 最新版本 npm install commander@1.0.0 指定版本 npm install c ...

  3. 微信APP支付服务端开发Java版(一)

    一.准备工作 去微信开发者中心下载(扫码支付,里面的大部分代码是可以用的) https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11 ...

  4. win下Redis安装使用

    官网上没有windows版本的Redis,好在github上有大牛写的win版本.地址如下https://github.com/dmajkic/redis/downloads 解压后运行目录下的red ...

  5. XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)[转]

    目前在XCode上开发的iOS程序只能在模拟器Simulator中运行,如果要放到真机上测试,需要苹果官方认证的开发者账号,购买开发者证书iDP,99美金一年啊!!! 作为刚开始学习iOS编程的菜鸟, ...

  6. SQL Server中cursor的使用步骤

    参考文章: http://www.cnblogs.com/knowledgesea/p/3699851.html http://www.cnblogs.com/moss_tan_jun/archive ...

  7. 简单高效快捷的百度地图demo

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  8. GoldenGate Studio 12.2.1.1发布

    OGG studio是一款图形化OGG配置部署产品,其主要特性:1. 逻辑层面设计OGG,不需要了解OGG细节:2. 最值实践加快常用场景的配置:3. 使用拖拉映射,自动匹配源和目标对象:4. 一键部 ...

  9. 【python】操作excel——xlrd xlwt xlutils

    from xlutils.copy import copy import xlrd # import xlutils #打开已存在的excel rb=xlrd.open_workbook('D:\\1 ...

  10. .NET将图片Base64字符串还原为图片(jpg格式)并保存到本地

    1. 了解Base64字符串的形式是:data:image/jpeg;base64,字符串 2 .Base64字符串转换为图片的代码实现: string[] str = base64Str.Split ...