设为首页 加入收藏

TOP

Android的fastboot协议
2014-11-24 08:34:51 来源: 作者: 【 】 浏览:0
Tags:Android fastboot 协议

fastboot协议是PC通过USB与手机上的bootloader通信的协议。适用于Linux,Windows,OSX等平台。


基本配置要求:


1、USB连接PC与手机。


2、对于high-speec USB,包的最大尺寸必须是512byte.对于full-speed USB,包的最大尺寸必须是64byte。


3、协议由PC端驱动。


协议传输过程如下:


1、PC向手机发送一个命令,命令由ASCII字符组成,必须存在在一个不大于64byte的包里。


2、手机向PC响应一个不大于64byte的包。包的最前面四个byte是“OKAY”、“FAIL”、“DATA”、“INFO”中的一个。后面如果还有byte,包含就是ASCII信息。下面具体解释


INFO:后面的60个byte代表的信息被显示完成后,跳到#2继续执行。


FAIL:命令执行失败。后面的60个byte是需要显示给用户的失败信息。


OKAY:命令执行成功。跳到#1.


DATA:命令执行成功,开始进入数据传输阶段。一个DATA响应包的大小是12byte,通常是DATA00000000这样的形式,后面的8个数字代表的要传输的数据包的总大小。


3、如果#2时,PC收到的是DATA命令的话,就开始传输数据。0byte数据会被忽略。当#2指示的数据大小被传输完成时,数据传输结束。


例子:


Host: "getvar:version" 查看版本号


Client: "OKAY0.4" 返回版本号


Host: "getvar:nonexistant" 查看一些未定义的变量


Client: “OKAY” 返回值“”


Host: “download:00001234” 请求0x1234个byte的数据


Client: "DATA00001234" 准备好接收数据


Host: "< 0x1234 bytes >" 发送数据


Client "OKAY" 成功


Host: "flash:bootloader" 把数据刷到bootloader中。


Client "INFOerasinig flash" 指明状态或进度


"INFOwriting flash"


"OKAY" 成功


Host: "powerdown" 发送一个关机命令


Client: "FAILunknown command"失败


命令手册:


1、命令参数格式遵守printf-style


2、命令都是ASCII字符串,不能包含引号,不用以0byte结尾


3、本文档中的命令都是以小写字母开头,为了兼容,OEM的命令不要以小写字母开头。


"getvar:%s"


从bootloader读取一个配置/版本变量。变量值跟在OKAY响应后面返回。


“download:%08x”


把数据写入内存,这些数据会被后面执行的“boot”,"ramdisk","flash"等使用。Client的RAM如果有足够的空间的话,会返回一个“DATA%08x”。否则返回“FAIL”。数据大小会被记录下来。


"verify:%08x"


发送一个数字签名来验证下载的数据。如果bootloader当前是“secure”模式,签名会被使用。如果是“flash”和“boot”模式的话,签名被忽略。


"flash:%s"


把前面下载的image写到指定名字的分区中。


"erase:%s"


擦除指定名字的分区。


"boot"


前面下载的数据是一个boot.imgand should be booted according to the normal


procedure for a boot.img


"continue"


Continue booting as normal (if possible)


"reboot"


重启设备


"reboot-bootloader"


重启并回到bootloader,这对那些需要先升级bootloader才能升级其它分区的升级过程很有用。


"powerdown"


关闭设备。


Client端的变量


"getvar:%s"命令可以读一些client端的变量。这些变量通常会可以告诉我们设备以及安装在设备上的软件的信息。目前已经定义的变量如下:


version


当前支持的FastBoot协议版本,对这个文档来说,它的值应该是“0.3”


version-bootloader


Bootloader的版本号


version-baseband


Baseband软件的版本


product


产品的名字


serialno


产品的序列号(serial number)


secure


如果值是“yes”,表示这是一个secure的bootloader,在安装或者boot那些image之前需要一个签名


另外,这些变量的名字都是以小写字母开头,为了兼容性考虑,OEM的变量名字不要以小写字母开头。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇QT 文件读写操作 下一篇Android的framework层是如何进行..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)
·想要自学数据分析, (2025-12-27 02:49:14)
·Java 集合框架 - 菜 (2025-12-27 02:19:36)
·Java集合框架最全详 (2025-12-27 02:19:33)