Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植
2017-03-15 16:43
351 查看
Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植
目录(?)[-]Sensors 种类和功能
G-sensor驱动code
G-sensor HAL
注1-1注1-2注1-3
Sensors 种类和功能
从Android 官方的API可以找到Android 支持的sensor类型如下:HUMIDITY (湿度传感器) | 返回当前的湿度 |
ROTATION (方向传感器) | 又名O-sensor |
TEMPERATURE (温度传感器) | 返回当前的温度 |
G-sensor驱动code
通过咨询硬件同事,知道我们当前用的G-sensor是LSM303D,Gyroscope是L3GD2。接下来按照这两个关键grep查找。结果找到如下的驱动相关的文件:[html] view
plaincopy
kernal_path/drivers/misc/lsm303d.c
kernal_path/drivers/misc/l3gd20_gyr.c
kernal_path/include/linux/i2c/l3gd20.h
kernal/include/linux/input/lsm303d.h
限于对公司负责的态度,给出相对的文件路径。接下来肯定要修改Makefile:
kernal_path/drivers/misc/Makefile:
[html] view
plaincopy
obj-$(CONFIG_SENSORS_LSM303D) += lsm303d.o
obj-$(CONFIG_ST_L3GD20_GYR) += l3gd20_gyr.o
修改Kconfig:
kernal_path/drivers/misc/Kconfig:
[html] view
plaincopy
config SENSORS_LSM303D
tristate "LSM303 sensor driver"
depends on I2C=y
help
Say yes here to support the sensor
config ST_L3GD20_GYR
tristate "L3GD20_GYR gyroscope sensor support"
depends on I2C=y
help
If you say yes here you get support for ST's
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
plaincopy
CONFIG_SENSORS_LSM303D=y
CONFIG_ST_L3GD20_GYR=y
注册I2C:
上面Kconfig中提到depends on I2C =y,它既然依赖I2C,那肯定需要让I2C知道的它的存在,现向I2C注册LSM303D,L3GD2信息。
[html] view
plaincopy
#ifdef CONFIG_SENSORS_LSM303D
{
I2C_BOARD_INFO("lsm303d", 0x1d),
},
#endif
#ifdef CONFIG_ST_L3GD20_GYR
{
I2C_BOARD_INFO("l3gd20_gyr", 0x6a),
},
#endif
这里面的0x1d,0x6a是I2C中注册的节点。关于这点,我们后面在细说(注1-1)。
G-sensor HAL
这一部分直接从android4.1 copy到android 4.2,路径放在hardware/sensors/ST_lsm303d/,查看它的Makefile发现它最后编译生成一个sensor.so的文件,存在在system/lib/hw中以供上层条用。要把这个sensor.so包含到img文件中,需要在[html] view
plaincopy
PRODUCT_PACKAGES += \
sensors.amlogic
这里提出如下两个文件:
hardware/sensors/ST_lsm303d/AccSensor.cpp
hardware/sensors/ST_lsm303d/GyroSensor.cpp
打开后有个宏定义:
[html] view
plaincopy
<pre name="code" class="html">#define INPUT_SYSFS_PATH_ACC "/sys/devices/i2c-1/1-001d/accelerometer/"
#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
plaincopy
chmod 0666 /dev/mpu
chmod 0666 /dev/mpuirq
chmod 0666 /dev/timerirq
chown system system /sys/devices/i2c-1/1-001d/magnetometer/pollrate_us
chown system system /sys/devices/i2c-1/1-001d/accelerometer/enable_device
chown system system /sys/devices/i2c-1/1-001d/accelerometer/pollrate_us
chown system system /sys/devices/i2c-1/1-001d/magnetometer/enable_device
chown system system /sys/devices/i2c-1/1-006a/pollrate_ms
chown system system /sys/devices/i2c-1/1-006a/enable_device
chown system system /sys/devices/i2c-1/1-006a/range
chown system system /sys/devices/i2c-1/1-006a/enable_polling
在这里也提到了1-001d,1-006a,关于这点,后面在细说(注1-3)。
在进行Android CTS测试时,会有sensor的features项目。这时也需要配置些文件:
[html] view
plaincopy
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml
frameworks/native/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.sensor.compass.xml \
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
plaincopy
<!-- Feature for devices with an accelerometer sensor. -->
<permissions>
<feature name="android.hardware.sensor.accelerometer" />
</permissions>
注1-1,注1-2,注1-3
这三个地方的1-001d,1-006a必须一样。否则sensor没功能。至于1-001d,1-006a这个值是怎么来的,暂时还不知道。(评论:1-001d,1-006a 是I2c挂载的地址)From: http://blog.csdn.NET/nxh_love/article/details/11804841
相关文章推荐
- Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植
- Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植
- Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植
- 【转】Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植
- Android学习之Sensor
- Android学习之教你五步搞定Sensor,让程序更酷
- Android学习之教你五步搞定Sensor,让程序更酷 !!
- android系统之sensor学习
- Android学习篇章55-加速度传感器-SensorEventListener
- Android学习之教你五步搞定Sensor,让程序更酷
- Android学习篇章54-光线传感器-SensorEventListener
- Android学习篇章54-方向传感器-SensorEventListener
- Android学习之教你五步搞定Sensor,让程序更酷
- android系统之sensor学习
- android系统之sensor学习
- Android IMF 学习笔记三
- Android学习——界面互调1
- Android IMF学习笔记一
- Android学习——认识HelloWorld!
- Android学习——编写菜单