|
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水7 @% k0 ^0 @8 A6 F8 C9 m
8 S0 @3 J% ]9 L4 M4 n( O8 m如同標題所提示的
4 d! e3 m7 w4 X8 g一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
; V8 q% y$ y" K+ N8 O- T& O" Y. _! \8 f
首先,一個系統必須先上電之後才會跑
I% m0 u5 g- `4 \那麼第一個跑到的程式碼是什麼?! ]$ N, u2 O3 t, h1 Z$ W+ c; ?
- [. ~* M* C- s9 U# H刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一
7 i$ c9 O0 {9 l9 I個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel1 q9 N' ~* x' T, T3 U
載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。) I' e$ n+ k7 I0 X
' M( }0 O _2 a1 H1 U( w9 f9 A
那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?
+ j* f5 N# e/ s9 d4 L- U+ y其實真實的過程並非如此單純,甚至還可以說相當複雜。
7 D$ q- o! y, J) H D. d) {# u
- [2 {, h9 a. w# r- K在進入到bootloader之前,大致上還可以細分成兩到三個
`9 v( p T# I* j1 s" U& z% K( ]
! q0 F- d; r' @. v5 A1) Collect Hardware Information
6 c: r8 M& H; s j$ {2) Run BootROM
% w" l' y H- d7 c( K7 G4 l3) Initialize Boot Device
6 s2 X# ?- _' w. _( I8 y! H& i$ d+ ~& W
1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的8 Q6 a! C" K% u2 Z
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以% ^; f* @" a# w7 j& _% Z$ {
通常非常快就結束。結束後,CPU這時候才會真正被通上電源。 |
評分
-
查看全部評分
|