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

作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本:2.3.7_r1 Linux内核版本:android-goldfish-2.6.29 在上一篇博客<Android架构分析之硬件抽象层(HAL)>中,我们了解了硬件抽象层的基本数据结构和模块编写规则,现在,我们就来看怎样编写一个自定义的硬件抽象层模块并加入到Android系统中,同时,我们还要介绍应用程序怎样使用我们自定义的硬件抽象层模块. 硬件抽象层的作用是给上层应用程序提供一个访问硬件设…
本节我们研究硬件抽象层:HALHAL,它是建立在Linux驱动之上的一套程序库.刚开始介绍了为什么要在Android中加入HAL,目的有三个,一,统一硬件的调用接口.二,解决了GPL版权问题.三,针对一些特殊的要求.可以利用位于用户空间的HAL代码来辅助Linux驱动完成一些工作.HAL主要有以下目的:统一硬件的调用接口.由于HAL有标准的调用接口,所以可以利用HAL屏蔽了Linux驱动复杂.不统一的接口:解决了GPL协议:针对一些特殊的要求.对于一些硬件,可能需要访问一些用户空间的资源,或在内…
作为一个搞android驱动或者说搞底层的人,我觉得对于hal那是必须要掌握的,而且必须达到一定深度,于是我总结了一下,将整个自己的分析思路写下来. 主要是看android源代码,根据源代码得到的思路.(看源代码比看什么著作书籍都管用) android HAL是什么?为什么有它? 硬件抽象层是介于android内核kernel和上层之间的抽象出来的一层结构.他是对linux驱动的一个封装,对上层提供统一接口,上层应用不必知道下层硬件具体怎么实现工作的,它屏蔽了底层的实现细节. 它在整个andro…
(一)为什么要在android中加入HAL Linux系统中Linux驱动有两种类型的代码:访问硬件寄存器的代码——调用的Linux内核的标准函数进行的标准操作  业务逻辑代码——有些企业或个人并不想将源代码公开 Google为了满足这些不想开源的Linux驱动作者的要求,在android层次结构中的系统运行库增加了一个HAL,注意HAL并不是Linux内核的一部分. 主要目的:统一硬件的调用接口 解决了GPL版权问题  针对一些特殊的要求 (二)Android HAL架构 调用HAL模块的代码…
前面分析了android HAL层是如何搜索硬件模块的动态共享库的,其实就是在"system/lib/hw/"或者"/vendor/lib/hw/"这两个路径下找到共享库modueid.variant.so后,通过调用load函数加载库. 下面我们进入load函数,看看具体是如何实现加载共享库的. 以下为load函数定义,同样在/hardware/libhardware/hardware.c中实现的. /** * Load the file defined by t…
上一篇我们分析了android HAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t(硬件设备)的成员,下面我们来具体看看上层app到底是怎么实现操作硬件的? 我们知道,一些硬件厂商不愿意将自己的一些核心代码开放出去,所以将这些代码放到HAL层,但是怎么保证它不开放呢?HAL层代码不是也让大家知道下载吗?其实硬件厂商的HAL核心代码是以共享库的形式出现的,每次在需要的时候,hal会自动加载调用相关共享库.那么是怎么加载找到某一硬件设备对应的共享库的呢?这也是我们这…
上一篇我们分析了android HAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t(硬件设备)的成员,下面我们来具体看看上层app到底是怎么实现操作硬件的? 我们知道,一些硬件厂商不愿意将自己的一些核心代码开放出去,所以将这些代码放到HAL层,但是怎么保证它不开放呢?HAL层代码不是也让大家知道下载吗?其实硬件厂商的HAL核心代码是以共享库的形式出现的,每次在需要的时候,hal会自动加载调用相关共享库.那么是怎么加载找到某一硬件设备对应的共享库的呢?这也是我们这…
板级支持包(BSP)(Board Support Package)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板. 硬件抽象层是位于操作系统 内核与硬件电路之间的接口层,其目的在于将硬件抽象化.它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植. 就我跟人理解而言BSP就是硬件驱动程序,它包含了操控硬件的必要函…
2.系统结构 本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境. 2.系统结构 2.1 需求和设计目标 2.2 操作系统模型 2.3 总体结构 2.3.1 可移植性 2.3.2 对称多处理 2.3.3 可伸缩性() 2.3.4 客户和服务器版本的区别 2.3.5 版本检查 2.4 关键的系统组件 2.4.1 环境子系统和子系统dll 2.4.1.1 Windows子系统 2.4.1.2 POSIX子系统 2.4.1.3 OS/2子系统 2.4.2 NTDLL.DLL 2.4.3…
Skyfree的毕业论文 <系统封装与部署的深入研究> https://www.itsk.com/thread-197-1-4.html Skyfree 发表于 2007-9-13 07:25:40 关于封装与部署的深入研究 前言 从Windows95到现在的WindowsVista,Windows优秀的图形界面和可操作性,赢得了目前广泛的使用人群.虽然Windows各方面性能,特别是稳定性方面,依然有所不及Unix.Linux这些高稳定性的系统,但是它仍然不可否认的成为当前使用范围最广的操作…