Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水
0 o& b2 Q1 G! A" d7 O' t* x9 N1 }) J( N# |8 h$ C
如同標題所提示的6 A6 |7 S" v( ^1 i0 f
一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
, t$ _5 |4 U  w3 x4 u" A! J& {' k3 F; x: b1 D+ X
首先,一個系統必須先上電之後才會跑- L! V0 [8 l( l9 E
那麼第一個跑到的程式碼是什麼?
9 p1 j, {) h- K4 E: y0 F: B# g# ~$ C; ?" ]
刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一' ?6 N: b1 v+ f1 _
個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel
) G- S  f: @& A5 c載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)+ i" u+ z; |: _# z$ U1 u6 T" g

2 C: A& _8 k; ~8 p9 _; [# ?: Z+ i那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?& j) b& G4 ~  N7 V1 F. E
其實真實的過程並非如此單純,甚至還可以說相當複雜。
" d, J: C! D! b0 O' n
9 X) p% W9 V) K2 m; O  l在進入到bootloader之前,大致上還可以細分成兩到三個
% N: z, a" B0 w. M. o) A
* c7 D+ @3 @9 Y, s# j9 f. G6 V8 V1) Collect Hardware Information
; N6 e+ h8 @+ [) p" C2) Run BootROM" v. g/ o7 s  S+ A& j( o  p
3) Initialize Boot Device, |. Y5 L$ ?! }& Q7 q
, H0 ?$ P+ k# j) f1 G5 w- e9 |
1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的. z) F9 N7 E4 p' j( G
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以
, ~, I7 w6 ]& g# d! e7 O通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM2 T* A! F; \# `
裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一0 r) _. n2 J) Z: j& C) T- ^/ w
的動作收集到的資訊,去做對應的工作,可能的工作例如
0 r7 w4 e8 W& [" ]: m$ _a) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)
$ G" G, Y5 m7 b. Y6 f6 R$ pb) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。
8 _8 e) I3 z4 [3 b$ `9 c& s' P0 m. M4 T* u* s. F. u8 W! G2 n! W
3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如! A, q4 Q& M0 a! s
SATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。
8 c* c' R+ X3 `. W$ B' O& ^
6 F& j- d: x0 v- T以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU
/ _* C5 `9 ]" z4 E8 q支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用3 N( G8 r0 w0 H' Z) \/ h. R
這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM7 L+ v% @2 E2 |4 v
的cost直接把bootloader放到硬碟上。- P, W" H1 ]- ^9 i$ j5 @

1 B: }0 J, F' m& N# c: b以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少
/ E8 K' M# A$ K- A- C4 k4 y. g有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以
% H" Q+ s- M: Y- u* m  R: U增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。
7 J+ ?7 ]" h( W0 q4 f! v1 s, |2 b7 ~3 t. g( ~; _8 y# }) L4 k' B9 M( O' B
blog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-9-28 07:26 AM , Processed in 0.172010 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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