|
2#
樓主 |
發表於 2009-11-28 00:45:23
|
只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM
) B" ^% J* @( P. L% D裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一- x0 k% ^5 Z& F1 T$ `/ Q" _+ [
的動作收集到的資訊,去做對應的工作,可能的工作例如 T8 x! Q% e& q+ f/ K ]4 c
a) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)
, Y4 r: e( } t* q$ bb) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。6 k: T, A0 y% _2 y, j4 n* \
$ N) O2 r- h+ ~3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如
4 ?; [% q1 P, S7 A! F0 _& kSATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。* j: b$ M& J! Y$ Z/ c0 D
: t( a2 ^' x' h- {9 A7 w0 T以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU- ^. D! ~; n2 j' V
支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用
9 V2 l S8 M9 e, I這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM% y. [3 u: A, n+ n6 N5 H6 r* E$ q7 H
的cost直接把bootloader放到硬碟上。
$ d$ H. f! @4 q/ c& o4 K
5 H& C$ p5 ~, w r1 D+ U8 Y以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少. ~4 Y$ k( \6 w u' A- ^9 t
有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以. P/ o+ {. r& w, S4 s7 i; P. y n
增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。
6 u6 z. R& g3 Q9 |* ]5 }- z9 g, O" I3 W# m% K. Q
blog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html |
評分
-
查看全部評分
|