亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android內核開發:系統分區與鏡像文件的燒寫

發布時間:2020-10-14 15:36:11 來源:網絡 閱讀:6867 作者:Jhuster 欄目:移動開發

本文是《Android內核開發》系列的第五篇文章,本文重點介紹如何把編譯輸出的鏡像文件燒寫到Android設備中。


玩過刷機的朋友肯定對fastboot這個工具并不陌生,它是Android SDK中提供的一種開發工具,支持通過USB線將手頭的鏡像文件更新/燒錄到Android設備中,常用的fastboot燒錄過程如下:


fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash cache cache.img
fastboot flash recovery recovery.img
fastboot reboot


這樣,就把我們編譯輸出的鏡像文件分別成功更新到Android設備指定的分區去了。


但是你知道它的原理是什么嗎?


其實fastboot是Google定義的一種傳輸協議,它工作在Android設備與PC機兩端,就像瀏覽器常用的HTTP協議一樣,需要服務器/客戶端同時支持該協議才能完成數據的傳遞。


Google提供了fastboot協議的定義和源碼,需要設備廠商將代碼移植到自己設備的bootloader中,并不是所有的Android設備都支持fastboot,因此,我們可能買到的有些開發板的并不支持fastboot,這就需要我們采用其他方式燒錄,或者修改bootloader/u-boot源碼,讓其支持fastboot協議。


Google定義的fastboot協議地址:這里(需要×××)


由于AOSP官網被墻,因此我也把該協議定義文本拷貝了一份到我們Github中,地址如下:


https://github.com/Jhuster/AOSP/blob/master/documents/fastboot_protocol.txt


對于任何標準的Android設備而言,它都會對內部存儲空間進行分區,不同的設備的分區大小都不一樣,但通常都會有如下幾個分區:


    /boot
    /system
    /recovery
    /data
    /cache
    /misc


各個分區分別對應著各個鏡像文件在設備中實際的存儲位置。下圖所示,是ADP1/G1手機的系統分區劃分:


Android內核開發:系統分區與鏡像文件的燒寫


由此我們知道了,其實fastboot命令執行的流程,就是根據命令參數,將新的鏡像文件拷貝到指定分區的過程,其實并不復雜。


那么,不支持fastboot協議的設備一般是如何燒錄Android鏡像的呢?


其實上面也提到了,fastboot協議是工作在bootloader之中的,在沒有fastboot出現之前,嵌入式系統的鏡像燒寫通過bootloader也是完全可以完成的,這里通過示例簡單演示一下Linux內核燒寫過程 。


通常在u-boot啟動過程中,會有3秒的停留,在串口終端敲擊回車中斷u-boot啟動內核的過程,這時就可以輸入u-boot支持的各種命令與板子交互了,舉例如下:


$ nand erase 0x100000 0x200000             //擦除掉nandflash指定位置區域的數據
$ tftp 0x80000000 uImage                   //通過tftp將內核下載到內存指定位置
$ nand write 0x80000000 0x100000 0x200000  //把內存中的內核燒寫到nandflash指定的位置


同理,只要清楚存儲空間的分區和地址,就能夠通過u-boot完成鏡像的燒寫過程,當然,u-boot是怎么燒錄到開發板的呢?這是通過JTAG工具燒寫的,這里就不詳細論述了。


當然,如果系統是從外接的SDCard啟動就更簡單了,只需要把SDCard連接到電腦上,覆蓋對應分區里面的鏡像文件就可以了。


關于Android系統分區和鏡像的燒錄介紹到這兒了,有任何疑問歡迎留言或者來信lujun.hust@gmail.com交流,你也可以關注我的微博 @盧_俊 獲取最新的文章和資訊,謝謝。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长葛市| 出国| 乌拉特前旗| 宝丰县| 渑池县| 奉新县| 留坝县| 上林县| 铜山县| 同德县| 涪陵区| 建湖县| 酒泉市| 松江区| 石屏县| 巴林右旗| 九龙坡区| 昂仁县| 东丽区| 鄢陵县| 越西县| 澜沧| 尚义县| 海伦市| 四子王旗| 逊克县| 临汾市| 泗水县| 宁德市| 巴彦淖尔市| 铁力市| 合阳县| 马关县| 溆浦县| 慈溪市| 积石山| 怀柔区| 海原县| 定陶县| 汉沽区| 奉化市|