adb 恢复后启动无法使用问题分析

本文档详细分析了adb在系统恢复后无法使用的问题,包括adb服务重启、PC端和设备端adb程序调试、gadget driver和UDC控制器的内容分析,以及Linux中断处理的相关探讨。实验结果显示,通过重启adb服务、编译gadget为module等方式无法解决adb启动问题,推测可能与module加载顺序或中断处理有关。
摘要由CSDN通过智能技术生成

V1.0

有关adb相关内容知识在本wiki内部不做说明了,具体内容可以参考 click here

根据任务一步步推进,对其按时间和要点进行划分如下:

重新启动adb程序方式

根据之前在A10以及freescale上的经验,系统恢复后adb无法使用,但是重新启动adb服务就可以使adb可以使用

因此在任务之初尝试使用这个方式解决问题

涉及到的技术

adb服务控制

adb服务在设备端名称为adbd ,adb的启动定义在init.rc文件中,具体内容如下:

service adbd /sbin/adbd

  class core
  socket adbd stream 660 system system
  disabled
  seclabel u:r:adbd:s0

为了完成adb重启操作,可以采用的方式有两种:

1.在init.rc中添加restar的属性对应的指令序列

on property:service.adb.root=1

write /sys/class/android_usb/android0/enable 0
restart adbd
write /sys/class/android_usb/android0/enable 1

在需要使用的时候使用下面命令就可以 setprop service.adb.root 1

2.也可以使用setprop指令直接操作adb服务,具体指令如下

关闭adb服务使用 setprop ctl.stop adbd

打开adb服务使用 setprop ctl.start adbd

添加服务程序

休眠恢复之后由于adb和串口都无法使用,需要系统内部自动的去重新启动adb,为此需要添加一个服务程序,该程序能够在系统

恢复后重新启动adb。这里采用的基本思路是在init.rc中添加一个开机启动服务,该服务sleep一段时间之后执行重启adb操 作。

在该服务sleep的过程中执行休眠操作,这样,在系统恢复后该程序继续执行便会重新启动adb。

在init.rc中添加服务的方式如下:

service XXXXX /system/bin/YYYYYYY

  class main
  oneshot

XXXXX 为想要的服务名称 YYYYYYY为可执行程序或者脚本的名称

实验结果

通过在系统恢复后重新启动adb的方式,无法使adb正常使用

adb程序相关调试分析

重新启动adb的方式无法使adb在恢复后的系统中正常使用,因此调试adb程序设备端和PC端,

查看是否是adb程序的通信问题。

涉及到的技术

PC端adb

PC端adb即运行在PC机上的adb程序,对程序流程进行分析,发现adb程序运行的log输出到/tmp/下

logfile的名称为adb.log ,因此在PC端启动adb之后,可以通过跟踪adb.log 文件的方式跟踪adb程序

的运行状况 :

tail -f /tmp/adb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值