第一天,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