Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水
0 u" {4 \; y9 E: v. g  Z; e/ |1 h+ S/ Z) w7 d1 c8 r
如同標題所提示的
: H1 |/ p# N4 S% p  D一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?% o6 l$ X+ U  a! }

7 A- M3 i! v) z- j" a6 o& i, P! I- P首先,一個系統必須先上電之後才會跑
2 d4 D7 I' m9 q2 U那麼第一個跑到的程式碼是什麼?; R+ `4 |+ I& Y  M$ C3 N

& _/ j3 ~! D% ]% W; w: O8 e刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一0 g  t9 G# ~+ h0 [) A
個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel* T3 L3 Y- T( \% ~/ n8 c$ w
載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)8 C  A, ^! p8 x' C7 {2 D, x" j# K2 _

( X' U8 A; \% W& K. Z那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?% a5 Q( M9 T' u) f' p
其實真實的過程並非如此單純,甚至還可以說相當複雜。+ G- d$ i# {5 q# L6 Q' R
" M' ^" ]8 c$ s. g! O; t$ T/ U, `1 m
在進入到bootloader之前,大致上還可以細分成兩到三個) t$ C# C! K8 B+ P$ h! L! C

" f, ~4 R3 n9 S1 C1) Collect Hardware Information
2 X7 O* G; B7 ^' b2 P" i2) Run BootROM
' |) D% A* E( D' N3) Initialize Boot Device& V' G- |) t, q4 {/ x8 p5 K* I: I3 o6 G

; h! \5 P( J) z) r6 G/ p+ f1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的" y2 K/ ^4 P4 a% V
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以
: `' x( O' f0 V- x通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM
5 l- c4 b) L, S* F6 z) N裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一5 y6 I2 E* b$ I/ k9 Y! o
的動作收集到的資訊,去做對應的工作,可能的工作例如  `' z# g' ]4 o  q7 y) P" f8 }
a) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)
( h+ ~* g/ E/ ]6 N) Sb) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。
* I  G  H# a" o7 @$ S' [& \
+ T# ]2 H' ^4 q& T% {5 w) p4 `3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如
' H8 b' t: S; S+ g9 q+ u" k( l0 YSATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。
4 Z5 W( X( C4 p+ j- p6 }. Z
6 f' S) a2 J3 M- Z* r以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU
6 G9 k" q6 E& l支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用
: Y8 C, h. e7 w8 n( b# H. S! J這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM
" R) k: v# }) Y; f的cost直接把bootloader放到硬碟上。
2 {0 Z/ }+ S0 }+ f& h
6 J* u5 h3 `( g0 L' L) F) B以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少
; `- S$ O% o2 V有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以
2 s% _2 |; q' L* ~; w增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。 3 }& a) D3 |) z1 J

: M7 Y5 l, _3 g6 Qblog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-11-16 10:32 AM , Processed in 0.147008 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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