当前位置: 移动技术网 > 网络运营>服务器>Linux > 【Android 系统】关于HAL硬件抽象层的一些理解。

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

2020年09月21日  | 移动技术网网络运营  | 我要评论
当初学习Android系统的时候没有认真学习,不只是学习Android系统,所有的学习都是没有深入思考和深入理解。加入现有公司让我学习到最多的就是多问自己为什么,顺着流程问。深入思考的学习和理解。这篇文章是以老罗的《Android系统源代码情景》一书中硬件抽象层这一章为基础的,去理解hal硬件抽象层。Android为什么要加一层HAL?为了规避Linux系统GPL协议(详细可去自查,简单说,要符合这个协议的话,你的代码要开源,不符合硬件厂商的利益要求)。一、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方法,去加载厂商硬件模块,再调用到驱动接口。

本文地址:https://blog.csdn.net/twk121109281/article/details/108714057

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网