android sensor 3

http://blog.csdn.net/nxh_love/article/details/11804841


G-sensor,Gyroscope驱动移植

类型 描述
ACCELEROMETER  (加速度传感器)   又名G-sersor,侦测物体的加速度,利用装置内配置的两个电容点,并在电容点之间放置一个导电且可晃动物质,通过侦测导电物质的移动改变电容点间的电压,借此计算感应器的状态。
 GRAVITY
(重力传感器)
又名GV-sensor
   GYROSCOPE
  (陀螺仪传感器)
又名Gyro-sensor角速度器,利用内部震动机械结构侦测物体转动所产生的角速度,进而计算出物体移动的角度。侦测水平改变的状态,但无法计算移动的激烈程度。
    LIGHT
(光线传感器)
侦测光线的强弱
MAGNETIC_FIELD
(磁力传感器)
又名M-sensor。
PRESSURE
(压力传感器)
返回当前的压强。
PROXIMITY
(距离传感器)

侦测物体与传感器之间的距离。
HUMIDITY
(湿度传感器)  
返回当前的湿度                                                                                             
ROTATION
(方向传感器)
又名O-sensor
TEMPERATURE
(温度传感器)

返回当前的温度
       以上加速度传感器,重力传感器,陀螺仪传感器,光线传感器 是Android中最长用的Sensor了。下面介绍下G-sensor,Gyroscope驱动的移植。

G-sensor驱动code 

 通过咨询硬件同事,知道我们当前用的G-sensor是LSM303D,Gyroscope是L3GD2。接下来按照这两个关键grep查找。结果找到如下的驱动相关的文件:

  1. kernal_path/drivers/misc/lsm303d.c  
  2. kernal_path/drivers/misc/l3gd20_gyr.c  
  3. kernal_path/include/linux/i2c/l3gd20.h  
  4. kernal/include/linux/input/lsm303d.h  
要修改Makefile:

kernal_path/drivers/misc/Makefile:

[html]  view plain  copy
  1. obj-$(CONFIG_SENSORS_LSM303D)   += lsm303d.o  
  2. obj-$(CONFIG_ST_L3GD20_GYR) += l3gd20_gyr.o  

修改Kconfig:

kernal_path/drivers/misc/Kconfig:

[html]  view plain  copy
  1. config SENSORS_LSM303D  
  2.         tristate "LSM303 sensor driver"  
  3.        depends on I2C=y  
  4.         help  
  5.           Say yes here to support the sensor  
  6. config ST_L3GD20_GYR  
  7.         tristate "L3GD20_GYR gyroscope sensor support"  
  8.         depends on I2C=y  
  9.         help  
  10.           If you say yes here you get support for ST's  
  11.           gyroscope sensors L3GD20_GYR.  

关于Makefile中CONFIG_SENSORS_LSM303D,CONFIG_ST_L3GD20_GYR它是编译生成.config中读取的。关于Makefile,Kconfig,.config请参见Kconfig,Makefile 和 .config 。找到编译生成.config的原配置文件defconfig。
修改defconfig:

kernal_path/configs/XXX_defconfig:

[html]  view plain  copy
  1. CONFIG_SENSORS_LSM303D=y  
  2. CONFIG_ST_L3GD20_GYR=y  

注册I2C:

上面Kconfig中提到depends on I2C =y,它既然依赖I2C,那肯定需要让I2C知道的它的存在,现向I2C注册LSM303D,L3GD2信息。

  1. #ifdef CONFIG_SENSORS_LSM303D  
  2.         {  
  3.                 I2C_BOARD_INFO("lsm303d",  0x1d),  
  4.         },  
  5. #endif  
  6. #ifdef CONFIG_ST_L3GD20_GYR  
  7.         {  
  8.                 I2C_BOARD_INFO("l3gd20_gyr",  0x6a),  
  9.         },  
  10. #endif  

这里面的0x1d,0x6a是I2C中注册的节点.


G-sensor HAL

这一部分直接从android4.1 copy到android 4.2,路径放在hardware/sensors/ST_lsm303d/,查看它的Makefile发现它最后编译生成一个sensor.so的文件,存在在system/lib/hw中以供上层条用。要把这个sensor.so包含到img文件中,需要在

[html]  view plain  copy
  1. PRODUCT_PACKAGES += \  
  2.         sensors.amlogic  

这里提出如下两个文件:

hardware/sensors/ST_lsm303d/AccSensor.cpp

hardware/sensors/ST_lsm303d/GyroSensor.cpp

打开后有个宏定义:

[html]  view plain  copy
  1. <pre name="code" class="html">#define INPUT_SYSFS_PATH_ACC "/sys/devices/i2c-1/1-001d/accelerometer/"  
  2. #define INPUT_SYSFS_PATH_GYRO "/sys/devices/i2c-1/1-006a/"</pre>  
这里有1-001d,1-006a,关于这点,我们后面在细说(注1-2)。
sensor权限

从上面两个宏定义可以看出,它要访问的sys/devices/i2c-1/的文件,那就需要给它一个权限啦。在init.rc中改变这两个文件的权限:

[html]  view plain  copy
  1. chmod 0666 /dev/mpu  
  2. chmod 0666 /dev/mpuirq  
  3. chmod 0666 /dev/timerirq  
  4.   
  5. chown system system /sys/devices/i2c-1/1-001d/magnetometer/pollrate_us  
  6. chown system system /sys/devices/i2c-1/1-001d/accelerometer/enable_device  
  7. chown system system /sys/devices/i2c-1/1-001d/accelerometer/pollrate_us  
  8. chown system system /sys/devices/i2c-1/1-001d/magnetometer/enable_device  
  9.   
  10. chown system system /sys/devices/i2c-1/1-006a/pollrate_ms  
  11. chown system system /sys/devices/i2c-1/1-006a/enable_device  
  12. chown system system /sys/devices/i2c-1/1-006a/range  
  13. chown system system /sys/devices/i2c-1/1-006a/enable_polling  
在这里也提到了1-001d,1-006a,关于这点,后面在细说(注1-3)。

在进行Android CTS测试时,会有sensor的features项目。这时也需要配置些文件:

[html]  view plain  copy
  1. PRODUCT_COPY_FILES += \  
  2.         frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml  
  3.        frameworks/native/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.sensor.compass.xml \  
  4.        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \  

它不仅是Android CTS feature,同时也决定这运行于此平台上APPS有没有这些相关的权限。打开文件android.hardware.sensor.accelerometer.xml:

[html]  view plain  copy
  1. <!-- Feature for devices with an accelerometer sensor. -->  
  2. <permissions>  
  3.     <feature name="android.hardware.sensor.accelerometer" />  
  4. </permissions>  

注1-1,注1-2,注1-3

       这三个地方的1-001d,1-006a必须一样。否则sensor没功能。至于1-001d,1-006a这个值是怎么来的,暂时还不知道。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值