Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[經驗交流] Before Bootloader~

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2009-11-28 00:44:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近相當忙,Blog也荒廢了好一陣子,利用一點時間上來澆澆水8 Z$ t1 E' |, O) B
7 `: S7 v* J3 X+ P7 E  W) ?  n
如同標題所提示的
/ q2 |& N4 }+ V# P% t+ u一個 ARM 的系統在bootloader之前究竟有沒有事情可以做?
8 L8 ?# E8 r8 n2 T9 m
$ r* {- c" i, J, Y1 s$ _首先,一個系統必須先上電之後才會跑
4 D' q8 W& V! B; E0 x$ Q+ x" h那麼第一個跑到的程式碼是什麼?; W) h, w# M. X

$ o. q" I7 A4 @/ ~2 w刻板印象上,聽說CPU會跑去一個固定的位置去抓第一道指令,這個位置通常是一
6 `' C; W5 Y" c% }9 K7 ~% O個flash ROM裡頭放著BIOS or bootloader,bootloader被執行之後,就會將kernel
6 I0 m) e% x% L# Y* m( q3 p載入RAM,bla..bla..bla.....最後完成開機。(以上的印象在wince or Linux皆適用。)
/ d$ x/ [! m. e4 G- y- C4 ]6 s3 \
& g- [) |& p% h5 Q+ T那麼before bootloader不就應該什麼也沒有? 因為通電後就跑bootloader了不是嗎?
3 s+ M( S8 F5 E: O' r其實真實的過程並非如此單純,甚至還可以說相當複雜。
7 Z6 |- [. {8 E& \: s. b( r. h* W7 u; M, z0 C
在進入到bootloader之前,大致上還可以細分成兩到三個
8 {: {' g' y( X) D" H8 q
( R: W- |" m2 Y. C! ^9 v+ t. P9 p: ~1) Collect Hardware Information
. X* }& S# C6 B8 k5 T+ D0 g2) Run BootROM
0 i9 l0 L2 Q* k6 g# Z0 D/ q+ {3) Initialize Boot Device
/ A. G$ n& @' ?1 X- Q+ M% x  j* X: N9 _5 ^- h+ O6 A* K8 |
1) 第一個動作是收集硬體的資訊,主要包含CPU跑多快?是哪種記憶體?跑多快?這個收集的
0 k- C) L$ A4 X- s8 m動作通常由硬體做,或者是固定的資料(因為板子layout好就固定,不需要改來改去),所以6 H) ]( ]. T+ `" I
通常非常快就結束。結束後,CPU這時候才會真正被通上電源。

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂1 踩 分享分享
2#
 樓主| 發表於 2009-11-28 00:45:23 | 只看該作者
2) 上電之後,CPU其實不是去外部的flash ROM拿資料,而是在那內部自己本身的一個ROM7 E6 n6 T# r: c. x$ D
裡頭拿資料開始執行,這個ROM通常叫做BootROM。BootROM裡頭的程式就分析剛剛第一
8 o) K' {( G8 n, u/ K/ H的動作收集到的資訊,去做對應的工作,可能的工作例如4 D+ M" d' Q3 y* I) u4 [7 R
a) 設置程式執行的stack (需要用到CPU裡頭的SRAM or Cache)( D( [& r  d! J; E% P
b) 初始化DDR RAM,以便可以將bootloader執行使用(有些系統還是放在bootloader自己做)。; w7 g2 J* e7 {
: r# T8 f5 ^& R
3) 一開始的初始化結束後,接著就可以初始化可能放置bootloader的地方,例如
1 C3 I# ]( p: D7 kSATA/PCIE/外部FLASH ROM等等。這樣便可以到這幾個可能的位置去找到bootloader。
- R4 m1 e( x2 O* O0 Y
  Q2 Y% J. e; o1 o以上就是在進入到bootloader可能的動作,CPU會支援這樣的功能,原因是希望可以讓CPU% C* O+ i) \: G6 q% V* ?) h
支援更多種的開機方式,例如可以用SPI Flash,或是接SATA Disk等等,這樣客戶在使用
5 a5 a; T5 B3 N- z這顆CPU的時候,可以選擇的boot device就比較多種類,甚至版子就可以省掉flash ROM! I7 n0 ?& x+ ^
的cost直接把bootloader放到硬碟上。; U+ I% ^7 I4 @" I* S
, j' a: n$ s' n  y4 ]0 ^( y9 t
以上粗略的解釋before bootloader的可能的動作,會說『可能』是因為各家做法多多少少
5 O" ~& b' I! h8 D* S有些差異,但其實想達到的目的都是差不多的。而且因為bootROM可能只能燒錄一次,所以, s, h" W. t4 v1 r# X# i+ B4 _
增加一些彈性,可以避免以後無法重新燒錄,又需支援不同介面的窘況。
6 {6 X! j5 t: S( U
% p. b8 S' }/ pblog link: http://gogojesseco.blogspot.com/2009/11/before-bootloader.html

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2025-1-16 05:39 AM , Processed in 0.156001 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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