gpt4 book ai didi

android - 为什么在库和内核层之间有一个额外的层(HAL)?

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:59 24 4
gpt4 key购买 nike

对于在 x86 硬件上运行的 Linux 操作系统,要在内核中调用作为 TCP/IP 驱动程序(对于 x86)的一部分的 TCP_listen(),用户空间客户端应用程序调用 listen() 接口(interface)是用户空间 glibc 库 [GNU distri.] 的一部分。

listen() 在通过INT 0x80 软件中断进入内核模式之前依次调用sys_Listen() 调用内核模式 TCP_listen() 系统调用。

因此,glibc 库层直接提供供应商中立接口(interface),即 listen() 来运行供应商 (x86) 特定的 TCP/IP 驱动程序系统调用 TCP_listen (),它是 Linux 内核的一部分。

enter image description here

我的问题:

在 Android 世界中,我想了解库 (Bionic Libc) 和 Linux 内核之间的额外层 (HAL) 的用途。

注意:我是 Android 世界的新手,可能 listen() 不是在 android 堆栈中使用的正确示例。

注意:我知道很多线程在 SO 上回答类似的查询。

最佳答案

(免责声明:对于这个问题,我是一个菜鸟。我只是想天真地提供指向其他信息源的指针。)

我认为 Android 相机界面 - 从相机 HAL 的上方和下方查看它,将有助于阐明 HAL 层所扮演的角色。

简单地说,HAL 的存在是为了提供统一接口(interface)(对框架或应用程序)访问特定于供应商的实现。

我所说的“特定于供应商”并不是说它们符合任何开放规范。事实上,他们可能不会。

移动设备中的摄像头不是 USB 摄像头。他们是CSI-MIPI interface cameras .但是,这仍然不会阻止供应商尝试支持 Android 的 USB 摄像头。

Android Java 编程接口(interface) android.hardware.camera2 ( link ) 是框架和应用程序使用的 API。

Camera HAL v3 ( link ) 与供应商特定的东西对话。

在该图中,在标有“Linux Kernel”的空间下,并不一定意味着相机模块供应商与外界共享任何源代码。它也可能是加载到内核空间并在内核空间中执行的二进制 blob(编译代码)。

关于android - 为什么在库和内核层之间有一个额外的层(HAL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26557923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com