FastBoot协议版本0.4 fastboot协议是一种通过USB连接与bootloader通讯的机制。它被设计的非常容易实现,能够用于多种设备和运行Linux、Windows或者OSX的主机。 基本需求(Basic Requirements) 两个端点,一个输入端,一个输出端。 对于全速(full-speed)USB,最大包尺寸必须是64个字节;对于高速(high-speed)USB,最大包尺寸必须是512个字节。 协议完全是主机驱动(注:相对于设备客户端而言),并且同步的。这与多通道、双向、异步的ADB协议不同。 传输和组帧(Transport and Framing) 步骤1、主机发送命令(Command)。一个命令是一个ASCII字符串,并且只能包含在不大于64个字节的单个包内。 步骤2、客户端(SSW注:设备)用一个单个的不大于64个字节的包响应。响应包开头四个字节是“OKAY”、“FAIL”、“DATA”或者“INFO”。响应包剩余的字节可以包含ASCII格式的说明性信息。 A. INFO -> 剩余的60个字节包含说明信息(提供进度或者诊断信息)。这些说明信息应该被显示,然后重复步骤2。 B. FAIL -> 指示请求的命令失败。剩余的60个字节可以提供一个文本形式的失败原因呈现给用户。交互停止。 C. OKAY -> 指示请求的命令成功完成。跳转到步骤5。 D. DATA -> 请求的命令已经为数据阶段做好准备。一个数据响应包是12个字节长,组织形式为DATA00000000,其中8位十六进制的数字表示所传输数据的总大小。 步骤3、数据阶段。根据命令的不同,主机或者客户端将发送指定大小的数据。比指定长度短的包总是可接受的,零长度的包将被忽略。这个阶段会一直持续,直到客户端已经发送或接收了上面数据响应包中指定大小的字节数为止。 步骤4、客户端用一个单个的不大于64个字节的包响应。响应包开头四个字节是“OKEY”、“FAIL”或者“INFO”,类似于步骤2。 A. INFO -> 显示剩余的60个字节,然后返回到步骤4。 B. FAIL -> 显示剩余的60个字节(如果有的话)作为失败原因,命令失败,停止交互。 C. OKAY -> 成功。跳转到步骤5。 步骤5、命令执行成功。结束交互。 示例会话(Example Session) Host:主机 Client:客户端(设备)
命令参考(Command Reference) 命令参数以printf风格的转义序列表示。 命令是ASCII字符串,发送时不用引号(下面命令外使用引号仅仅为了在此文档中清楚的表达命令),发送时也不以字节0结尾。 以小写字母开头的命令是为本规范保留的,OEM特定的命令不应该以小写字母开头,以防和规范的未来版本不兼容。
客户端变量(Client Variables) 命令"getvar:%s"用来读取客户端变量,客户端变量代表关于设备和运行于设备之上软件的各种信息。 当前已经定义的变量名称如下:
以小写字母开头的变量名被本规范保留,OEM特定的变量名不应该以小写字母开头。
|
|