Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

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

7 D. h, ]4 K8 Z如同標題所提示的
1 }: U% I4 }7 K: D; j/ l4 b一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
& O& K; q1 r) d2 \6 f/ G1 ]- G0 E
首先,一個系統必須先上電之後才會跑& M+ w: ~$ ]" }/ M1 Y# ]/ q# i# b
那麼第一個跑到的程式碼是什麼?
8 x+ _, ^$ \- V5 o. m2 u2 U" q! f0 c! o
刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一
- `7 u7 \% _/ F# A$ [, K7 G' G8 U" t! L個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel. w" X& u* W' s& {
載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)
( \. Q# h6 n6 v. X8 r* e+ P1 V) @
那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?
/ m/ [- c% y6 h3 g! `其實真實的過程並非如此單純,甚至還可以說相當複雜。
, A$ T6 j1 }& v8 h8 c
2 N( ~. i) |- ^  c' k+ ~在進入到bootloader之前,大致上還可以細分成兩到三個
" Y; @0 a' H. T: L/ w0 H* b+ q* Z
8 t) o* v: _1 y' K  \6 @6 k1) Collect Hardware Information: C, A, ]2 S1 g* g. I
2) Run BootROM. X6 P( U6 k1 N: e9 |! v  x
3) Initialize Boot Device
" z! W$ u- n& H; z4 y
$ x. b5 s/ ]. z1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的' Y  G0 u, d# o
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以4 ]6 c' w0 ~" U) K6 c) _9 |
通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM
0 t, |% \8 V# u  A裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一- Y5 I! Y; f. D  t2 j, g
的動作收集到的資訊,去做對應的工作,可能的工作例如
" P' q5 f5 V& Z# u! G0 V& Ya) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)9 J1 H; q5 s8 ^& j
b) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。
, X7 y, w0 E( Q2 {! s3 p6 J6 d
& u; K! b8 S/ W0 O: R2 n- o6 f( m3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如2 G: b$ P8 b4 q. s" h  o
SATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。" O6 t# \8 ?' k) H
# b8 P  E: |4 i4 k
以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU
3 T% M9 }- ]5 R" N8 V支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用0 n" g, F5 O$ _/ P) C% U* p# `& ~
這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM! x7 Z6 g+ G. p* ~& b
的cost直接把bootloader放到硬碟上。
5 W. h! p/ @& Z1 l3 N. t  r
, l9 E# W; D: U以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少1 h  C' ^* y9 W3 J, K
有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以8 R: m- F8 I/ R
增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。 * o( _0 q! A; v; J  c- ~

: R( O$ a3 o6 m. S) _8 hblog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-11-16 01:01 PM , Processed in 0.151009 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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