与fastboot相关的知识
生活随笔
收集整理的這篇文章主要介紹了
与fastboot相关的知识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下內容源于朱有鵬嵌入式課程的學習,如有侵權,請告知刪除。
一、fastboot的基本知識
1、什么是fastboot
(1)fastboot是android使用的一種刷機方法。
- android系統設計了2種刷機方式:fastboot和recovery。
(2)fastboot使用usb作為物理傳輸。
- 刷機其實就是鏡像傳輸+燒錄,fastboot刷機時就是通過usb線來傳輸鏡像的。
(3)fastboot是uboot中的一個命令。
- uboot進入命令行中后,可以在命令行執行fastboot命令,讓uboot進入fastboot模式;
- 刷機是在fastboot模式下進行的。
- 要實現fastboot刷機,只有開發板端uboot是不行的,還需要在主機上有fastboot.exe的軟件配合。
(5)fastboot在開發板和主機間定義了一套協議。
- fastboot是我們在開發板和主機之間定義的一套協議;
- 這套協議以usb為底層傳輸物理層,協議規定了主機fastboot軟件和開發板fastboot軟件之間的信息傳輸規則。
- 消息傳遞可以實現功能有:主機可以向開發板發送命令、開發板可以向主機發送回復、主機可以向開發板發送文件(download)
2、fastboot的工作原理
(1)uboot的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_fastbootfastboot_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部分負責處理download,else部分負責處理命令。
- usb傳輸單次傳輸最大只能有限個字節(64、256),因此當我們發送比較小的東西(譬如命令)時可以單次傳輸完畢;當我們發送比較大的東西(譬如文件)時就必須要分包發送。
(2)down后的響應機制。開發板端通過fastboot_tx_status函數向主機發送響應,主機顯示這個響應。
(3)uboot中fastboot有關的一些宏定義設置值
- CFG_FASTBOOT_TRANSFER_BUFFER:配置fastboot工作時的緩沖區地址,fastboot在執行某些功能時需要大塊內存做緩沖區(譬如download時)。
- CFG_FASTBOOT_TRANSFER_BUFFER_SIZE ?fastboot:緩沖區的大小。
- 錯誤的原因就是x210.img太大了,超出了CFG_FASTBOOT_TRANSFER_BUFFER_SIZE,因此uboot的fastboot報錯。
三、fastboot的一些命令
(1)fastboot命令響應之:fastboot reboot
- 在PC機這邊可以遠程重啟開發板
(2)fastboot命令響應之:fastboot getvar
- 作用是得到一些fastboot中定義的變量名的值,譬如version、product
(4)fastboot命令響應之:fastboot download
(5)fastboot命令響應之:fastboot boot
(6)fastboot命令響應之:fastboot flash
(7)fastboot命令響應之:fastboot oem
- oem命令是用戶自定義的,其他命令全都是fastboot協議定義的。
- 有時候自帶的命令不足以使用,oem廠商可能希望定義一些自己專有的命令,則可以使用oem命令。
總結
以上是生活随笔為你收集整理的与fastboot相关的知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSDN周报模板
- 下一篇: 中小企业信息化建设管理方案规划设计1