Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水
: N; c$ X+ {9 ]( i0 V9 h9 V8 o# O" i, E# `/ f
如同標題所提示的
$ _6 w9 ?3 k$ y: n9 c一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
$ D3 l  x. c& y0 o; J8 A4 R5 x3 H; X. r
首先,一個系統必須先上電之後才會跑; r2 g2 k" A8 q/ K7 L
那麼第一個跑到的程式碼是什麼?. j9 x! j- c$ k# w' u
! R% R4 F8 Z# G' _  v& d9 a4 Y! G
刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一. d: I, H9 Q* u
個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel
' {/ a- \5 G4 ~: I# W1 d& S  Y載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)
4 B# J$ H7 E, ^* U
% n" s0 \3 e' ^那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?
& p" q; ^( [' v$ C% q9 S' c其實真實的過程並非如此單純,甚至還可以說相當複雜。
+ t) s8 Q% x- ^& l  t9 H" A. r* b; y% V1 |. B
在進入到bootloader之前,大致上還可以細分成兩到三個
3 p2 K$ {" y# J- U, J  }! H
  q1 P) j6 B! [4 ]  g1) Collect Hardware Information
0 K# ]0 m) v) a. B  e, i2) Run BootROM
+ z/ Y$ h- J. V3) Initialize Boot Device
4 [# h+ W6 V% _2 E6 o
( i$ ^9 N6 g* b% r0 [" J1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的
. y+ D- _4 H- h5 _: X# M7 k9 S動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以9 V$ c2 x% B& u! ~* t, F
通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM
9 t4 I( F% U: ?, l9 f. N裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一
/ A" d2 d( F: r. Q; [# Q的動作收集到的資訊,去做對應的工作,可能的工作例如1 K( ?0 p* e- k' i. p7 W
a) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)+ O- f1 O( ~4 M1 J* W
b) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。
# {$ Z; |+ i: Y( f3 w) e& C( K) I/ ^- J% z( ^/ w# |4 i9 f' Y
3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如
/ U0 A% R7 K1 M5 YSATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。% M) i8 A5 M2 G
; f; C! h% {" C
以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU
# c: |- I5 z2 Q0 u" ]支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用2 ~7 s; o# |; I0 m; s( @/ r$ b2 D
這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM  u  s, t! n7 @( P3 o/ ~$ j
的cost直接把bootloader放到硬碟上。
$ S) W$ |* p: S8 r7 M2 Y# e7 u
& ^; ]9 Q2 S4 m% g' G以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少
* c$ X. K; d( }$ i, x0 ?有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以
5 H- ~3 j8 Z  ~* C% k& e$ \5 c增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。 & ]- @2 r) @* L

/ m! X; c7 c) X. N5 Dblog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2025-1-27 06:17 AM , Processed in 0.140400 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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