android 如何增加gsensor驱动(MMA7660)

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

1. 修改Makefie

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

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

2. 增加驱动文件

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


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

  1. CONFIG_BOSCH_SENSOR=y  
  2. CONFIG_BOSCH_BMA222=y  
# CONFIG_BOSCH_SENSOR=y
# CONFIG_BOSCH_BMA222=y
    再增加下面这项

  1. CONFIG_SENSORS_MMA7660=y  
CONFIG_SENSORS_MMA7660=y

    编译,显示提示:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值