1

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

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

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

任何形式的帮助表示赞赏!

4

2 回答 2

1

有关 Android Sensors HAL 适合的位置及其职责的高级地图,请查看我在 2012 年将传感器集成到 Android 硬件中的 Design West 演示文稿中的幻灯片。

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

于 2013-02-20T06:51:16.430 回答
1

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

于 2013-07-04T08:52:50.250 回答