欢迎来到天天文库
浏览记录
ID:40548840
大小:62.50 KB
页数:5页
时间:2019-08-04
《fastboot协议》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、FastBoot协议版本0.4fastboot协议是一种通过USB连接与bootloader通讯的机制。它被设计的非常容易实现,能够用于多种设备和运行Linux、Windows或者OSX的主机。基本需求(BasicRequirements)l两个端点,一个输入端,一个输出端。l对于全速(full-speed)USB,最大包尺寸必须是64个字节;对于高速(high-speed)USB,最大包尺寸必须是512个字节。l协议完全是主机驱动(SSW注:相对于设备客户端而言),并且同步的。这与多通道、双向、异步的ADB协议不同。传输和组帧(TransportandFrami
2、ng)l步骤1、主机发送命令(Command)。一个命令是一个ASCII字符串,并且只能包含在不大于64个字节的单个包内。l步骤2、客户端(SSW注:设备)用一个单个的不大于64个字节的包响应。响应包开头四个字节是“OKAY”、“FAIL”、“DATA”或者“INFO”。响应包剩余的字节可以包含ASCII格式的说明性信息。A.INFO->剩余的60个字节包含说明信息(提供进度或者诊断信息)。这些说明信息应该被显示,然后重复步骤2。B.FAIL -> 指示请求的命令失败。剩余的60个字节可以提供一个文本形式的失败原因呈现给用户。交互停止。C.OKAY-> 指示请求的
3、命令成功完成。跳转到步骤5。A.DATA->请求的命令已经为数据阶段做好准备。一个数据响应包是12个字节长,组织形式为DATA00000000,其中8位十六进制的数字表示所传输数据的总大小。l步骤3、数据阶段。根据命令的不同,主机或者客户端将发送指定大小的数据。比指定长度短的包总是可接受的,零长度的包将被忽略。这个阶段会一直持续,直到客户端已经发送或接收了上面数据响应包中指定大小的字节数为止。l步骤4、客户端用一个单个的不大于64个字节的包响应。响应包开头四个字节是“OKEY”、“FAIL”或者“INFO”,类似于步骤2。A.INFO ->显示剩余的60个字节,然
4、后返回到步骤4。B.FAIL ->显示剩余的60个字节(如果有的话)作为失败原因,命令失败,停止交互。C.OKAY->成功。跳转到步骤5。l步骤5、命令执行成功。结束交互。示例会话(ExampleSession)Host:主机 Client:客户端(设备)编号主机/客户端命令说明1Host"getvar:version"请求版本号Client"OKAY0.4"返回版本为"0.4"2Host"getvar:nonexistant"请求未定义的变量Client"OKAY"返回值为""3Host"download:00001234"请求发送0x1234大小的字节数据C
5、lient"DATA00001234"准备好接收数据4Host<0x1234bytes>发送数据Client"OKAY"数据接收成功完成5Host"flash:bootloader"请求刷新数据到bootloaderClient"INFOerasingflash"指示状态/进度为“擦除flash”"INFOwritingflash"指示状态/进度为“写入flash”"OKAY"刷新成功完成6Host"powerdown"发送“关机”命令Client"FAILunknowncommand"命令执行失败命令参考(CommandReference)l命令参数以print
6、f风格的转义序列表示。l命令是ASCII字符串,发送时不用引号(下面命令外使用引号仅仅为了在此文档中清楚的表达命令),发送时也不以字节0结尾。l以小写字母开头的命令是为本规范保留的,OEM特定的命令不应该以小写字母开头,以防和规范的未来版本不兼容。命令说明"getvar:%s"从bootloader读取配置或版本变量。变量的值在OKAY响应的后面返回。"download:x"写入数据到内存,供下面阐述的”boot“、”randisk“、”flash“等命令使用。如果RAM有足够的空间,客户端将用”DATAx“回应;否则,将回应”FAIL“。下载数据的大小会被记下来
7、。"verify:x"发送一个数字签名去验证下载的数据。如果bootloader是”secure(安全的)“,那么签名验证是必须的;如果bootloader不是”secure“,”flash“和”boot“命令会忽略签名验证。"flash:%s"将之前下载的影像写入到指定的分区(如果可能的话)。"erase:%s"擦除指定的分区(将分区全部写成0xFF)。"boot"之前下载的数据一个boot.img,应该按照boot.img的正常步骤被启动。"continue"继续正常启动工作(如果可能的话)。"reboot"重新启动设备。"reboot-bootloader"
8、重新启动进
此文档下载收益归作者所有