“adb reboot bootloader”如何在内部工作?

时间:2017-02-10 06:50:54

标签: android embedded adb bootloader

我发现我的android图像存在问题,其中命令adb reboot bootloader只是重新启动android,而不是进入引导加载程序模式。

为了解决这个问题,我做了一些研究,发现有两件事,adbadbd,主机和目标设备通过套接字使用TCP协议进行通信。

所以,有趣的是像adb shelladb devices这样的命令正在运行但不是reboot bootloader。我想了解adbd收到reboot bootloader时的内容。它是否改变了布尔顺序,设置了一些标志,改变了EFI变量......?

你能指出一些你可以分享的好的链接或理解吗?

PS:我正在开发嵌入式设备环境,类似于树莓派......

1 个答案:

答案 0 :(得分:4)

这是adb reboot bootloader对通过USBfastboot模式下标准Android引导加载程序支持的唯一传输)连接的标准Android设备的工作原理:

  1. adb客户端将reboot bootloader命令发送到adb服务器(通过TCP)
  2. adb服务器将reboot bootloader命令转发到设备上的adbd(通过USB)
  3. adbdsys.powerctl属性设置为reboot,bootloader
  4. sys.powerctl更改会触发运行init.rc powerctl内置的init规则
  5. 执行_NR_reboot系统调用
  6. 设置reboot to bootloader标志并重新启动设备
  7. 在下次启动时,引导加载程序将看到该标志并转到fastboot模式。但只有USB已连接。