一、通用
adb root // user版本adb root之后就可以cat节点
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
rm -r /data/media/0/mtklog
git add --all && git commit -m "before modify" // 保存调试现场
adb stop // 仅重启android,不重启kernel
adb start
二、调试
1. 查看内核log
cat /proc/kmsg | grep "tp|lcm" // 容易断
cat /dev/kmsg | grep "tp|lcm" // row不会断
导出:adb shell cat /proc/kmsg > e:kernel.log
2. 查看上层log
查看:
logcat | grep "FingerprintHal"
导出:
logcat | grep "FingerprintHal" > log.txt
adb logcat > d:\log.txt
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)
4. 查看input上报信息: tp,keypad,sensor
getevent -i
getevent -t /dev/input/eventX
4.1 getevent -l /dev/input/eventX // 可以查看键值坐标,如:
// =========虚拟按键按下所报键值===========
EV_ABS ABS_MT_TOUCH_MAJOR 00000014
EV_ABS ABS_MT_TRACKING_ID 00000000
EV_KEY BTN_TOUCH DOWN
EV_ABS ABS_MT_POSITION_X 0000003c // 换成十进制为(60,2100)
EV_ABS ABS_MT_POSITION_Y 00000640 // 换成十进制为(60,2100)
EV_SYN SYN_MT_REPORT 00000000
EV_SYN SYN_REPORT 00000000
EV_KEY BTN_TOUCH UP
EV_SYN SYN_MT_REPORT 00000000
EV_SYN SYN_REPORT 00000000
5. 查看pin脚模式- 特别注意:输入输出 dir:0-in 1-out
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
写值
echo \"-w=99:0 1 0 0 0 0 0 1\" > /sys/class/misc/mygpio/pin
6. 查看中断
1. 查看中断是否注册成功
cat /proc/interrupts
CPU0 CPU1
29: 0 0 GIC 29 arch_timer
...
196 0 0 GIC 196 mtk-tpd
...
298: 376 mt-eint 10 TOUCH_PANEL-eint
2. 查看是否有中断计数是否增加
cat /proc/interrupts | grep " TOUCH_PANEL-eint"
298: 376 mt-eint 10 TOUCH_PANEL-eint // 376
cat /proc/interrupts | grep " TOUCH_PANEL-eint"
298: 387 341 301 mt-eint 10 TOUCH_PANEL-eint // 387
cat /proc/interrupts | grep " TOUCH_PANEL-eint"
298: 399 355 309 mt-eint 10 TOUCH_PANEL-eint // 399
cat /proc/interrupts | grep " TOUCH_PANEL-eint"
298: 401 362 316 mt-eint 10 TOUCH_PANEL-eint // 401
7. 查看进程
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 // 杀死进程
// eng版本才能手动启动进程
1) adb remount
2) adb push
3) xxx &
root@Z PLAY:/system/bin # memsicp // 手动启动进程,不会退出
root@Z PLAY:/system/bin # memsicp & // 后台运行
8. 串口设置 - 板子上的TXD
波特率 : 921600
data bits : 8
stop bits : 1
parity : None
flow control: None
三、lcm
1. 查看机器中lcm型号:
cat /proc/cmdline // 包含lcm的型号(6.0有,7.0没有-需要可以自己加)
1.1 自己加:
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/app/mt_boot/mt_boot.c
- //#define SERIAL_NUM_FROM_BARCODE
+ #define SERIAL_NUM_FROM_BARCODE
int boot_linux_from_storage(void)
+ snprintf(cmdline_tmpbuf, CMDLINE_TMP_CONCAT_SIZE, "lcm=%1d-%s", DISP_IsLcmFound(), mt_disp_get_lcm_id());
+ cmdline_append(cmdline_tmpbuf);
+ snprintf(cmdline_tmpbuf, CMDLINE_TMP_CONCAT_SIZE, "fps=%1d", mt_disp_get_lcd_time());
+ cmdline_append(cmdline_tmpbuf);
+ snprintf(cmdline_tmpbuf, CMDLINE_TMP_CONCAT_SIZE, "vram=%1d", DISP_GetVRamSize());
+ cmdline_append(cmdline_tmpbuf);
2. 查看系统分辨率
cat /system/build.prop | grep lcd_density // 得“240”
四、tp
1. 在tp还不通的时候/frameworks/base/include/ui/KeycodeLabels.h中定义了很多keyevent
inut keyevent 3 //home
inut keyevent 4 //back
inut keyevent 26 //power
2 通过sys节点读取
cat /sys/board_properties/virtualkeys.mtk-tpd // 获取软件中虚拟按键坐标
五、camera
1 查看是否读到id
cat /proc/driver/camera_info // 查看已经读到ID的camera
2 后副摄调试节点 - microhand公司自己实现
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
七、马达
1.调试马达震动时间 1000毫秒=1秒:
echo 1000 > /sys/class/timed_output/vibrator/enable (节点)