Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水$ A1 k1 w+ K/ G5 Y) [0 g9 W+ a0 A
( ^# @& S# m: K9 v: u3 ^( `
如同標題所提示的
6 ?# C9 Q, g) M% T% o* b一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?& u: s0 y, ]' t$ t9 E: g% y' }
  z, C/ G( C% V) l% S4 s; r- @/ ]
首先,一個系統必須先上電之後才會跑
$ y0 [! }. s) v! H' z- `那麼第一個跑到的程式碼是什麼?* ]: u0 j" K4 `6 o  p

  H* A; m1 ?5 z3 ?5 M% l0 P刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一
* X5 F( y5 y* }0 I% g0 d' f個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel
$ o2 R& C! a' I, y載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)
  N5 X: ]; |1 G2 J$ M. s' Y
$ N5 P- _0 M- c$ ^那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?0 K( g3 b" F. x. Z$ ]
其實真實的過程並非如此單純,甚至還可以說相當複雜。9 a) r+ ^7 j/ M- ^, B
" O8 j" G7 R9 I& [8 g
在進入到bootloader之前,大致上還可以細分成兩到三個! q+ W2 s! p8 h* ~$ S4 P

5 g1 I; p& R8 T4 K8 e7 x1 k1) Collect Hardware Information
  O  t  \6 @( P+ d. a: r2) Run BootROM0 B/ l: `. ]) h3 q8 `
3) Initialize Boot Device$ d6 D, C/ l" z* f7 Z' U0 j, \  X
9 X2 G% {5 D' S/ W
1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的# I5 d& b: W/ _; u7 R) {0 m& _' N, k
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以
+ B; ?  {- O, f" ]. C& K1 H通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM
5 z0 l& |) ~1 |裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一# L% h0 n% E4 `: B
的動作收集到的資訊,去做對應的工作,可能的工作例如
2 x' z* z. s( u( ka) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)5 u8 v3 f: ?9 X8 F! V; ~8 j
b) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。( Q9 F+ K7 ?+ C5 e, C& N- S

$ [& E& L1 n7 {3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如* ~# d( i/ u/ j/ Y* W8 ~
SATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。
, ^' p: t* z& p- b2 F$ j
- n9 J/ ]4 H/ D' U" h以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU& p0 i+ y0 ~. Z6 L4 |! g  u  ?
支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用0 ]" D' w9 d& D8 }
這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM
3 Y9 G: w$ B* [% m9 j/ v的cost直接把bootloader放到硬碟上。# _% j; ~4 w# |( R0 g, z" s2 ]1 m
! y9 s8 i7 E. k# `/ U9 q0 j
以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少
' f; N  v& G7 d; D有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以. F7 w% R; y; N7 e: W) q
增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。
8 U! T5 Q" W( Y: L! X& i6 w! O9 k6 R/ F! B9 R2 z( k8 v
blog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-5-17 01:08 AM , Processed in 0.102013 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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