https://www.cnx-software.com/2013/04/08/libhybris-let-you-use-android-drivers-hw-libraries-in-linux/
Libhybris让您在Linux中使用Android驱动程序和硬件库
ARM在Linux上面临的主要问题之一是缺乏适合该平台的GPU驱动程序,因为大多数芯片制造商(比如全志allwinner)现在
只关注与Linux内核不兼容的Android驱动程序,因为Android基于Bionic C库,而Linux基于glibc或其变体。
有两种方法可以解决这个问题:
1. 开源GPU驱动程序。这将是理想的解决方案,因为您只需交叉编译适当的驱动程序,并修复错误,而无需要求芯片制造商为您修复驱动程序。
2. 写一个Glibc兼容的库。这样的库就像libdl一样,并且允许加载兼容库并且用基于glibc的兼容库覆盖一些符号。这正是libhybris所做的。
感谢这个libhybris库,Ubuntu Touch能够使用Android GPU驱动来运行Ubuntu,
并且Libhybris将为Ubuntu 14.04 提供HAL和Mir显示服务器之间的接口。
Libhybris是在Apache 2.0许可下发布的,用C编写的源代码可以在github上获得。
这个库基于Carsten Munk的初始工作。
源代码树中有三个主要目录:
1. compat 目录:
ui - Android UI的一些包装。
2. hybris 目录:
common - 通用部分,包括解析/ system / build.prop和匹配Bionic和glibc之间的通用C函数(例如pthread *,str * ...)
egl - EGL支持
gles2 - OpenGL ES 2支持
hardware - 加载/系统/ lib / libhardware.so
tests - 测试egl,gles2,灯光,传感器,离屏渲染和ui程序
ui - 加载/ system / lib / libui_compat_layer.so并为相关函数创建绑定。
3. utils 目录- 包含加载符号文件以进行调试的load_sym_files.py实用程序。
Libhybris不仅可让您访问GPU,还可让您访问其他硬件,如灯光和传感器。我假设,但我可能错了,它也可以用于Wi-Fi和蓝牙封闭源驱动程序。希望VPU(视频处理单元)支持也可以完成,以便利用Android库中的Linux进行硬件视频解码和编码,但是我知之甚少,无法知道它是否可行。
使用Libhybris并不是一个最佳的解决方案,因为性能可能会有小幅下降,并且您将使用Android内核,因此您习惯使用Linux内核的许多事情将无法使用,而您必须使用“Android”方式。由于Canonical的Ubuntu Touch预览使用了SurfaceFlinger,这意味着依赖于X11,GTK的应用程序在一开始就不会工作,并且您必须等到2014年并且使用Mir显示服务器才能实现基于libhybris与X11兼容性的完整解决方案。尽管如此,尽管libhybris不是一个完美的解决方案,但它是一个实用的解决方案,因为它是一种技术解决方案,而不是依赖于令人信服的管理层和律师来发布开源驱动程序的解决方案。
还有一些关于反向工程的开源GPU驱动程序的工作,如利马项目,以及一些公司,如Freescale / Vivante,为ARM Linux发布适当的(封闭源码)驱动程序,但市场份额最高的公司,即Imagination技术公司没有参与任何这些举措,而libhybris可能成为未来的方式,因此大多数人可能会在他们的ARM“Linux”发行版中使用Android内核。欢迎评论!
离线