一、 驱动层调试
1、在板级dts文件中增加相应的dts代码,
如:调试sensor类,在代码中找到已经有的代码在修改,I2C使用那根(一般为I2C3),I2C地址(找datasheet或者FAE),哪个中断引脚(看原理图)。
twsi3: i2c@d4013800 {
                                mc3xxx@4c {
compatible = "mc3, mc3xxx";
reg = <0x4c>;
interrupt-parent = <&gpio>;
interrupts = <91 0x1>;
irq-gpios = <&gpio 91 0>;
avdd-supply = <&ldo4>;
status = "okay";
};
      epl2182@49 {
compatible = "epl,epl2182";
reg = <0x49>;
interrupt-parent = <&gpio>;
interrupts = <4 0x1>;
irq-gpios = <&gpio 4 0>;
avdd-supply = <&ldo4>;
};

}

;

2、在_defconfig中打开相应的driver文件

3、如何判断driver是否调通?
1)编译后下载后,通过adb 中getevent判断是否驱动产生了设备节点

shell@MMX:/ # getevent
getevent
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 1: /dev/input/event1
  name:     "vnc-ts"
add device 2: /dev/input/event7
  name:     "map asoc Hook"
add device 3: /dev/input/event8
  name:     "map asoc Headset"
add device 4: /dev/input/event0
  name:     "pxa27x-keypad"

add device 5: /dev/input/event3
  name:     "88pm886_on"
add device 6: /dev/input/event2
  name:     "msg2238"
add device 7: /dev/input/event6
  name:     "APDS_proximity_sensor"
add device 8: /dev/input/event5
  name:     "APDS_light_sensor"
add device 9: /dev/input/event4
  name:     "accelerometer"

通过以上可以看出为dev/input/event5 和/dev/input/event6  ,
2)确定是否有报点上传 
通过以下命令进行判断

1|shell@:/sys/class/input/input5 $ cat active
cat active
0
shell@:/sys/class/input/input5 $ echo 1 >active
echo 1 >active
shell@:/sys/class/input/input5 $ getevent
getevent
could not get driver version for /dev/input/mouse0, Not a typewriter
add device 1: /dev/input/event1
  name:     "vnc-ts"
add device 2: /dev/input/event7
  name:     "map asoc Hook"
add device 3: /dev/input/event8
  name:     "map asoc Headset"
add device 4: /dev/input/event0
  name:     "pxa27x-keypad"
add device 5: /dev/input/event3
  name:     "88pm886_on"
add device 6: /dev/input/event2
  name:     "msg2238"
add device 7: /dev/input/event6
  name:     "APDS_proximity_sensor"
add device 8: /dev/input/event5
  name:     "APDS_light_sensor"
add device 9: /dev/input/event4
  name:     "accelerometer"
could not get driver version for /dev/input/mice, Not a typewriter
/dev/input/event5: 0003 0018 00000066
/dev/input/event5: 0000 0000 00000000
/dev/input/event5: 0003 0018 0000006d
/dev/input/event5: 0000 0000 00000000
/dev/input/event3: 0001 0074 00000001
/dev/input/event3: 0000 0000 00000000
/dev/input/event4: 0003 0000 0000000b
/dev/input/event4: 0000 0000 00000000
/dev/input/event3: 0001 0074 00000000
/dev/input/event3: 0000 0000 00000000
/dev/input/event4: 0003 0000 fffffff5

#adb shell getevent -lr /dev/input/event5

手动验证有数据传上来,说明driver工作正常。

二、framework层调试

1) 判断framework使用那套流程,打开相应的宏开关
通过sensors_hal.cpp中查看开关那个红
BOARD_HAVE_AVAGO=true

2)驱动层有设备节点是否跟framework层一致。
Driver:
static const char ElanPsensorName[] = "APDS_proximity_sensor";
static const char ElanALsensorName[] = "APDS_light_sensor";

framework:
AvagoLightSensor::AvagoLightSensor()
    : LightSensorSet("APDS_light_sensor")
{
}

3)上报的诗句是否与farmework中处理的是否一致
Driver中:
input_report_abs(epld->als_input_dev, ABS_PRESSURE, lux);

