【Android 系统】关于HAL硬件抽象层的一些理解。

当初学习Android系统的时候没有认真学习,不只是学习Android系统,所有的学习都是没有深入思考和深入理解。加入现有公司让我学习到最多的就是多问自己为什么,顺着流程问。深入思考的学习和理解。这篇文章是以老罗的《Android系统源代码情景》一书中硬件抽象层这一章为基础的,去理解hal硬件抽象层。


Android为什么要加一层HAL?

为了规避Linux系统GPL协议(详细可去自查,简单说,要符合这个协议的话,你的代码要开源,不符合硬件厂商的利益要求)。

一、Android如何通过HAL做到规避GPL协议

1、hal硬件抽象层又是如何来规避的

Android系统将硬件驱动实现分成两部分(用户空间和内核空间)来实现

内核空间:驱动模块来实现,只提供简单的访问通到。这部分是要符合GPL协议的。

用户空间:HAL层,硬件厂商实现,封装了硬件驱动的具体实现和详情。这部分只需要符合AL协议。

二、Android上层应用是如何加载到HAL相关驱动的

线路图:应用--->应用框架层--->JNI->通用硬件模块->硬件模块->内核驱动接口.

具体一点:app---framework---jni---hareward.so---xxx.default.so---kernel

详情可以参考:android HAL 教程(含实例)

三、总结

也就两点:

1、为什么要用HAL层

---隔离Linux内核的GPL协议

2、HAL的使用流程

---调用驱动接口时,调用到通用硬件模块(hareward.so),通用硬件模块通过hw_get_moulde方法,去加载厂商硬件模块,再调用到驱动接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值