【问题标题】:Android sensors hardware abstraction layerAndroid 传感器硬件抽象层
【发布时间】:2012-12-04 13:59:01
【问题描述】:

我正在研究 Android 中的传感器数据采集(Samsung Galaxy S3 上的 Jelly Bean)。我是 Android/Linux 内部的新手。

我正在尝试阅读有关传感器样本如何从驱动程序上升到用户空间的 Android 资源。作为参考,请查看here。 我可以从 SensorManager 一直到 SensorService。我可以看到内核模块加载基础设施、事件输入设备的注册以及驱动程序中的 input_report_rel() 函数调用(例如 Galaxy S3 的开源加速度计驱动程序)。 但我迷失在两者之间,即在硬件抽象层中。 SensorService(借助 SensorDevice)最终通过 struct sensors_poll_device_t 中的函数指针调用 HAL。头文件位于/hardware/libhardware/include/hardware。

HAL 在哪里实施? HAL 和内核输入子系统之间的交互是如何进行的? SensorService 如何发现平台中可用的传感器以及从用户空间访问它们的文件?

感谢任何形式的帮助!

【问题讨论】:

  • 关于您的“HAL 在哪里实施”,我不确定您在问什么。您是否在问如何构建自己的 HAL 实现?如果是这样,我建议按照 Stack Overflow 礼仪meta.stackexchange.com/questions/2995/… 单独提出一个问题

标签: android input linux-kernel sensors hal


【解决方案1】:

有关 Android Sensors HAL 的适用位置及其职责的高级地图,请查看我在 2012 年的 Design West 演示文稿中的幻灯片Integrating Sensors Into Android Hardware

幻灯片详细介绍了如何使用广泛可用的 SensorBase 类来读取基于输入事件的传感器驱动程序,以及 HAL 如何实现 get_sensors_list 函数以让 SensorService 知道此特定设备具有哪些传感器。

【讨论】:

    【解决方案2】:

    我知道 beaglebone(一个 TI 开发板),sensors HAL 源代码位于 /device/ti/am335xevm/libsensors/ .搜索关键字“libsensors”是一种简单的方法。

    【讨论】:

      猜你喜欢
      • 2017-03-29
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 2020-09-21
      相关资源
      最近更新 更多