我正在开发Android中的传感器数据采集(三星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如何发现平台中可用的传感器以及从用户区访问它们的文件?
感谢任何形式的帮助!
答案 0 :(得分:1)
有关Android传感器HAL适合的高级别地图及其职责,请查看2012年我的Design West演示文稿中的幻灯片Integrating Sensors Into Android Hardware。
幻灯片详细说明了广泛使用的SensorBase类如何用于读取基于输入事件的传感器驱动程序,以及HAL如何实现get_sensors_list函数以让SensorService知道此特定设备具有哪些传感器。
答案 1 :(得分:1)
我知道beaglebone(TI开发板),传感器HAL源代码位于 / device / ti / am335xevm / libsensors /。搜索关键字'libsensors'是一种简单的方法。