|
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水
: N; c$ X+ {9 ]( i0 V9 h9 V8 o# O" i, E# `/ f
如同標題所提示的
$ _6 w9 ?3 k$ y: n9 c一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
$ D3 l x. c& y0 o; J8 A4 R5 x3 H; X. r
首先,一個系統必須先上電之後才會跑; r2 g2 k" A8 q/ K7 L
那麼第一個跑到的程式碼是什麼?. j9 x! j- c$ k# w' u
! R% R4 F8 Z# G' _ v& d9 a4 Y! G
刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一. d: I, H9 Q* u
個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel
' {/ a- \5 G4 ~: I# W1 d& S Y載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)
4 B# J$ H7 E, ^* U
% n" s0 \3 e' ^那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?
& p" q; ^( [' v$ C% q9 S' c其實真實的過程並非如此單純,甚至還可以說相當複雜。
+ t) s8 Q% x- ^& l t9 H" A. r* b; y% V1 |. B
在進入到bootloader之前,大致上還可以細分成兩到三個
3 p2 K$ {" y# J- U, J }! H
q1 P) j6 B! [4 ] g1) Collect Hardware Information
0 K# ]0 m) v) a. B e, i2) Run BootROM
+ z/ Y$ h- J. V3) Initialize Boot Device
4 [# h+ W6 V% _2 E6 o
( i$ ^9 N6 g* b% r0 [" J1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的
. y+ D- _4 H- h5 _: X# M7 k9 S動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以9 V$ c2 x% B& u! ~* t, F
通常非常快就結束。結束後,CPU這時候才會真正被通上電源。 |
評分
-
查看全部評分
|