Android 創(chuàng)世紀(jì) 第一天
第一天,google說,要有電,于是電流涌向了電路板,涌入了arm處理器,于是arm運(yùn)作了。
--xxx
嵌入式世界誕生之出,世界是荒蠻的,電流涌向各個(gè)芯片,各種處理器等待著喚醒。
arm覺醒了,開始審視自己。。。。
---------------下面內(nèi)容可能有誤,請(qǐng)指正-------------------
人們叫他Bootloader,和PC中的BIOS是哥們,負(fù)責(zé)芯片各個(gè)端口的初始化,以及cpu時(shí)鐘等等設(shè)置。
在手機(jī)中,bootloader一般就是刷機(jī)人口中的底包(并不全是,第二天會(huì)說),以摩托為例,買到手機(jī)后發(fā)燒友們總會(huì)首先刷底包,什么北歐、港行、巴西什么的底包。首先下載下來100~300m的sbf文件。底包這么大,都包含了什么?bootloader肯定在其中,但嵌入式世界誕生之初是荒蠻的,能有這么大么?
---------------上面內(nèi)容可能有誤,請(qǐng)指正-------------------
我們就打開一探究竟:
這里就啰嗦一下怎么解sbf包,方便具有g(shù)eek精神的刷機(jī)友們一探究竟
下載 SBF-Recalc ,用這個(gè)軟件解開sbf包,這里以 3.4.3_11-Stock.UKTmobile_BLUR.sbf 新新英底包為例,解壓后的文件如下:
出來了這么多東西,看到有兩個(gè)8m多的文件了嗎?他們就是linux的基本內(nèi)核,隨便解開一個(gè)第三方rom刷機(jī)包,里面都有boot.img,和這兩個(gè)文件是差不多的,準(zhǔn)確的將,bootloader是哪個(gè),水平不行,我不知道。。。。。。
一、bootloader 干了什么
一般手機(jī)當(dāng)中有很多文件系統(tǒng),從NOR到NAND、SDcard不等,每個(gè)rom當(dāng)中都存放不同的數(shù)據(jù)。
bootloader首先會(huì)從自己的rom當(dāng)中讀取一些指令,初始化各種堆棧等等,然后轉(zhuǎn)到定制廠商燒寫進(jìn)自身某個(gè)rom的開始地址的程序,進(jìn)入mian函數(shù),這里就是與看門狗、各種中斷、外圍rom等等打交道了。
二、bootloader之后的三條路
這里一般會(huì)處理兩種中斷/事件的組合,哪兩個(gè),一個(gè)是進(jìn)入工廠模式(顯示出bootloader這幾個(gè)字,當(dāng)然是刷底包啦),另一個(gè)就是Recory(恢復(fù)模式,刷rom啦)。
之后會(huì)有三條路可走
(一) bootloader燒寫模式(工廠模式)
三般情況下是用戶在開機(jī)時(shí)(bootloader生命期之內(nèi))按下某些鍵,比如開機(jī)鍵,我的defy在usb有連接時(shí)也會(huì)進(jìn)入bootloader界面。這些系統(tǒng)中斷就會(huì)被接受。其它的則屏蔽
沒什么多講的,純粹是嵌入式方面,我懂得不多,對(duì)我們來講,無非就是刷/燒寫底包(一般情況下,刷包軟件會(huì)把從bootloader到android rom一股腦的都燒寫進(jìn)各個(gè)rom[這里指硬件,存儲(chǔ)器]當(dāng)中)。
(二) Recory模式(恢復(fù)模式)
二般情況下,用戶按下開機(jī)鍵+音量/相機(jī)鍵(我說反了么?可能忘了)會(huì)進(jìn)入恢復(fù)模式。此時(shí)bootloader會(huì)加載存放recory鏡像(boot.img,稍后會(huì)講)的rom/分區(qū),并將控制權(quán)交給它,并結(jié)束自己的生命周期。
(三) 正常啟動(dòng)
一般情況下,用戶什么都不按,bootloader會(huì)正常加載系統(tǒng)內(nèi)核(某rom/分區(qū)的boot.img)。進(jìn)入到linux kernel。
三、linux kernel
boot.img是什么?img是二進(jìn)制文件,它一個(gè)文件系統(tǒng)的二進(jìn)制鏡像,前面是系統(tǒng)鏡像,后者是zimage(2mb左右),眼熟吧,linux引導(dǎo)都需要它,它就是kernel(內(nèi)核),是由bootloader在最后階段進(jìn)入的。
它都干了什么?對(duì)于linux引導(dǎo)而言,用慣了pc,確實(shí)會(huì)感覺到捎了vmlinux,確實(shí)是這樣,它包含了一個(gè)壓縮過的內(nèi)核,就是vmlinux,他首先會(huì)解壓vmlinux,并放到ram中,之后,運(yùn)行。
這里不得不說一下,我第一次接觸linux,用的是debian,當(dāng)時(shí)沒見過什么u盤,都是軟盤,自己按著debian的教程,下載了一個(gè)基于軟盤的微型Linux,就是內(nèi)核啊,啟動(dòng)一次得插換三次軟盤啊~~~,基本的命令都包含啦~~當(dāng)時(shí)的windows 98多大啊,與三張軟盤比就是指數(shù)級(jí)啊,我從此愛上了linux啊。。。。。。那么舒服的cli交互,跟dos比,一個(gè)天堂一個(gè)地域啊~~
vmlinux的任務(wù)就是初始化linux世界
首先,它會(huì)初始化一些必要的東西,比如檢測arm型號(hào)什么的,然后就開始Linux的初始化(start_kernel),初始化各種內(nèi)核子系統(tǒng),最后會(huì)開始init,注意,這是內(nèi)核級(jí)的init。
然后init會(huì)掛接根文件系統(tǒng)(/),根文件系統(tǒng)就是內(nèi)核鏡像所在的系統(tǒng)了,它存在于內(nèi)存之中。然后初始化設(shè)備驅(qū)動(dòng),之后,機(jī)友們所謂的第一屏啟動(dòng)畫面,就是在這里顯示出來的,比如我的defy,是一個(gè)摩托的logo。
這之后的之后,就到了第二天。
水平有限,錯(cuò)誤之處請(qǐng)指正,多謝!
創(chuàng)世紀(jì):第二天連接:http://www.rzrgm.cn/hangxin1940/archive/2011/10/14/2206754.html
創(chuàng)世紀(jì):第三天連接:http://www.rzrgm.cn/hangxin1940/archive/2011/10/22/2221451.html
原創(chuàng)文章,轉(zhuǎn)載請(qǐng)說明出處:
http://www.rzrgm.cn/hangxin1940/archive/2011/10/01/2196964.html
posted on 2011-10-01 03:29 黑暗伯爵 閱讀(5497) 評(píng)論(0) 收藏 舉報(bào)

浙公網(wǎng)安備 33010602011771號(hào)