Fastboot功能详解

         Android的Fastboot模式相信熟悉android平台以及广大刷机爱好者都不会陌生,fastboot是一种比recovery更底层但是比低格高级的刷机模式。用fastboot模式来进行手机中各分区img的更新或者获取手机某些信息非常方便,因为不需要启动内核。进入fastboot模式的方式各个手机厂家互不相同,有的按着上键插USB线可以进入,有的按着下键插USB线进入,有的按着电源键和上键或下键进入。不管采用什么方式进入,所采用的fastboot协议是相同的。

        进入fastboot之后,要想通过PC跟手机进行通讯完成刷机等功能,PC机上必须也要有一个fastboot的可执行文件,而PC机上的这个可执行文件的生成方式可以通过android平台代码自身编译生成,代码路径在system/core/fastboot,里面的最主要的一个文件就是fastboot.cpp,main函数实现就在这个文件中。

          仔细阅读这个cpp文件我们可以发现fastboot默认支持的命令如下:

usage: fastboot [
commands:
  update                                   reflash device from update.zip
  flashall                                                     flash boot + recovery + system
  flash [ ]              write a file to a flash partition
  erase                                      erase a flash partition
  format                                    format a flash partition
  getvar                                     display a bootloader variable
  boot [ ]                   download and boot kernel
  flash:raw boot [ ]    create bootimage and flash it
  devices                                                     list all connected devices
  continue                                                    continue with autoboot
  reboot                                                       reboot device normally
  reboot-bootloader                                      reboot device into bootloader
  help                                                           show this help message
options:
  -w                                       erase userdata and cache (and format if supported by partition type)
  -u                                        do not first erase partition before formatting
  -s              specify device serial number or path to device port
  -l                                         with "devices", lists device paths
  -p                              specify product name
  -c                              override kernel commandline
  -i                            specify a custom USB vendor id
  -b                          specify a custom kernel base address
  -n                            specify the nand page size. default: 2048
  -S [K|M|G]                       automatically sparse files greater than size.  0 to disable

 

在命令行中输入fastboot -h就会打印出这些信息。另外fastboot还支持用户扩展命令,但是扩展的命令格式必须如下面所示:fastboot oem command args,也就是说扩展的命令必须要以oem开头,否则即使手机侧用fastboot_register注册成功了命令,但是通过PC侧fastboot输入该命令时也不会发到手机侧,而是直接返回help的内容。

        那是不是就不能扩展别的命令了呢,其实也不是,但是需要修改fastboot.cpp的代码,并且重新编译PC侧的fastboot工具。PC侧的fastboot工具分为linux下的工具和windows下的工具两种。linux下用的工具很简单,我们只要按照模块编译的方法在android版本的根目录下输入make fastboot就可以了,编译之后生产的fastboot可执行文件位于out/host/linux-x86/bin/fastboot目录下,这个只能在linux环境下执行。如果需要编译出能在windows环境下执行的fastboot比较麻烦,步骤如下:

        1.按照交叉编译环境mingw32

        2.设置编译参数和环境变量。

        3.编译:make USE_MINGW=y fastboot。

编译出的文件存放在out/host/windows-x86/bin目录下。

windows下的fastboot.exe工具很小只有几百K,但是linux下的fastboot有8MB左右。一般SDK包里都包含windows下的fastboot.exe工具,当然这个fastboot支持的命令只有默认的那些。

 

你可能感兴趣的:(Fastboot功能详解)