android HAL与linux HAL有什么不同
答案:2 悬赏:0 手机版
解决时间 2021-11-12 22:03
- 提问者网友:富士山上尢
- 2021-11-12 02:31
android HAL与linux HAL有什么不同
最佳答案
- 五星知识达人网友:鱼芗
- 2021-11-12 04:10
Android的HAL就是很普通的中间层。它只不过把已经抽象的东西再抽象一次。硬件被操作系统抽象了,在LINUX中大抵体现在FS上。一般的情况是,操作系统对各种硬件作出统一接口设计,驱动程序实现这个接口。应用程序通过文件接口,继而通过驱动程序,操作硬件。所以驱动程序,广义上是让硬件工作的代码,狭义上是实现操作系统为此类硬件设计且期望的接口。
应用层看不到硬件或者驱动上的差别,因为它们最终呈现出的接口是一样的。而Android的hal则将这种机制再抽象一层:上层连文件系统接口都看不到了,只看得到Android设计的一套接口。这套接口在Linux上可能是对文件结点操作,如果有可以在其它操作系统上实现,也许会有其它形式。总之,跟之前的抽象一样,由于只看得到接口,因此只使用接口,只假定接口,接口以下的实现就不管了。针对接口操作,针对接口编程。
另外,HAL层在用户态的一个好处是,可以以闭源形式发布”驱动”。内核中的驱动代码仅暴露出基本的读写寄存器接口,这部分可以公开。而直正读写寄存器操作硬件的逻辑则在HAL层里实现,这部分则闭源发布二进制。
应用层看不到硬件或者驱动上的差别,因为它们最终呈现出的接口是一样的。而Android的hal则将这种机制再抽象一层:上层连文件系统接口都看不到了,只看得到Android设计的一套接口。这套接口在Linux上可能是对文件结点操作,如果有可以在其它操作系统上实现,也许会有其它形式。总之,跟之前的抽象一样,由于只看得到接口,因此只使用接口,只假定接口,接口以下的实现就不管了。针对接口操作,针对接口编程。
另外,HAL层在用户态的一个好处是,可以以闭源形式发布”驱动”。内核中的驱动代码仅暴露出基本的读写寄存器接口,这部分可以公开。而直正读写寄存器操作硬件的逻辑则在HAL层里实现,这部分则闭源发布二进制。
全部回答
- 1楼网友:有你哪都是故乡
- 2021-11-12 05:10
嵌入式linux系统是在嵌入式设备中运行linux系统。 嵌入式android系统是在嵌入式设备中运行android系统。 其区别就是android系统和linux系统的区别。 android系统的底层是linux的内核,上面跑的是android的java虚拟机。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