Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 461|回复: 0

[实例教程]Android的fastboot协议

[复制链接]

该用户从未签到

发表于 2011-10-22 12:44:40 | 显示全部楼层 |阅读模式
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的变量名字不要以小写字母开头。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-18 23:21 , Processed in 0.362960 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表