解析如何在android中增加gsensor驱动(MMA7660)

所属分类: 软件编程 / Android 阅读数: 562
收藏 0 赞 0 分享
系统原来用的是BOSCH_BMA222的gsensor, 现在要求换成使用MMA7660,我们来看一下怎样增加驱动和调试过程。
1. 修改Makefie
首先,修改放置驱动的目录里的Makefile(kernel/driver/misc),添置如下语句:
复制代码 代码如下:

obj-$(CONFIG_SENSORS_MMA7660)   += mma7660.o 

2. 增加驱动文件
把驱动文件mma7660.c添加到kernel/driver/misc下。
3. 修改.config文件,把下面两行注释掉
复制代码 代码如下:

# CONFIG_BOSCH_SENSOR=y
# CONFIG_BOSCH_BMA222=y

再增加下面这项
复制代码 代码如下:

CONFIG_SENSORS_MMA7660=y

编译,显示提示:
复制代码 代码如下:

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
&nbsp; > 1. MPU version < v3.4.0 (MPU_PRE_V340)
&nbsp;&nbsp;&nbsp; 2. MPU version >= v3.4.0 (MPU_NEW)
&nbsp; choice[1-2]: 1
&nbsp; BOSCH BMA222 acceleration sensor (BOSCH_SENSOR) [N/m/y/?] (NEW) N
&nbsp; *
&nbsp; * Miscellaneous I2C Chip support
&nbsp; *
&nbsp; BMA222 acceleration sensor support (BOSCH_BMA222) [N/m/y/?] (NEW) N
#
# configuration written to .config
&nbsp;

这时看编译输出,系统没有编译mma7660.c, 而且编译后.config的MMA7660的宏也被覆盖掉了,所以这样是没有办法挂载的。之所以出现这个错误的原因,是因为make的时候会检查各个Kconfig文件,没有的选项会自动率掉,所以,我们还需要修改Kconfig文件。
5. 修改kernel/driver/misc/Kconfig,在menuconfig MISC_DEVICES下添加如下:
复制代码 代码如下:

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[]中添加一下信息:
复制代码 代码如下:

#ifdef CONFIG_SENSORS_MMA7660
       {
                I2C_BOARD_INFO("mma7660", 0x4C),
                .irq = INT_GPIO_2,
        },
#endif

7. 再进行编译,驱动就被编译了。
更多精彩内容其他人还在看

Retrofit2日志拦截器的使用

这篇文章主要介绍了Retrofit2日志拦截器的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android创建外部lib库及自定义View的图文教程

这篇文章主要给大家介绍了关于Android创建外部lib库及自定义View的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android分享微信小程序失败的一些事小结

这篇文章主要给大家介绍了关于Android分享微信小程序失败一些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android分享微信小程序技巧之图片优化

这篇文章主要给大家介绍了关于Android分享微信小程序技巧之图片优化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android Viewpager实现无限循环轮播图

这篇文章主要为大家详细介绍了Android Viewpager实现无限循环轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中的Bitmap序列化失败的解决方法

这篇文章主要介绍了Android中的Bitmap序列化失败的解决方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Android自定义通用标题栏CustomTitleBar

这篇文章主要为大家详细介绍了Android自定义通用标题栏CustomTitleBar,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android组合控件自定义标题栏

这篇文章主要为大家详细介绍了Android组合控件自定义标题栏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义复合控件实现通用标题栏

这篇文章主要为大家详细介绍了Android自定义复合控件实现通用标题栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

ExpandableListView实现简单二级列表

这篇文章主要为大家详细介绍了ExpandableListView实现简单二级列表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多