bma150重力感应

最近在移植android2.3的系统,芯片是三星的s5pc110。移植bam150的时候遇到了些问题,记录下。不对程序做具体分析,三星在驱动方面做的比较成熟。也许这些记录对想了解驱动的,用处不大,不过是实践的经验,如果你在项目工作中遇到,也许是个不错的参考。
1,驱动程序的位置
drivers\i2c\chips\bma150_driver.c   和 bma150_driver.h
然后在arch\arm\mach-s5pv210\mach-smdkc110.c中对IIC地址配置
{
I2C_BOARD_INFO("bma150", (0x38)),  
},
2,系统中的改动
(1)android2.3.4_GB_T34\out\target\product\smdkc110\root\init.rc
修改init.rc,(也许文件位置不同,不过做这个的都知道init.rc在那里,下面红色的比较重要)
   
#change accelerometer device permission
    
chmod 666 /dev/bma150
    
    
# change ecompass device permission
   
 chmod 666 /dev/mmc31xx
    
chmod 666 /dev/ecompass_ctrl
    
mkdir /data/misc/sensors 0777 system system
    
chmod 777 /dev/device-pm
(2)启动加入的进程
还是在android2.3.4_GB_T34\out\target\product\smdkc110\root\init.rc中
# start memsicd service
service memsicd /system/bin/memsicd
    
oneshot
这样就可以了。在adb shell下,ps查看下进程,看下有没有这个:
/system/bin/memsicd
如果这个有的话,再:
#cd /data/misc/sensors
# ls
看下有没有accel_offset这个文件,如果有的话,这样就好了,试一下有没有方向变化。
=======================================================================================
做完前面的,我的还有一个问题:在应用程序里面可以旋转(android2.3支持360度,如果是android2.2的话,可以参考其它的方法),但是在Launcher里面不会旋转呀,请教下我们做应用的同事,人家说Launcher里面有个值被设成  android:screenOrientation="nosensor",改下这里就好了。
3,Launcher中旋转的方法
在android2.3.4_GB_T34\packages\apps\Launcher2\AndroidManifest.xml里面有两个
   android:screenOrientation= "nosensor"
改成
android:screenOrientation= "sensor"
上面的问题也解决。


你可能感兴趣的:(bma150重力感应)