Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 4006|回復: 1
打印 上一主題 下一主題

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水2 s8 f, h6 p$ R1 Z1 m* W2 [( m- t
% X+ J- G, P6 H. X8 Z7 d
如同標題所提示的
( t) O* E/ ~+ I1 L' {* x+ T6 E一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?; I& g; @% k6 i3 D! j) e, B. g: J

: ^& T* T3 W  o+ N8 Z' i! c首先,一個系統必須先上電之後才會跑
2 q4 }. H* F3 H那麼第一個跑到的程式碼是什麼?
, [) S1 b* k2 e+ W; @: t; p
& P' j7 f# q6 |; d刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一' q1 H; x1 w* E) p' m& m
個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel) l; Z5 e" y* T! }6 q
載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)
8 _$ Z0 M# Z9 M8 Y6 z" R; G- R% h
那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?
; G, j8 e# A) s( x其實真實的過程並非如此單純,甚至還可以說相當複雜。0 E: L5 d: i* s/ ?

7 L3 s$ c9 T4 w/ `9 T3 R在進入到bootloader之前,大致上還可以細分成兩到三個
$ N, D; k  P- s
; ?3 e) r5 ~4 ~$ e' w1) Collect Hardware Information
1 y# ^! F7 ^3 A4 v! C( h2) Run BootROM
; U- T: i. J8 x4 E; j, q6 M3) Initialize Boot Device
. N7 D1 s$ w; N4 B$ j- K
* R2 \8 Q) }! w) C7 X1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的, K4 t) I  y  P# M6 f/ K
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以( S$ g' E" N- _0 T9 D( J
通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

參與人數 1感謝 +4 收起 理由
mobile2 + 4 這個議題, 在我剛開始接觸到一些CPU的時候, ...

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM
8 ]" D9 P( v( A/ w, x裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一8 N- g* f) `# J9 q  U2 U2 ^& N
的動作收集到的資訊,去做對應的工作,可能的工作例如6 n  C; B) P, X
a) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)
, _$ v: V3 Z% H% u1 ~b) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。
& o7 Y% h. E6 _& T% W$ Y9 @4 c/ x, k, @  [( Q& C
3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如
& z/ M+ C8 A' D& e$ t$ h2 Y2 aSATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。
& R* c: s# i% t5 z( X5 L8 U( y" a; P) T' O  }
以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU4 I% ]1 ^1 T* c1 s2 [: r$ L) Z6 ^
支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用
9 p/ r% v, Q# h1 F; N這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM- w5 r! Y) B# Y7 J7 L
的cost直接把bootloader放到硬碟上。
( h- p, H$ m0 m$ V  S5 n
9 ^- N; B9 X7 w; o/ ^以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少1 }5 e) W" Q. Q6 ?+ F9 Y* S: `
有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以
* j6 ]5 h' a" z5 h4 {增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。
: R6 R; x7 f+ c# D/ W( [7 s0 d8 ~# W/ }1 d( w. ^
blog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

參與人數 1感謝 +2 收起 理由
mobile2 + 2 說明的很清楚, 感謝分享

查看全部評分

您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-11-16 12:35 PM , Processed in 0.150009 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表