android Sensor HAL 如何从内核读取数据?

问题描述 投票:0回答:1

我试图了解我的系统如何从内核读取陀螺仪数据。我有一部 Redmagic 8pro 手机,运行 Android 13,内核为 5.15。我设备中的陀螺仪传感器是 LSM6DSO。

我为我的手机构建了一个 GKI 内核,并识别了 common/drivers/iio/imu/st_lsm6dsx,假设它是传感器的驱动程序。我试图通过从 Makefile 中删除它来禁用它。然而,传感器继续发挥作用,表明这不是它的驱动程序。至少,在我的手机上,他们没有使用这个驱动程序。

为了更好地理解传感器HAL,我想了解系统如何从这个传感器读取数据,以及使用哪个函数从内核访问数据?有人对此有任何见解吗?

我在 dev 和 iio devices 文件夹中搜索了该设备,但都没有成功。

android linux-kernel android-kernel
1个回答
0
投票

为了更好地理解传感器HAL,我想了解系统如何从这个传感器读取数据,以及使用哪个函数从内核访问数据?有人对此有任何见解吗?

HAL 使用回调例程获取从较低层生成的传感器数据。 HAL 中的

initialize()
调用采用回调函数作为参数。 Android传感器HAL提供
batch()
功能来配置采样周期和最大允许延迟。根据配置的采样周期调用回调函数。现在由供应商来实现这些 API。 请参阅文档:Sensor HAL 2.0

传感器驱动器

我为我的手机构建了一个 GKI 内核,并识别了 common/drivers/iio/imu/st_lsm6dsx,假设它是传感器的驱动程序。我试图通过从 Makefile 中删除它来禁用它。然而,传感器继续发挥作用,表明这不是它的驱动程序。至少,在我的手机上,他们没有使用这个驱动程序。

为了实现节能并减轻传感器计算负担,许多移动 SoC 供应商为传感器接口提供单独的内核。因此,对于给定的 SoC,传感器驱动程序可能无法在其内核源代码中找到。请参考目标 SoC 功能以了解它是否包含单独的传感器核心。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.