Android平台 Psensor传感器调试方法
一、 驱动层调试
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传感器调试方法相关推荐
- 【Android 逆向】代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 )
文章目录 一.Android 平台代码调试器代码 二.Android.mk 构建脚本内容 三.Application.mk 构建脚本内容 四.正式编译 五.博客资源 一.Android 平台代码调试器 ...
- Android Studio真机调试方法
Android Studio真机调试方法 打开手机USB调试功能 安装Google USB Driver 连接手机,指定驱动程序 选中手机,进行调试 打开手机USB调试功能 以华为Mate 20为例, ...
- 全志a10 Android,全志A10 android平台CVBS效果调试
全志平台CVBS效果调试 最近在调试一款面向中低端市场车载后座娱乐产品,在输出方面只有CVBS输出.在车载方面,CVBS输入输出使用得还是非常频繁的,目前还是用得比较多的,特别是在中低端市场. 笔者使 ...
- Android平台Airplay的实现方法
1 Airplay背景知识 Airplay属于局域网内异构设备之间分享多媒体数据的一种通信协议.Airplay设备有客户端和服务器之分,一般将小屏IOS设备实现为Airplay客户端,大屏幕设备实现为 ...
- android app两种调试方法
方法一: 1.使用apktool的-d选项反编译apk文件 java -jar apktool.jar d -d target.apk -o output 2.在AndroidManif ...
- Unity跨iOS、Android平台使用protobuf-net的方法
--------------------------------------> dll预编译的方式使用protobuf http://www.ceeger.com/forum/read.php? ...
- Android 无usb数据线调试方法,ADB无线连接 调试
Android开发过程中,一般都是通过USB数据线将手机与电脑连接,进而使用adb进行Android调试,这种方法的缺点不言而喻,在USB被占用或者无数据线的情况下,就无法调试了,那么有没有办法通过无 ...
- Android 源码开发调试方法
最近忙修改Launcher,不知道大家都是怎么做开发和调试的,可能遇到最大的问题就是源码太大,打开很慢,修改的时候也很慢.调试更是需要打日志,重新编译,痛苦不堪.最近学到一个方法,不知道是不是自己ou ...
- 使用Unity开发Android的几种调试方法
前言 本文举例几种Android 调试的方法(PS:我是通过unity引擎来开发安卓游戏) Eclipse + adt 查看LOG 1.为Eclipse 装上adt 插件 2.打开Eclipse 的L ...
最新文章
- java $.getjson_JQuery 获取json数据$.getJSON方法的实例代码
- 干货!华为AutoML助力AI开发效率提升攻略
- DDD+分布式+负载均衡+服务治理已撸!微服务架构不就这点事?
- 设计模式-(9)中介者模式(swift)
- 如何使用Movavi Video Editor Plus在Mac上制作旁白配音视频
- bat脚本实现微信多开
- 高光谱遥感图像数据下载
- 2020年你还不会做绿幕特效?这4步基础技巧要点了解一下!
- Visual Studio Code 编辑器
- Chinese Whisper 人脸聚类算法实现
- java基础-取余数,取商
- css 控制文字换行相关属性
- 怎样在VS2005中添加Flash控件
- Fiddler 抓包夜神模拟器图文详解
- mysql 计算工作日_MySQL函数查找两个日期之间的工作日数
- 微信访问IP地址页面出现的问题
- 推荐一款高颜值网易云播放器
- 第八期杭州NodeParty x Rokid技术分享会回顾
- Linux centos7 DNS服务器基于bind正反解析服务的搭建
- 把String字符串转换为Int数组
热门文章
- php mescroll,mescroll下拉刷新和上拉加载js框架
- 前端实习生笔试_一道来自美图的实习生前端笔试算法题
- SQL性能--left join和inner join的运行速度与效率
- 小米手环4怎么使用_小米手环4/5 NFC添加加密门禁
- jbod ugood 磁盘驱动状态_组成原理—磁盘/IO/中断
- vrish 删除虚机_使用Kvm命令集管理虚拟机
- ClassLoader工作机制
- 碎片Fragment
- 如何通过 macOS 恢复功能重新安装 macOS
- wordpress mysql 安装_wordpress 搭建安装教程 1 安装数据库、SQLyog