Fastboot功能详解

来源:互联网 发布:厦门大学网络远程教育 编辑:程序博客网 时间:2024/05/26 15:58

         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 [ <option> ] <command>
commands:
  update <filename>                                  reflash device from update.zip
  flashall                                                     flash boot + recovery + system
  flash <partition> [ <filename> ]              write a file to a flash partition
  erase <partition>                                     erase a flash partition
  format <partition>                                   format a flash partition
  getvar <variable>                                    display a bootloader variable
  boot <kernel> [ <ramdisk> ]                   download and boot kernel
  flash:raw boot <kernel> [ <ramdisk> ]    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 <specific device>             specify device serial number or path to device port
  -l                                         with "devices", lists device paths
  -p <product>                             specify product name
  -c <cmdline>                             override kernel commandline
  -i <vendor id>                           specify a custom USB vendor id
  -b <base_addr>                         specify a custom kernel base address
  -n <page size>                           specify the nand page size. default: 2048
  -S <size>[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支持的命令只有默认的那些。

 

0 0
原创粉丝点击