关于android系统架构中的HAL层



关于android系统架构中的HAL层_第1张图片
HAL(hardware abstraction layer) 硬件抽象层

HAL层主要是为规避GPL【开源协议】而设计的,它将将硬件驱动分成内核空间和用户空间两部分,其中用户空间两部分采用的是商业友好的Apache License。

应用程序框架层主要包括系统服务,例如组件管理服务、应用程序安装服务、窗口管理服务、多媒体服务和电信服务等。

应用程序框架进一步又分为C/C++和Java两个层次,Java代码运行Dalvik虚拟机之上,并且通过JNI方法和C/C++交互。

应用程序层主要就是由四大组件Activity、Service、Broadcast Receiver和Content Provider构成,它们是应用开发的基础。

在Android系统中,提供了独特的匿名共享内存子系统Ashmem(Anonymous Shared Memory)

Apache许可证(Apache License) ,是一个在 Apache软件基金会 发布的自由软件许可证,最初为
Apache 标志
Apache http服务器而撰写。Apache许可证要求被授权者保留版权和放弃权利的申明,但它不是一个反版权的许可证。

GPL( GNU通用公共许可证 )
GPL,是General Public License的缩写,是一份GNU通用公共授权非正式的中文翻译。它并非由自由软件基金会所发表,亦非使用GNU通用公共授权的软件的法定发布条款─直有GNU通用公共授权英文原文的版本始具有此等效力。

设备驱动分为内核空间和用户空间,内核空间负责硬件访问逻辑(GPL),用户空间负责参数和访问流程控制(apache license)
用户空间部分设备驱动即为HAL Module,HAL Module通过设备文件访问内核空间部分设备驱动
系统服务通过HAL Module对硬件进行管理,系统服务通过JNI访问Module。
应用程序通过系统服务队硬件进行访问,通过binder ipc访问系统服务。

你可能感兴趣的:(android源码)