Android核心開發:系統磁碟分割與鏡像檔案的燒寫

來源:互聯網
上載者:User

標籤:鏡像   分區   燒錄   android   fastboot   

本文是《Android核心開發》系列的第五篇文章,本文重點介紹如何把編譯輸出的鏡像檔案燒寫到Android裝置中。


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


fastboot flash boot boot.imgfastboot flash system system.imgfastboot flash userdata userdata.imgfastboot flash cache cache.imgfastboot flash recovery recovery.imgfastboot 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手機的系統磁碟分割劃分:


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6D/C3/wKiom1Vq5oWRtE_BAAMq4-wztyQ683.jpg" title="2015-05-28 100412 的螢幕.png" alt="wKiom1Vq5oWRtE_BAAMq4-wztyQ683.jpg" />


由此我們知道了,其實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系統磁碟分割和鏡像的燒錄介紹到這兒了,有任何疑問歡迎留言或者來信[email protected]交流,你也可以關注我的微博 @盧_俊 擷取最新的文章和資訊,謝謝。


本文出自 “對影成三人” 部落格,請務必保留此出處http://ticktick.blog.51cto.com/823160/1656900

Android核心開發:系統磁碟分割與鏡像檔案的燒寫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.