framework中:
int LightSensorSet::readEvents(sensors_event_t* data, int count)
{


…  …
     if ((type == EV_ABS) && (event->value > 0)) {
            if (event->code == ABS_PRESSURE) {
                mPendingEvent.light = event->value;
                valid = true;
                if (LOG_DBG)
                    LOGD("LightSensor: read value = %f", mPendingEvent.light);
            }
        } else if ( (type == EV_SYN) && valid ) {

4) 注意使能标志位是否一致。
Driver中: 
static struct device_attribute dev_attr_light_enable =
__ATTR(active, S_IRWXUGO,
  light_enable_show, light_enable_store);

Framework中:
int LightSensorSet::enable(int32_t handle, int en)
{
    int flags = en ? 1 : 0;
    if (flags != mEnabled) {
        int fd;
        char enablePath[PATH_MAX];
        sprintf(enablePath, "%s/%s", mClassPath, "active");

if (LOG_DBG)
   LOGD("LightSensor enable path is %s", enablePath);
        fd = open(enablePath, O_RDWR);
        if (fd >= 0) {
            err = write(fd, buf, sizeof(buf));
            close(fd);
    return 0;
}

三、应用层调试
安装并使用测试sensor APP来判断是否能工作。

Android平台 Psensor传感器调试方法的更多相关文章

  1. Android平台Airplay的实现方法

    Airplay属于局域网内异构设备之间分享多媒体数据的一种通信协议.Airplay设备有客户端和服务器之分,一般将小屏IOS设备实现为Airplay客户端,大屏幕设备实现为Airplay服务器.即iP ...

  2. Unity3D之移植学习笔记:移植到Android平台更好的方法

    接上文,之前我们采用了直接将Unity项目导出为Eclipse项目来修改的方式,这种做法存在的一个最大的问题就是:每当Unity被修改之后,都需要重新导出,而每次导出的项目在Android平台方面的J ...

  3. NDK开发历程(一):android native code的调试方法

    引用:http://www.cnblogs.com/ychellboy/archive/2013/02/22/2922683.html 使用NDK在android上做开发是一件“痛并快乐着”的差事,之 ...

  4. 使用Unity开发Android的几种调试方法

    前言 本文举例几种Android 调试的方法(PS:我是通过unity引擎来开发安卓游戏) Eclipse + adt 查看LOG 1.为Eclipse 装上adt 插件 2.打开Eclipse 的L ...

  5. android默认开启adb调试方法分析

    用adb调试android时,每次接入usb线,都会提示一个确认打开usb调试功能的窗口,有时候,我们需要默认打开usb调试功能.或者无需弹出对话框,直接默认开启.这个我们需要分析adb的流程了. a ...

  6. android应用崩溃的调试方法(c++ lib so文件库崩溃)

    android调试工具addr2line使用: 1.将ndk中的arm-linux-androideabi-addr2line可执行文件的路径加入配置文件~/.bashrc中,例如: export P ...

  7. Android虚拟机 USB转串口调试方法

    有时候需要在虚拟机调试串口,首先安装串口的驱动程序(不知道的话可以用驱动精灵),然后打开设备管理器找到驱动,查看驱动使用的端口(比如COM3),虚拟机需要在命令行启动: 将SDK下的tools文件夹加 ...

  8. android机顶盒真机调试方法

    最近接触电视APP开发,之前对Android开发也不太了解还一直以为不能真机调试.最近静下心来想一想肯定能真机调试的,我是我不知道而已.现在讲述一下真机调试的步骤: 1.进入设置--关于,连续点击版本 ...

  9. 调试 Android* x86 应用程序的方法以及要使用的工具

    作者:Xiaodong Wang 1.简单介绍 众所周知,Android* 开发者头顶很多称呼:设计员.程序员等,而且一般会不可避免地被称为故障检修工. 代码中的错误无法避免.因此不管您是否一開始就造 ...

随机推荐

  1. python 的字符串驻留机制

    我们都知道python中的引用计数机制,相同对象的引用其实都是指向内存中的同一个位置,这个也叫做“python的字符串驻留机制”.其他的就不多说了,自行研究. 重点!!!!!! python的引用计数 ...

  2. E1

    en表"使怎么样" engage 吸引,从事,订婚    be engaged in doing sth.  忙于 endure  忍耐,忍受 enforce 强制执行 enrol ...

  3. Django REST Framework 最佳实践

    Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. 为什么要使用REST framework? - 在线可视的API,对于赢得你的开发者们十分有用 - 验 ...

  4. Python3 CGI编程

    什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...

  5. Linux基础指令

    Linux基础指令 只写了最简单的一些文件操作,基本没有带参数 查看当前目录 pwd 跳转到某路径 cd 查看当前目录下的文件 ls ls -l // -l 查看详细信息 打开当前所在文件夹 open ...

  6. docker iotop :OSError: Netlink error: No such file or directory

    在容器内使用iotop ,错误信息: raceback (most recent call last): File "/usr/sbin/iotop", line 16, in & ...

  7. Appium移动自动化测试(五)--app控件获取之uiautomatorviewer

    初探 在Android的SDk提供了以下的工具来支持我们进行UI自动化测试: uiautomatorviewer:用来扫描和分析Android应用程序的UI控件的工具. uiautomator:一个包 ...

  8. JavaMail API 概述

    JavaMail API提供了一种与平台无关和协议独立的框架来构建邮件和消息应用程序. JavaMail API提供了一组抽象类定义构成一个邮件系统的对象.它是阅读,撰写和发送电子信息的可选包(标准扩 ...

  9. RxJava操作符(02-创建操作)

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51645348 本文出自:[openXu的博客] 目录: Create Defer Empty ...

  10. SpriteKit中反转Action需要注意的问题

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在SpriteKit中同样有Cocos2D中类似的Ac ...