Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水/ r( l* K8 o4 X  U! w; C

. w9 f: a3 a' u1 P如同標題所提示的4 M, y  o* P( t5 x# d( n" ~
一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
; o( K# K, x. B: z
$ q: t2 p" C- Q# e首先,一個系統必須先上電之後才會跑
# e7 g( w2 p# D那麼第一個跑到的程式碼是什麼?0 V; Q- L" T& S$ G
7 z% r% |: T6 Y; W0 U
刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一
* _# F1 m2 g# S個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel
) h1 x1 r2 R4 g( K載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)
. a) {6 d" l, z& @0 ^5 R0 _1 t6 G5 X1 G; D, U0 ^
那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?
: g0 n( Y) a( c  m- u! F* X: `其實真實的過程並非如此單純,甚至還可以說相當複雜。4 a1 x5 V2 W! |8 h3 I( L

1 J9 H- h& X0 e9 h3 N: i在進入到bootloader之前,大致上還可以細分成兩到三個
& n2 @- B/ {% |! T$ r
$ n1 x, z, F4 f  [9 A1) Collect Hardware Information% a4 d1 g& T3 c* \9 m# y& j- u
2) Run BootROM9 O, Z& [7 v% G
3) Initialize Boot Device
1 v& D; `6 Y4 A
/ @6 |" v4 H9 b" l. M! W8 U  c! n1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的
. j9 e4 D8 ^- C6 d動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以7 }  w0 ]1 v5 `
通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
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

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2025-1-16 10:59 AM , Processed in 0.156000 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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