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

系统原来用的是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
  > 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下添加如下:


代码如下:

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. 再进行编译,驱动就被编译了。

(0)

相关推荐

  • android 传感器(OnSensorChanged)使用介绍

    下面是API中定义的几个代表sensor的常量. Int TYPE_ACCELEROMETER A constant describing an accelerometer sensor type. 加速度传感器 int TYPE_ALL A constant describing all sensor types. 所有类型 A constant describing all sensor types. int TYPE_GRAVITY A constant describing a grav

  • Android 利用方向传感器实现指南针具体步骤

    step1:新建一个项目Compass,并将一张指南针图片导入到res/drawable-hdpi目录中  step2:设计应用的UI界面,main.xml 复制代码 代码如下: <SPAN style="FONT-SIZE: 18px"><STRONG><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="htt

  • Android重力传感器实现滚动的弹球

    熟知: 什么是传感器: 所谓传感器能够探测如光.热.温度.重力.方向 等等的功能! Android中提供传感器有哪些: 1.  加速度传感器(重力传感器)      2.  陀螺仪传感器      3.  光传感器      5.  恒定磁场传感器      6.  方向传感器      7.  恒定的压力传感器      8.  接近传感器      9.  温度传感器 一. 问题描述 Android中有多达11种传感器,不同的手机设备支持的传感器类型也不尽相同 1. 重力传感器 GV-sen

  • Android利用方向传感器获得手机的相对角度实例说明

    1.android 的坐标系是如何定义x, y z 轴的 x轴的方向是沿着屏幕的水平方向从左向右,如果手机不是正方形的话,较短的边需要水平放置,较长的边需要垂直放置. Y轴的方向是从屏幕的左下角开始沿着屏幕的的垂直方向指向屏幕的顶端. 将手机放在桌子上,z轴的方向是从手机指向天空. 2.方向传感器 在方向传感器中values变量的3个值都表示度数,它们的含义如下: values[0]:该值表示方位,也就是手机绕着Z轴旋转的角度.0表示北(North):90表示东(East):180表示南(Sou

  • Android利用Sensor(传感器)实现指南针小功能

    首先来说一说该指南针的实现思路: 程序先准备一张指南针图片,该图片上方向指针指向北方.接下来开发一个检测方向的传感器,程序检测到手机顶部绕Z轴转过多少度,让指南针图片反向转多少度即可.由此可见指南针应用只要在界面中添加一张图片,并让图片总是反向转过反向传感器返回的第一个角度值即可. 下面介绍一下方向传感器:方向传感器用于感应手机设备的摆放状态.方向传感器可以返回三个角度,这三个角度即可确定手机的摆放状态.关于方向传感器返回的三个角度的说明如下. 第一个角度:表示手机顶部朝向正北方的夹角.当手机绕

  • Android利用Sensor(传感器)实现水平仪功能

    这里介绍的水平仪,指的是比较传统的气泡水平仪,在一个透明圆盘内充满液体,液体中留有一个气泡,当一端翘起时,该气泡就会浮向翘起的一端. 利用方向传感器返回的第一个参数,实现了一个指南针小应用. 我的Android进阶之旅------>Android利用Sensor(传感器)实现指南针功能 接下来,我们利用返回的第二.三个参数实现该水平仪.因为第二个参数,反映底部翘起的角度(当顶部翘起时为负值),第三个参数可以反映右侧翘起的角度(当左侧翘起时为负值).根据这两个角度就可以开发水平仪,实现手机哪端翘起

  • Android使用Sensor感应器获取用户移动方向(指南针原理)

    本文实例讲述了Android使用Sensor感应器获取用户移动方向的方法.分享给大家供大家参考,具体如下: 今天继续给大家分享一下第二个重要的感应器,其实获取方向本应该很简单的事情,在前面文章中看到有个TYPE_ORIENTATION 关键字,说明可以直接获取设备的移动方向,但是最新版的SDK加上了这么一句话"TYPE_ORIENTATION   This constant is deprecated. use SensorManager.getOrientation() instead. &q

  • Android基于Sensor感应器获取重力感应加速度的方法

    本文实例讲述了Android基于Sensor感应器获取重力感应加速度的方法.分享给大家供大家参考,具体如下: FETC项目指导老师提出了新的需求,想要在游戏地图中表现出用户用户当期移动的方向,再用GPS的话显然很不靠谱,所以想到了android强大的感应器... 很多移动设备都内置了感应器,android通过Sensor和SensorManager类抽象了这些感应器,通过这些类可以使用android设备的传感器 一 介绍Sensor类 SDK只有一句介绍"Class representing a

  • Android 传感器--光照传感器详解及使用

    Android 设备中有许多传感器,其中有一个传感器控制着你屏幕亮度的变化.当你在很暗的地方使用手机,你设备的屏幕会自动调暗,从而保护你眼睛. 起着这样作用,Android是通过一款光照传感器来获取你周围环境亮度的变化.光照传感器一般在手机的顶部的位置. 要在程序中使用这款传感器 (1)首先要获取SensorManager传感器管理器服务:SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERV

  • Android使用Sensor感应器实现线程中刷新UI创建android测力计的功能

    本文实例讲述了Android使用Sensor感应器实现线程中刷新UI创建android测力计的功能.分享给大家供大家参考,具体如下: 前面一篇<Android基于Sensor感应器获取重力感应加速度的方法>我们介绍了sensor的基本知识以及一个使用其中加速度感应器获取数据的例子. 前面提到过一个问题,就是说感应器刷新频率太快,假如我们要做一个UI中,需要根据方向数据绘制一个一个移动的箭头,那么就要太过频繁的刷新绘制界面,占用很多的资源,体验性也会很差,<android 2高级编程>

随机推荐