一、常用基本指令
adb root // 获取root权限
adb shell
adb reboot // 重启
reboot
reboot -p // 关机
adb remount
adb pull /data/media/0/mtklog e:mtklog/
adb push e:mtklog/ /data/media/0/mtklog // push之前需要adb remount
adb install xxx.apk //安装APK
二、调试相关
1.adb打印log
查看kernel log
cat /proc/kmsg | grep "qqq"
或者adb shell cat /dev/kmsg |grep "qqq"
查看hal层和上层log
adb logcat -v time |find "qqq"
logcat | grep "qqq"
3.dmesg充当串口log -- 但是无preloader与lk的log
增大内核缓冲区 - 修改kernel-3.18\kernel\printk\printk.c
-332 #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT)
+332 #define __LOG_BUF_LEN (1 << CONFIG_LOG_BUF_SHIFT << 5)
adb shell dmesg > log.log //查看内核缓冲区log(包括开机log,同串口log)
3. 查看input设备信息: tp,keypad,sensor
adb shell getevent
getevent -l
getevent -i 如这里能看到设备(如tp)信息,说明该设备驱动已运行,已通过i2c读到设备信息(gt5668)
getevent -t /dev/input/event5
4. 查看pin脚模式状态
cat /sys/class/misc/mtgpio/pin
PIN:MODE,PULL_SEL,DIN,DOUT,PULL EN,DIR,IES,SMT
0: 1 1 1 0 1 0 1 0
1: 0 0 0 0 1 0 1 0
android8.1查看gpio状态:cat /sys/devices/platform/1000b000.pinctrl/mt_gpio
写值 echo \"-w=99:0 1 0 0 0 0 0 1\" > /sys/class/misc/mygpio/pin
5. 查看中断
-- 查看中断是否注册成功
cat /proc/interrupts
CPU0 CPU1
29: 0 0 GIC 29 arch_timer
...
196 0 0 GIC 196 mtk-tpd
6. 查看进程
root@Z PLAY:/system/bin # ps |grep mem // 查看进程
system 256 1 1184 384 c0051864 b6fb1310 S /system/bin/memsicp
root@Z PLAY:/system/bin # kill 256 // 杀死进程
root@Z PLAY:/system/bin # memsicp // 手动启动进程
三、常用节点查看
1. 查看机器中lcm型号:
cat /proc/cmdline // 包含lcm的型号(6.0有,7.0没有-需要可以自己加)
2. 查看系统分辨率
cat /system/build.prop | grep lcd_density // 得“240”
3.获取软件中虚拟按键坐标
cat /sys/board_properties/virtualkeys.mtk-tpd
4.查看camera 是否读到id
cat /proc/driver/camera_info // 查看已经读到ID的camera
5. 查看后副摄亮度,判断副摄的工作状态
cat /proc/driver/dualcam_brightness // 1 -- 光线强 0 -- 光线弱
cat /sys/bus/platform/drivers/image_sensor/yuv_shutter // 可以获得亮度值
四、sensor调试相关
1.架构实现 - 两个路径的节点是一样的,cat出来也是相同的,hal层走class
/sys/class/misc/m_acc_misc/***
/sys/devices/virtual/misc/m_acc_misc/*** 有若干属性,可以读写操作
cat /sys/.../accenablenodata -- 不支持 echo 0/1 > 无作用
cat /sys/.../accactive -- 1(使能) echo 0 > /sys/.../accactive -- disable
cat /sys/.../accdelay(不常用)
cat /sys/.../accbatch(不常用)
cat /sys/.../accflush(不常用)
cat /sys/.../accdevnum -- 4(/dev/input/event4)
2.驱动实现
/sys/bus/platform/drivers/gsensor/*** 有若干属性,可以读写操作
* cat /sys/.../chipinfo -- MC3XXX Chip -- 直接打印MC3XXX Chip
* cat /sys/.../sensordata -- 1758 0695 1b88 -- 读地址0x00
cat /sys/.../cali -- 三组校准数据 -- 第二组为校准系数,上层未下发就为0
cat /sys/.../selftest -- 空(未设置)
cat /sys/.../firlen -- 0 -- 滤波长度 - 从dts获得 - 全部为0
cat /sys/.../trace -- 0x0000 -- mc3xxx_i2c_probe()把它设置为0
cat /sys/.../status -- CUST: 2 7 <-1 0> -- i2c_num direction <power_id power_vol> - 从dts获取
cat /sys/.../power -- 亮屏0x0041,灭屏0x0043 -- 读地址0x07
cat /sys/.../version -- 2.1.6 -- 打印驱动的宏
* cat /sys/.../chipid -- 7C-5F-5E-46 -- 读地址0x3C
cat /sys/.../virtualz -- 不支持
* cat /sys/.../regmap -- 打印所有寄存器的值
* cat /sys/.../orientation -- 方向 -- 从dts获取 echo 7 > /sys/.../orientation
cat /sys/.../accuracy -- 2(精度 - 宏设置)
cat /sys/.../selfcheck -- 乱码
cat /sys/.../validate -- 0(验证成功) -- 从0x3b读出pcode - 匹配mc3***系列芯片 - 验证成功返回0
五、马达vibrator
调试马达震动时间 1000毫秒=1秒:
echo 1000 > /sys/class/timed_output/vibrator/enable (节点)
六、adb模拟按键上报键值
在/frameworks/base/include/ui/KeycodeLabels.h中定义了很多keyevent
adb shell inputkeyevent xxx 后面接相应的键值
常用键值如下:
1 –> “KEYCODE_MENU”
3 –> “KEYCODE_HOME”
4 –> “KEYCODE_BACK”
19 –> “KEYCODE_DPAD_UP” //上下左右,控制光标移动
20 –> “KEYCODE_DPAD_DOWN”
21 –> “KEYCODE_DPAD_LEFT”
22 –> “KEYCODE_DPAD_RIGHT”
23 –> “KEYCODE_DPAD_CENTER” //确认键
24 –> “KEYCODE_VOLUME_UP”
25 –> “KEYCODE_VOLUME_DOWN”
26 –> “KEYCODE_POWER” //电源键
其他特殊键值:
//可以解锁屏幕
adb shell input keyevent 82
//在屏幕上做划屏操作,前四个数为坐标点,后面是滑动的时间(单位毫秒)
adb shell input swipe 50 250 250 250 500
//在屏幕上点击坐标点x=50 y=250的位置。
adb shell input tap 50 250
//输入字符abc
adb shell input text abc