第一天,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。
這之後的之後,就到瞭第二天。
水平有限,錯誤之處請指正,多謝!
##第二天鏈接,占位##
原創文章,轉載請說明出處:www.cnblogs.com/hangxin1940/archive/2011/10/01/2196964.html