|
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水
0 u" {4 \; y9 E: v. g Z; e/ |1 h+ S/ Z) w7 d1 c8 r
如同標題所提示的
: H1 |/ p# N4 S% p D一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?% o6 l$ X+ U a! }
7 A- M3 i! v) z- j" a6 o& i, P! I- P首先,一個系統必須先上電之後才會跑
2 d4 D7 I' m9 q2 U那麼第一個跑到的程式碼是什麼?; R+ `4 |+ I& Y M$ C3 N
& _/ j3 ~! D% ]% W; w: O8 e刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一0 g t9 G# ~+ h0 [) A
個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel* T3 L3 Y- T( \% ~/ n8 c$ w
載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)8 C A, ^! p8 x' C7 {2 D, x" j# K2 _
( X' U8 A; \% W& K. Z那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?% a5 Q( M9 T' u) f' p
其實真實的過程並非如此單純,甚至還可以說相當複雜。+ G- d$ i# {5 q# L6 Q' R
" M' ^" ]8 c$ s. g! O; t$ T/ U, `1 m
在進入到bootloader之前,大致上還可以細分成兩到三個) t$ C# C! K8 B+ P$ h! L! C
" f, ~4 R3 n9 S1 C1) Collect Hardware Information
2 X7 O* G; B7 ^' b2 P" i2) Run BootROM
' |) D% A* E( D' N3) Initialize Boot Device& V' G- |) t, q4 {/ x8 p5 K* I: I3 o6 G
; h! \5 P( J) z) r6 G/ p+ f1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的" y2 K/ ^4 P4 a% V
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以
: `' x( O' f0 V- x通常非常快就結束。結束後,CPU這時候才會真正被通上電源。 |
評分
-
查看全部評分
|