MTK平台下的sensor框架分析.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MTK平台下的sensor框架分析

关于Android平台下的sensor介绍 随着移动互联网技术的普及,人们对智能手机的需要也越来越多。而在众多 智能手机操作系统之中, Android 系统凭借着 Google 的技术支持及其开源特性在 短时间内迅速占领大量的市场。传感器系统可以让智能手机的功能更加丰富多 彩,所以传感器设备已经成为智能手机必备的组件之一。Android 系统可以支持 多种传感器,有的传感器已经在 Android 的框架中使用,大多数传感器由应用程 序使用。 本文基于MTK6582 的平台上 Android 系统的传感器模块进行移植和 开发,对 Android 系统框架和开发环境进行了简介,对 Android 系统的传感器模 块的驱动层和硬件抽象层的开发进行深入的分析与研究,概括并总结了传感器模 块的工作原理和工作流程,对传感器的数据采集、数据传输、设备休眠和设备控 制等方面进行了具体的设计与实现,最终在 MTK6582 的平台上实现了传感器模 块的驱动层和硬件抽象层。 Android 系统可大致分为四部分,应用层、框架层、硬件抽象层、Linux 驱动层,Android 系统的传感器模块涉及到了 Android 系统的各个层次。应用 层以 Java 为编程语言,一般为第三方开发的应用程序,也有一些是 Google 自 己提供的应用程序,框架层是 Google 自己开发的,有着完整代码的体系,提 供完善的接口,以便第三方开发应用程序。硬件抽象层是能以封闭源码形式提 供硬件驱动模块,可以把框架层与驱动层隔开,使得 Android 框架层的开发能 在完全不考虑驱动程序的前提下进行。驱动层会根据硬件的设计对传感器进行 初始化和寄存器的读写,使传感器正常工作。 Android 系统支持多种传感器,包括加速度传感器、磁力域传感器、方向传感 器、陀螺仪、光线传感器、压力传感器、温度传感器、接近传感器,一般手 机都支持加速度传感器、磁力域传感器、方向传感器、光线传感器、接近传感 器,也有一些比较高端的手机支持陀螺仪。 Android系统sensor框架图: 我们着重讲解硬件抽象层(hardware abstractal level HAL)和内核层(linux内核) 1. 硬件抽象层 Android 的 HAL(硬件抽象层)是 Google 因应厂商“希望不公开源码”的要 求下所推出的新观念,让 Android 不至过度依赖 Linux kernel ,让 Android framework 的开发能在不考虑驱动程序的前提下进行发展。 2、内核层 Android 的核心系统服务依赖于 Linux2.6 内核,包括各种设备的驱动,如 显示驱动、键盘驱动、Flash 内存驱动、照相机驱动(Camera Driver)、音频驱动 (Audio Driver)、蓝牙驱动(Bluetooth Driver)、WiFi 驱动、Binder IPC 驱动,以及 Power Management(电源管理)、进程管理、内存管理、安全性管理和网络协议栈 等操作系统的基本部件。 1、HAL层的实现: 当Android系统启动时,SystemManager启动SensorDevice服务 frameworks/base/cmds/system_server/library/system_init.cpp property_get(system_init.startsensorservice, propBuf, 1); if (strcmp(propBuf, 1) == 0) { // Start the sensor service SensorService::instantiate(); } ①SensorDevice()首先调用hw_get_module()函数获得Sensor设备模块, ②调用sensors_open这个工具函数,打开Sensor设备模块(调用其methods-open函数指针),返回Sensor设备的操作接口(这些接口在HAL层实现),保存在mSensorDevice中 ③调用Sensor模块的get_sensors_list方法获得传感器列表, 依次激活这些设备并且添加到mActivationCount设备信息向量中。MTK代码里使用了一个hwmsensor模块控制所有的sensor。 代码路径:mediatek/kernel/drivers/hwmon/hwmsen/hwmsen_dev.c,编译成hwmsen_dev.o,系统起来后会生成/dev/hwmsensor设备

文档评论(0)

dlive45 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档