一、 Fastboot定义及功能
fastboot协议是一种通过USB连接与bootloader通讯的机制。它被设计的非常容易实现,适用于Linux、Windows或者macOS等多种平台。fastboot是Android系统提供的一种较recovery更底层的通过USB更新文件系统的方式。
Android开发包提供了fastboot.exe工具用于与Android系统通信,主要完成分区镜像烧录、分区擦除、设备重启、获取设备状态信息等操作。当需要通过fastboot协议与Android系统交互时,Android系统需要启动到bootloader模式,此时只有最基础的硬件初始化,包括按键、USB、存储系统、显示等模块,以支持分区镜像的写入和系统启动模式的切换。
二、 如何进入Fastboot模式
分析fastboot启动模式,要从手机启动过程开始,如下图:
图1 Linux Kernel启动流程
A1:上电后执行BootROM代码,探测启动媒介,查找第一阶段的引导加载程序bootloader;
A2:一旦boot媒介顺序确定,Boot ROM会试着装载bootloader的第一阶段到内部RAM中,一旦bootloader就位,BootROM 代码会跳到并执行bootloader;
B1:bootloader第一阶段会检测和设置外部 RAM;
B2:一旦外部RAM可用,系统会准备装载主bootloader,把它放到外部RAM 中;
B3:bootloader第二阶段是运行的第一个重要程序,它包含了设置文件系统,内存,网络支持和其他的代码;
B4:一旦bootloader完成这些特殊任务,开始寻找Linux内核,它会从boot媒介上装载 Linux内核