Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水7 @% k0 ^0 @8 A6 F8 C9 m

8 S0 @3 J% ]9 L4 M4 n( O8 m如同標題所提示的
4 d! e3 m7 w4 X8 g一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
; V8 q% y$ y" K+ N8 O- T& O" Y. _! \8 f
首先,一個系統必須先上電之後才會跑
  I% m0 u5 g- `4 \那麼第一個跑到的程式碼是什麼?! ]$ N, u2 O3 t, h1 Z$ W+ c; ?

- [. ~* M* C- s9 U# H刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一
7 i$ c9 O0 {9 l9 I個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel1 q9 N' ~* x' T, T3 U
載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)  I' e$ n+ k7 I0 X
' M( }0 O  _2 a1 H1 U( w9 f9 A
那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?
+ j* f5 N# e/ s9 d4 L- U+ y其實真實的過程並非如此單純,甚至還可以說相當複雜。
7 D$ q- o! y, J) H  D. d) {# u
- [2 {, h9 a. w# r- K在進入到bootloader之前,大致上還可以細分成兩到三個
  `9 v( p  T# I* j1 s" U& z% K( ]
! q0 F- d; r' @. v5 A1) Collect Hardware Information
6 c: r8 M& H; s  j$ {2) Run BootROM
% w" l' y  H- d7 c( K7 G4 l3) Initialize Boot Device
6 s2 X# ?- _' w. _( I8 y! H& i$ d+ ~& W
1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的8 Q6 a! C" K% u2 Z
動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以% ^; f* @" a# w7 j& _% Z$ {
通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM
6 ]: ~2 J+ s$ g裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一" i/ X, h! d8 R# t' l% ?
的動作收集到的資訊,去做對應的工作,可能的工作例如% G' A  ^* ^' ]1 z
a) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)  c9 \* a( A) i
b) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。1 h# X- ^" s! _0 a" L9 W, n

% K2 S" M( _. ^! S" x' B3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如7 R: _0 S0 ^1 h  R; y2 G- k) ?
SATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。
% }; \# i3 B0 B. Q5 o& R. E
: ~9 w7 K% G8 e- l以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU/ u4 Q3 m) C; Y) g. @; V
支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用
5 S& A1 O6 A6 Y0 |這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM! T+ t4 C4 h5 K! c4 O9 V  E
的cost直接把bootloader放到硬碟上。+ n0 o% b' I8 L6 U
) D: T  U, }9 Q6 q, y  j# Q  v+ L
以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少
, ~" U) G: [+ i1 [有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以8 f! T4 @2 ^" a
增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。
" |5 B- i& L. P$ S* h) V
- w" L# e9 M/ {9 S4 ?blog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-9-28 09:25 AM , Processed in 0.158010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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