【发布时间】: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