设计logo免费网站,wordpress 调用,谈谈你对互联网营销的认识,网站百度地图提交以下内容源于朱有鹏嵌入式课程的学习#xff0c;如有侵权#xff0c;请告知删除。 一、fastboot的基本知识
1、什么是fastboot
#xff08;1#xff09;fastboot是android使用的一种刷机方法。
android系统设计了2种刷机方式#xff1a;fastboot和recovery。
#xf…以下内容源于朱有鹏嵌入式课程的学习如有侵权请告知删除。 一、fastboot的基本知识
1、什么是fastboot
1fastboot是android使用的一种刷机方法。
android系统设计了2种刷机方式fastboot和recovery。
2fastboot使用usb作为物理传输。
刷机其实就是镜像传输烧录fastboot刷机时就是通过usb线来传输镜像的。
3fastboot是uboot中的一个命令。
uboot进入命令行中后可以在命令行执行fastboot命令让uboot进入fastboot模式刷机是在fastboot模式下进行的。
4fastboot需要主机端的fastboot软件配合。
要实现fastboot刷机只有开发板端uboot是不行的还需要在主机上有fastboot.exe的软件配合。
5fastboot在开发板和主机间定义了一套协议。
fastboot是我们在开发板和主机之间定义的一套协议这套协议以usb为底层传输物理层协议规定了主机fastboot软件和开发板fastboot软件之间的信息传输规则。消息传递可以实现功能有主机可以向开发板发送命令、开发板可以向主机发送回复、主机可以向开发板发送文件download
2、fastboot的工作原理
1uboot的fastboot命令将开发板伪装成一个usb设备。
开发板并不是一个usb设备因此开发板直接插到电脑上电脑是没有反应没有提示发现设备需要装驱动的。伪装之后开发板就被主机windows识别成一个安卓手机了。
2主机的fastboot软件和开发板的fastboot程序通信。
开发板端只要执行了fastboot命令进入fastboot模式即可之后不用再进行开发板的端的操作。主机端通过运行fastboot相关命令传递不同的参数来实现主机端和开发板端的通信。譬如主机端执行fastboot devices则这个命令通过USB线被传递到开发板中被开发板的fastboot程序接收和处理然后开发板向主机端发送反馈信息主机端接收到反馈信息后显示出来。
3学习fastboot时分析代码的思路
主机端fastboot.exe的源代码没有fastboot协议虽然能找到但是很枯燥所以主机端没有去分析的。开发板端主要分析点就是uboot如何进入fastboot模式fastboot模式下如何响应主机发送的各种命令。 二、uboot的fastboot代码分析
1、do_fastboot函数
do_fastboot函数本身涉及到很多操作SD/Nand等磁盘的主要目的是为了刷机。要完整的分析fastboot的函数细节很复杂很麻烦我们并不是要做这个。
2、rx_handler函数 函数调用关系
do_fastboot fastboot_poll fboot_usb_int_hndlr fboot_usb_pkt_receive fboot_usb_int_bulkout
fastboot_interface-rx_handler函数指针
指向cmd_fastboot.c/rx_handler
找的过程涉及到USB物理层通信的一些概念和理解相对比较复杂。uboot的fastboot最终是通过rx_handler函数来处理主机端fastboot软件发送过来的信息的。fastboot协议的命令实现都在这个函数中提现。所以这个函数的分析就是重点。 3、代码分析
1大文件download机制
rx_handler函数中通过if和else分成了两部分if部分负责处理downloadelse部分负责处理命令。usb传输单次传输最大只能有限个字节64、256因此当我们发送比较小的东西譬如命令时可以单次传输完毕当我们发送比较大的东西譬如文件时就必须要分包发送。
2down后的响应机制。开发板端通过fastboot_tx_status函数向主机发送响应主机显示这个响应。
3uboot中fastboot有关的一些宏定义设置值
CFG_FASTBOOT_TRANSFER_BUFFER配置fastboot工作时的缓冲区地址fastboot在执行某些功能时需要大块内存做缓冲区譬如download时。CFG_FASTBOOT_TRANSFER_BUFFER_SIZE fastboot缓冲区的大小。
4如果刷机时烧录uboot和zImage都正常但是烧录android镜像x210.img时错误提示image too large……
错误的原因就是x210.img太大了超出了CFG_FASTBOOT_TRANSFER_BUFFER_SIZE因此uboot的fastboot报错。 三、fastboot的一些命令
1fastboot命令响应之fastboot reboot
在PC机这边可以远程重启开发板
2fastboot命令响应之fastboot getvar
作用是得到一些fastboot中定义的变量名的值譬如version、product
3fastboot命令响应之fastboot erase
4fastboot命令响应之fastboot download
5fastboot命令响应之fastboot boot
6fastboot命令响应之fastboot flash
7fastboot命令响应之fastboot oem
oem命令是用户自定义的其他命令全都是fastboot协议定义的。有时候自带的命令不足以使用oem厂商可能希望定义一些自己专有的命令则可以使用oem命令。