Android硬件抽象层HAL之简介(一)

Android的HAL层是硬件抽象层,位于Linux内核和Android系统服务之间,用于屏蔽硬件差异并提供统一接口。HAL将Linux驱动的业务逻辑与内核分开,解决了GPL版权问题,降低了软件与硬件的耦合。Android 8.0引入HIDL,使供应商能更轻松地更新设备到新版本系统,同时保持硬件接口稳定。HAL现状强调了供应商接口的稳定性和兼容性测试的重要性。

1.HAL简介

Android的HAL(Hardware Abstraction Layer,硬件抽象层)是建立在Linux内核之上的一套程序。这套程序不属于Linux内核,而是运行在用户空间。HAL层屏蔽了硬件的差异,为上层应用提供了统一的硬件操作接口,这样就可以将硬件和应用软件隔离开,应用软件不必关心底层的具体硬件,而硬件更改,只需要按照HAL接口规范和标准提供HAL程序即可,而不影响应用软件。
传统的Linux驱动中包含了访问硬件的寄存器代码和业务逻辑代码。Android HAL将Linux驱动进行了拆分,将访问硬件的寄存器代码保留到了Linux内核中,而将业务逻辑代码提取到HAL中。

如下图的Android系统架构图所示,HAL位于Android系统服务层之下,位于Linux内核之上。HAL层包含了很多设备的HAL子系统,如Camera HAL、Audio HAL、Graphics HAL等等。Android系统中各层的意义如下:
(1)应用框架
应用框架最常被应用开发者使用。作为硬件开发者,需要了解应用开发者API,因为很多此类API都可以直接映射到底层HAL接口,并可提供与实现驱动程序相关的实用信息。

(2)Binder IPC
Binder进程间通信(IPC)机制允许应用框架跨越进程边界并调用Android系统服务代码,这使得高级框架API能与Android系统服务进行交互。在应用框架级别,开发者无法看到此类通信的过程,但一切似乎都在“按部就班地运行”。

(3)系统服务
系统服务是专注于特定功能的模块化组件,例如窗口管理器、搜索服务或通知管理器。应用框架API所提供的功能可与系统服务通信,以访问底层硬件。Android包含两组服务:“系统”(诸如窗口管理器和通知管理器之类的服务)和“媒体”(与播放和录制媒体相关的服务)。

(4)硬件抽象层 (HAL)
HAL可定义一个标准接口以供硬件驱动开发人员实现,这可让Android忽略较低级别的驱动程序实现

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值