Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水/ c1 H/ b9 L" M, }
/ l5 D' u/ [0 N9 V
如同標題所提示的
( s/ F  }! r* a7 C# |) B4 U# m( ]7 q一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
  P: z- l$ c9 C" v' _7 [! z$ _! m* o: m9 ?' t
首先,一個系統必須先上電之後才會跑
( U- {; ]2 s4 k8 [/ a+ s5 a7 z那麼第一個跑到的程式碼是什麼?
8 X3 t/ |8 E: `, \, c
% Z5 r& _# ?6 F7 B% S. p刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一. f. u5 {/ G5 ~- z
個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel
. y, c) u8 c, _' [' S; \( c# v+ r載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)
  ^. ^5 a1 Y/ V1 l7 Z( X6 p! B  {5 J  ~; g, R% Z
那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?  N) {$ S* m/ F' V
其實真實的過程並非如此單純,甚至還可以說相當複雜。  }/ Z! B: }) G0 q2 C- r3 u
4 E! w( r& W! |7 R
在進入到bootloader之前,大致上還可以細分成兩到三個7 X! V8 J) g+ s; \. E' {& m
2 y% v% S0 z. M: N0 N: k
1) Collect Hardware Information3 U8 y4 \) p" z" T
2) Run BootROM
# f) I' z: ]+ U! n3) Initialize Boot Device* h+ u0 M9 M( m
5 T" e" v+ g( b! f, t& b
1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的0 |! _8 e& Y# }6 {' v
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以
- o# t. H. x: L. b5 [通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM) X1 ]7 n+ c" h0 |
裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一
5 v6 Z; L1 ?( {的動作收集到的資訊,去做對應的工作,可能的工作例如2 U  M- q( |' ~: D' g$ e
a) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)
5 e0 y, P$ l+ v( Rb) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。
  [/ c# j8 ^7 g- B( G- U" E
# b9 r2 `  q7 K$ |! p2 O  ~0 [! {3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如, t5 W- J0 ]1 ~  E
SATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。
$ l3 x) H6 V) L0 W+ x; q
0 Q: I' M) x3 q" ]' f$ n以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU; q9 J1 K# v- e( `" A% i
支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用
2 @8 l; Q- z3 J. o# A! K這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM
+ G$ v8 ]* O" l4 e的cost直接把bootloader放到硬碟上。+ V% b6 k0 {6 W" i$ V: N2 z

* d' I! ?1 f- L. w5 u以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少6 ^" D, I* g- [1 k% t
有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以
4 N9 U1 b. H- g, J) q3 M7 Z  f, [) S3 ]增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。
+ c- G" s, L, ^7 N0 J. S! n4 V8 a+ G7 u" Z+ j6 [- Z
blog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2025-1-16 08:03 AM , Processed in 0.171600 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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