织梦CMS - 轻松建站从此开始!

罗索

android 如何增加gsensor驱动(MMA7660)

落鹤生 发布于 2013-01-18 09:45 点击:次 
系统原来用的是BOSCH_BMA222的gsensor, 现在要求换成使用MMA7660,我们来看一下怎样增加驱动和调试过程。
TAG:

系统原来用的是BOSCH_BMA222的gsensor, 现在要求换成使用MMA7660,我们来看一下怎样增加驱动和调试过程。

1. 修改Makefie

首先,修改放置驱动的目录里的Makefile(kernel/driver/misc),添置如下语句:

  1. obj-$(CONFIG_SENSORS_MMA7660)   += mma7660.o

2. 增加驱动文件

把驱动文件mma7660.c添加到kernel/driver/misc下。

3. 修改.config文件,把下面两行注释掉

  1. # CONFIG_BOSCH_SENSOR=y   
  2. # CONFIG_BOSCH_BMA222=y 

再增加下面这项

  1. CONFIG_SENSORS_MMA7660=y 

编译,显示提示:

  1. make uImage -j16 
  2. scripts/kconfig/conf -s arch/arm/Kconfig 
  3. * Restart config... 
  4. * Misc devices 
  5. Misc devices (MISC_DEVICES) [Y/n/?] y 
  6.   Analog Devices AD525x Digital Potentiometers (AD525X_DPOT) [N/m/y/?] n 
  7.   Android pmem allocator (ANDROID_PMEM) [N/y] n 
  8.   Integrated Circuits ICS932S401 (ICS932S401) [N/m/y/?] n 
  9.   Enclosure Services (ENCLOSURE_SERVICES) [N/m/y/?] n 
  10.   Kernel Debugger Core (KERNEL_DEBUGGER_CORE) [N/y/?] n 
  11.   Intersil ISL29003 ambient light sensor (ISL29003) [N/m/y/?] n 
  12.   Taos TSL2550 ambient light sensor (SENSORS_TSL2550) [N/m/y/?] n 
  13.   Dallas DS1682 Total Elapsed Time Recorder with Alarm (DS1682) [N/m/y/?] n 
  14.   Texas Instruments DAC7512 (TI_DAC7512) [N/m/y/?] n 
  15.   UID based statistics tracking exported to /proc/uid_stat (UID_STAT) [Y/n] y 
  16.   Bluetooth power control driver for TI wl127x (WL127X_RFKILL) [N/m/y/?] n 
  17.   Android kernel panic diagnostics driver (APANIC) [N/y/?] n 
  18.    6 Axis sensor mpu3050 (SIX_AXIS_SENSOR_MPU3050) [N/y] n 
  19.   Motion Processing Unit driver version 
  20.   > 1. MPU version < v3.4.0 (MPU_PRE_V340) 
  21.     2. MPU version >= v3.4.0 (MPU_NEW) 
  22.   choice[1-2]: 1 
  23.   BOSCH BMA222 acceleration sensor (BOSCH_SENSOR) [N/m/y/?] (NEW) N 
  24.   * 
  25.   * Miscellaneous I2C Chip support 
  26.   * 
  27.   BMA222 acceleration sensor support (BOSCH_BMA222) [N/m/y/?] (NEW) N 
  28. # 
  29. # configuration written to .config 

这时看编译输出,系统没有编译mma7660.c, 而且编译后.config的MMA7660的宏也被覆盖掉了,所以这样是没有办法挂载的。之所以出现这个错误的原因,是因为make的时候会检查各个 Kconfig文件,没有的选项会自动率掉,所以,我们还需要修改Kconfig文件。

5. 修改kernel/driver/misc/Kconfig,在menuconfig MISC_DEVICES下添加如下:

  1. config SENSORS_MMA7660 
  2.         tristate "MEMSIC Accelerometer Sensor MMA7660 Driver Support" 
  3.         depends on I2C  
  4.         help 
  5.           If you say yes here you get support for the MEMSIC accelerometer sensor 

6. 由于这里gsensor是一个i2c的外挂,所以,还必须修改板子的i2c的device信息,以便系统可以查找到设备。修改板子的资源文件(我这里的特 例是./arch/arm/mach-meson3/board-m3-reff24.c),在结构aml_i2c_bus_info_1[]中添加一下 信息:

  1. #ifdef CONFIG_SENSORS_MMA7660 
  2.        { 
  3.                 I2C_BOARD_INFO("mma7660", 0x4C), 
  4.                 .irq = INT_GPIO_2, 
  5.         }, 
  6. #endif 

7. 再进行编译,驱动就被编译了。

(ttxgz)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201301/16469.html]
本文出处:CSDN博客 作者:ttxgz 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容