一、 驱动层调试
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 逆向】代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 )

    文章目录 一.Android 平台代码调试器代码 二.Android.mk 构建脚本内容 三.Application.mk 构建脚本内容 四.正式编译 五.博客资源 一.Android 平台代码调试器 ...

  2. Android Studio真机调试方法

    Android Studio真机调试方法 打开手机USB调试功能 安装Google USB Driver 连接手机,指定驱动程序 选中手机,进行调试 打开手机USB调试功能 以华为Mate 20为例, ...

  3. 全志a10 Android,全志A10 android平台CVBS效果调试

    全志平台CVBS效果调试 最近在调试一款面向中低端市场车载后座娱乐产品,在输出方面只有CVBS输出.在车载方面,CVBS输入输出使用得还是非常频繁的,目前还是用得比较多的,特别是在中低端市场. 笔者使 ...

  4. Android平台Airplay的实现方法

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

  5. android app两种调试方法

    方法一: 1.使用apktool的-d选项反编译apk文件 java  -jar  apktool.jar  d  -d  target.apk  -o  output 2.在AndroidManif ...

  6. Unity跨iOS、Android平台使用protobuf-net的方法

    --------------------------------------> dll预编译的方式使用protobuf http://www.ceeger.com/forum/read.php? ...

  7. Android 无usb数据线调试方法,ADB无线连接 调试

    Android开发过程中,一般都是通过USB数据线将手机与电脑连接,进而使用adb进行Android调试,这种方法的缺点不言而喻,在USB被占用或者无数据线的情况下,就无法调试了,那么有没有办法通过无 ...

  8. Android 源码开发调试方法

    最近忙修改Launcher,不知道大家都是怎么做开发和调试的,可能遇到最大的问题就是源码太大,打开很慢,修改的时候也很慢.调试更是需要打日志,重新编译,痛苦不堪.最近学到一个方法,不知道是不是自己ou ...

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

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

最新文章

  1. java $.getjson_JQuery 获取json数据$.getJSON方法的实例代码
  2. 干货!华为AutoML助力AI开发效率提升攻略
  3. DDD+分布式+负载均衡+服务治理已撸!微服务架构不就这点事?
  4. 设计模式-(9)中介者模式(swift)
  5. 如何使用Movavi Video Editor Plus在Mac上制作旁白配音视频
  6. bat脚本实现微信多开
  7. 高光谱遥感图像数据下载
  8. 2020年你还不会做绿幕特效?这4步基础技巧要点了解一下!
  9. Visual Studio Code 编辑器
  10. Chinese Whisper 人脸聚类算法实现
  11. java基础-取余数,取商
  12. css 控制文字换行相关属性
  13. 怎样在VS2005中添加Flash控件
  14. Fiddler 抓包夜神模拟器图文详解
  15. mysql 计算工作日_MySQL函数查找两个日期之间的工作日数
  16. 微信访问IP地址页面出现的问题
  17. 推荐一款高颜值网易云播放器
  18. 第八期杭州NodeParty x Rokid技术分享会回顾
  19. Linux centos7 DNS服务器基于bind正反解析服务的搭建
  20. 把String字符串转换为Int数组

热门文章

  1. php mescroll,mescroll下拉刷新和上拉加载js框架
  2. 前端实习生笔试_一道来自美图的实习生前端笔试算法题
  3. SQL性能--left join和inner join的运行速度与效率
  4. 小米手环4怎么使用_小米手环4/5 NFC添加加密门禁
  5. jbod ugood 磁盘驱动状态_组成原理—磁盘/IO/中断
  6. vrish 删除虚机_使用Kvm命令集管理虚拟机
  7. ClassLoader工作机制
  8. 碎片Fragment
  9. 如何通过 macOS 恢复功能重新安装 macOS
  10. wordpress mysql 安装_wordpress 搭建安装教程 1 安装数据库、SQLyog