您好,登錄后才能下訂單哦!
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的緩沖區的大小加大即可
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。