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指示的数据大小被传输完成时,数据传输结束。例子:
         10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  
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-style2、命令都是ASCII字符串,不能包含引号,不用以0byte结尾3、本文档中的命令都是以小写字母开头,为了兼容,OEM的命令不要以小写字母开头。“getvar:%s”从bootloader读取一个配置/版本变量。变量值跟在OKAY响应后面返回。“download:x”把数据写入内存,这些数据会被后面执行的“boot”,”ramdisk”,”flash”等使用。Client的RAM如果有足够的空间的话,会返回一个“DATAx”。否则返回“FAIL”。数据大小会被记录下来。“verify:x”发送一个数字签名来验证下载的数据。如果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-bootloaderBootloader的版本号version-basebandBaseband软件的版本product产品的名字serialno产品的序列号(serial number)secure如果值是“yes”,表示这是一个secure的bootloader,在安装或者boot那些image之前需要一个签名另外,这些变量的名字都是以小写字母开头,为了兼容性考虑,OEM的变量名字不要以小写字母开头。
保持原创转自:disanji.net/2011/05/08/ android-fastboot-treaty

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值