Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水! r/ M! o5 Y1 u. {% K6 p
( l5 c% R. U: H. L- m9 x7 l2 s8 _
如同標題所提示的
' y! n; d1 a2 e: D一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
! |5 ]9 K, @# X. i: z" o+ H# G$ F( U  F$ J& E) F
首先,一個系統必須先上電之後才會跑" {3 i5 t( M& c  s! e
那麼第一個跑到的程式碼是什麼?
7 J# S& @& o8 J! k7 I7 d; x6 g
: |* i/ c9 s  |( R% V4 X刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一. Y" v9 r$ _$ U( ]2 a  R# R& i$ u
個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel8 R$ A, C4 L9 V8 Q" Q
載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)
; x% F* X1 s7 [/ W% ^# Q
; V& K, u9 I0 I7 z& Q4 C7 c那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?( j# Z( f* W9 V, l7 a0 g* f5 T* ^5 N
其實真實的過程並非如此單純,甚至還可以說相當複雜。. T1 r! f; |: H7 L% _- ]/ @8 k3 p* q

4 `, T6 b. K' o! _, d( W% y在進入到bootloader之前,大致上還可以細分成兩到三個6 v, @, z  e, `% _* n- c/ J- y) A
. A2 N3 ]2 r+ d7 x, \6 g
1) Collect Hardware Information
) q. b, R4 m- m2) Run BootROM
* v4 _6 @, d5 H/ g1 \3) Initialize Boot Device! {- s  i, W% h
( `$ A9 g) ?+ P( I
1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的6 p" ]; X9 S. ]' a. J4 z% E, m
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以  F" @, t7 h0 @$ h
通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM6 ?. |: \8 N4 Z2 U
裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一
  l$ v0 ?1 C+ p9 o* B3 {; j3 n的動作收集到的資訊,去做對應的工作,可能的工作例如
' u. w4 P) w- D$ J* fa) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache); A$ v& I: P) E0 [* g4 _
b) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。
+ Y) B6 ~& w; I  A1 y3 H" s/ l4 X- Q
3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如0 t7 R9 M/ U' W) [7 c
SATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。4 ~$ D4 q8 ]$ y7 Q: B

) `, `6 x& _+ b3 y8 H6 Y: ^以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU
3 A1 @$ I" `. l6 Y支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用3 i* G& |3 {5 Y( g
這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM) K% b1 Z5 Z! ^$ [% D; C! B4 D9 }' ]. I! S
的cost直接把bootloader放到硬碟上。
! M$ I9 N# j. |# R. W9 S
0 S, ~% b6 s3 f& Y以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少
# A  Y& d, V) K8 M  R+ }有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以  V/ f2 P3 W) `8 O
增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。 * J& S& T& x' e) I6 b
" d7 M5 S" y% V% Z  c" O0 h" O
blog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-6-12 07:50 PM , Processed in 0.144008 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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