Android 創世紀 第一天

來源:互聯網
上載者:User

第一天,google說,要有電,於是電流湧向了電路板,湧入了arm處理器,於是arm運作了。

               --xxx

 

    嵌入式世界誕生之出,世界是荒蠻的,電流湧向各個晶片,各種處理器等待著喚醒。

 

    arm覺醒了,開始審視自己。。。。

 

        ---------------下面內容可能有誤,請指正-------------------

    人們叫他Bootloader,和PC中的BIOS是哥們,負責晶片各個連接埠的初始化,以及cpu時鐘等等設定。

 

    在手機中,bootloader一般就是刷機人口中的底包(並不全是,第二天會說),以摩托為例,買到手機後發燒友們總會首先刷底包,什麼北歐、港行、巴西什麼的底包。首先下載下來100~300m的sbf檔案。底包這麼大,都包含了什嗎?bootloader肯定在其中,但嵌入式世界誕生之初是荒蠻的,能有這麼大嗎?

         ---------------上面內容可能有誤,請指正-------------------

    我們就開啟一探究竟:

這裡就囉嗦一下怎麼解sbf包,方便具有geek精神的刷機友們一探究竟

 

下載 SBF-Recalc   ,用這個軟體解開sbf包,這裡以 3.4.3_11-Stock.UKTmobile_BLUR.sbf 新新英底包為例,解壓後的檔案如下:

   

      出來了這麼多東西,看到有兩個8m多的檔案了嗎?他們就是linux的基本核心,隨便解開一個第三方rom刷機包,裡面都有boot.img,和這兩個檔案是差不多的,準確的將,bootloader是哪個,水平不行,我不知道。。。。。。

    

一、bootloader 幹了什麼

      一般手機當中有很多檔案系統,從NOR到NAND、SDcard不等,每個rom當中都存放不同的資料。

    

      bootloader首先會從自己的rom當中讀取一些指令,初始化各種堆棧等等,然後轉到定製廠商燒寫進自身某個rom的開始地址的程式,進入mian函數,這裡就是與看門狗、各種中斷、外圍rom等等打交道了。   

 

二、bootloader之後的三條路

 

    這裡一般會處理兩種中斷/事件的組合,哪兩個,一個是進入原廠模式(顯示出bootloader這幾個字,當然是刷底包啦),另一個就是Recory(復原模式,刷rom啦)。

    之後會有三條路可走

 

(一) bootloader燒寫入模式(原廠模式)

 

     三般情況下是使用者在開機時(bootloader生命期之內)按下某些鍵,比如開機鍵,我的defy在usb有串連時也會進入bootloader介面。這些系統中斷就會被接受。其它的則屏蔽

      沒什麼多講的,純粹是嵌入式方面,我懂得不多,對我們來講,無非就是刷/燒寫底包(一般情況下,刷包軟體會把從bootloader到android rom一股腦的都燒寫進各個rom[這裡指硬體,儲存空間]當中)。

 

(二) Recory模式(復原模式)

 

     二般情況下,使用者按下開機鍵+音量/相機鍵(我說反了嗎?可能忘了)會進入復原模式。此時bootloader會載入存放recory鏡像(boot.img,稍後會講)的rom/分區,並將控制權交給它,並結束自己的生命週期。

 

(三) 正常啟動

     

      一般情況下,使用者什麼都不按,bootloader會正常載入系統核心(某rom/分區的boot.img)。進入到linux kernel。

 

三、linux kernel

      boot.img是什嗎?img是二進位檔案,它一個檔案系統的二進位鏡像,前面是系統鏡像,後者是zimage(2mb左右),眼熟吧,linux引導都需要它,它就是kernel(核心),是由bootloader在最後階段進入的。

 

      它都幹了什嗎?對於linux引導而言,用慣了pc,確實會感覺到捎了vmlinux,確實是這樣,它包含了一個壓縮過的核心,就是vmlinux,他首先會解壓vmlinux,並放到ram中,之後,運行。

    這裡不得不說一下,我第一次接觸linux,用的是debian,當時沒見過什麼u盤,都是磁碟片,自己按著debian的教程,下載了一個基於磁碟片的微型Linux,就是核心啊,啟動一次得插換三次磁碟片啊~~~,基本的命令都包含啦~~當時的windows 98多大啊,與三張磁碟片比就是指數級啊,我從此愛上了linux啊。。。。。。那麼舒服的cli互動,跟dos比,一個天堂一個地區啊~~

 

      vmlinux的任務就是初始化linux世界

 

      首先,它會初始化一些必要的東西,比如檢測arm型號什麼的,然後就開始Linux的初始化(start_kernel),初始化各種核心子系統,最後會開始init,注意,這是核心級的init。

 

      然後init會掛接根檔案系統(/),根檔案系統就是核心鏡像所在的系統了,它存在於記憶體之中。然後初始化裝置驅動,之後,機友們所謂的第一屏啟動畫面,就是在這裡顯示出來的,比如我的defy,是一個摩托的logo。

 

      這之後的之後,就到了第二天。

水平有限,錯誤之處請指正,多謝!

  創世紀:第二天串連:http://www.cnblogs.com/hangxin1940/archive/2011/10/14/2206754.html

  創世紀:第三天串連:http://www.cnblogs.com/hangxin1940/archive/2011/10/22/2221451.html

原創文章,轉載請說明出處:

http://www.cnblogs.com/hangxin1940/archive/2011/10/01/2196964.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.