十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、什么是fastboot
“只有客户发展了,才有我们的生存与发展!”这是创新互联的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对网站设计制作、做网站、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。(1)fastboot是android使用的一种刷机方法。
因为Android、的底层是Linux
(2)fastboot使用usb作为物理传输
(3)fastboot是uboot中的一个命令
在uboot下输入fastboot命令,就可以让uboot进入fastboot模式,刷机就是在fastboot模式下进行刷机。
(4)fastboot需要主机端的fastboot软件相配合
(5)fastboot在开发板和主机之间定义了一套协议
2、当我们在uboot中输入fastboot时,有时会出现不正常的现象,我们在uboot下输入 fdisk -c 0 ,完了之后再输入fastboot就好使了。因为我们SD/MMC设备第0扇区是空闲的,0扇区一般放的都是我们SD/MMC设备的分区信息的,所以这个扇区为空闲的,没有用的话,fastboot命令执行时,就读取不到这个设备的分区信息,所以我们在uboot下输入fdisk -c 0就是给我们SD/MMC的0扇区中,弄上分区信息的。
这时就进入了fastboot模式,这时的uboot就相当于了一个USB设备,和我们主机进行通信了,在主机中的fastboot软件中,文件就可以download到开发板中的inand或者其他。
3、uboot的fastboot命令将开发板伪装了一个usb从设备(主机的usb是主设备,从设备是被主设备识别的),开发板本身不是usb设备,所以当我们的开发板直接通过usb线和主机的usb接口连接时,主机是识别不到一个usb设备的。当我们在uboot下输入fastboot命令时,主机就会识别到一个usb设备,并且我们没有驱动的话,还告诉我们装驱动。所以uboot的fastboot命令将开发板伪装成了一个usb从设备。所以主机中就会识别到一个android手机设备,因为当初谷歌在做android的时候发明的fastboot,所以当时主要是用来做手机的,所以会把这个fastboot模式下的设备当成一个手机设备
4、uboot中只要输入fastboot命令,进入到fastboot模式就可以了,认为协议都是规定好的,我们只需要在主机端运行fastboot这个软件,完了就可以和我们的开发板进行通信了,主机可以通过fastboot命令与带的参数和开发板进行通信。比如fastboot flash kernel xxxx 就是fastboot命令携带的一些参数和开发板通过usb线的传输进行通信了,会将这个xxxkernel烧录到开发板的SD/MMC设备上的kernel分区中。
5.我们学习fastboot的思路就是,
在主机端的fastboot软件,我们是不去做什么分析的
我们在开发板段去分析fastboot,看uboot是如何通过fastboot命令进入到fastboot模式下的,是如何响应主机通过usb线发送过来的命令的。
6、uboot中的fastboot代码分析
(1)因为fastboot是uboot的一个命令,所以在uboot的源码中找的时候,肯定是通过do_fastboot这函数去找。
(2)当我们用fastboot命令烧录镜像等文件时,有时会出现烧录错误,说文件太大了,那是因为我们从主机端通过usb线将要烧录到开发板中的镜像文件,先放到开发板的内存中去缓冲,uboot在从这个内存的缓冲区去将文件烧录到SD/MMC设备中,在uboot的关于fastboot的操作中,会将给fastboot设置一个缓冲区,因为向着写download操作,fastboot会用到内存的,在配置头文件中有一个fastboot_transbuff_size类似的宏 ,这个宏就是来配置fastboot缓冲区的大小的。如果要烧录的镜像传输到这个内存区域后,如果镜像太大了,就会出现p_w_picpath太大了的问题。所以要改动的话,要解决这个问题的话。就可以将这个fastboot的缓冲区的大小加大即可
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。