找回密码
 注册
关于网站域名变更的通知
查看: 72|回复: 0
打印 上一主题 下一主题

BootLoader都有几种

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-5-30 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
首先区分一下BootLoaderMonitor的概念。严格来说,BootLoader只是引导设备并且执行主程序的固件;而Monitor还提供了更多的命令行接口,可以进行调试、读写内存、烧写Flash、配置环境变量等。Monitor嵌入式系统开发过程中可以提供很好的调试功能,开发完成以后,就完全设置成了一个BootLoader。所以,习惯上大家把它们统称为BootLoader/ m- H: f2 B3 h3 P5 a$ O
目前,嵌入式系统中广泛应用的BootLoaderU-BootviviblobARMboot等。嵌入式系统中硬件的种类繁多,差距较大,而BootLoader是严重依赖于硬件而实现的。不同的CPU体系需要不同的BootLoader,即便是同一种体系结构,由于其它硬件设备配置的不同,如板卡硬件地址的分配、RAM芯片的型号等,也需要对BootLoader作一定的修改才能使用。因此,开发人员需针对不同的处理器和开发板,对BootLoader进行定制,来实现不同的功能。
8 z. ?, f! @4 h3 \    Linux的开放源码引导程序及其支持的体系结构见表1。5 E' H; ]. q1 X* C& m( g! ^  C% M$ i
1 e9 V, Z, n  R8 O1 g" v5 \  ]' m; D" W7 K: n" `! T+ S6 d7 ^- k
  开放源码的Linux引导程序" k; u  u3 S+ ~1 f4 {4 A. S" T. `3 \4 w8 a% U) W5 p3 I- W
BootLoader
9 w" s1 ]( U9 ^: s* H4 w0 Q
描述: l1 o( F' p4 K; ~; ]1 M
6 o" f6 ^$ [# h% g1 s
x866 }, h3 Q5 {; T% d0 g7 `: o: f+ b+ v# }3 u% g3 i
ARM/ m3 x3 q5 A* ]2 V9 z; D  P, b. g% o2 Q
PowerPC) X  K3 k& h* p- x/ i- s* K
" ^- y! b4 ~7 M. j$ i
LILO. i& c+ V3 f; b3 m& c2 [
Linux磁盘引导程序! s) u& r- i5 _1 x- E
/ A+ m7 p* K5 O  B# f
1 _& {% p4 g$ M9 t2 c* y8 X, ?3 i" R0 Y: @3 _  [" f
* t9 B5 ]6 |7 H- r( _7 k
- |& ?# G1 K1 M' D, |* e
3 w) K3 m: T$ u( e5 r- j
$ T& ?$ H6 s7 G, l* W: L" c5 y
GRUB3 ]2 h& g  }) e4 d  @: _- N1 A! C% Z% j" S- ~
GNULILO替代程序9 G0 B3 h0 h# p! t6 J. v0 G; t* s2 W/ x' d  p8 O0 T
  x! ~* L7 z) `
2 `$ z/ O- c$ {0 w4 H& [; ?
' x2 v0 F* E& Q; h* K
" R) g/ t6 {% j9 U
Loadlin" ]2 N8 M8 o, H+ ]& f* W9 d
DOS引导Linux( y$ X( J2 ]& f6 Z6 @8 n- |6 z; Z, Q" \, o9 W* u6 J9 n0 v3 A
) l; q) X9 j4 s0 O8 @  ^. q
2 Z# M4 {% S$ ?6 w2 y6 w
7 R- t  r( V2 f; r$ C& V2 t$ U; N1 g2 l1 Q7 x8 s% S
/ j; u: G1 O( c+ o; f, w. A- v' q
ROLO1 `; j- c: \% k) I) a) M( ?; J' Y- ], x; C* w
ROM引导Linux而不需要BIOS5 m, z2 a! B& v, o0 u3 V: d( e- a% t6 s1 e

; ~2 I! A% e3 v: m
% I" t  g8 m! y( v& D
! ]3 Y3 R1 t  K# ^6 z
3 |6 e$ r+ ^/ }8 W
Etherboot. Y/ x' G8 r. u# {( P$ ^, n( ^# p, X. r$ N. }6 _6 B
通过以太网卡启动Linux系统的固件+ m( s" z8 U1 K" m' u8 V2 a6 l% U2 D  `9 d7 c; y1 w; i: R
9 s3 r* v0 }3 m( H2 ]
! G. ?+ }1 F) w
! i' U  ?& E  n5 l8 Z; p( {4 T# {5 ?5 `% m6 Z
6 h7 _3 K+ q% T- i
LinuxBIOS1 d5 ?; Z$ E: Z# h
: L% }/ F  V  M+ ~7 {
完全替代BUISLinux引导程序0 H* P- z- I* y2 [' a; K" n
& Q( x, i  C" n+ R* M) r3 P1 L/ e
. w# G# ^* l1 U; x" G
, K+ ]) L% W6 p- F7 y% Z) `% Q/ q
/ H5 K5 z+ o3 I; \
: Q( \3 U; X, g+ R
BLOB( `6 P# G- j) z3 C
  V& a* m7 x# z/ D2 S/ C
LART等硬件平台的引导程序3 s# ~& z- B6 d0 ^
" ?+ a$ c2 F; o" }2 T3 e
+ w, J) h' y3 k# A) X3 V% q2 G/ u+ V. A8 M! x5 z; f3 }; V
$ `% v7 j; q( o; M% _& M. A$ E6 {. [# h
: {' |/ u  T: q2 g
U-boot& T, x; @6 e- Y
3 g- m8 `. V, s
通用引导程序5 Q  n  X0 W( E1 M" \5 _+ v2 t4 ^$ ^

( Q& a/ l0 W" D; F0 C
/ }# r" K( F7 k8 L

- `2 ~8 `4 l4 b
RedBoot+ O% c8 w0 G! O# I& `4 l
& l: K, G$ V% j: ~9 N) p2 G* y! j
基于eCos的引导程序8 h. _0 k7 [# i3 W
5 n$ _  B- Z0 Y7 |' _6 T
! _0 z3 r+ E) Q$ C7 |5 N- R4 b
/ d6 v0 W: _) _5 \

9 j1 g. w. L- {
& p+ w5 _8 f* r* r0 p0 f6 @
下面,对嵌入式世界里几种常见的BootLoader做一简单介绍。' i! m2 ^7 B# a5 F
! F! _: t/ a7 E

5 _; P# s  E+ K4 {5 B2 W0 f1 U-Boot( d. d/ l0 `: D! d& n
2 ~$ o# O9 D; z$ f- u  }* ]9 s. D$ l: o5 u
+ E+ F/ F7 C; p2 d3 v- ^' C; y+ q7 i% a
( i& g) Z% I8 |+ q7 O, nU-BootUniversal BootLoader)是遵循GPL条款的开放源码项目,是在PPCBoot以及ARMBoot的基础上逐步发展和演化而来,现在U-Boot已经能够支持PowerPCARMX86MIPS等体系结构的上百种开发板,已经成为功能最多、灵活性最强,并且开发最积极的开放源码的BootLoader
, ]8 [* n+ M' W) Q/ EU-Boot提供大量外设驱动,支持多个文件系统,附带调试、脚本、引导等工具,特别支持Linux,为板级移植做了大量的工作。: W5 }9 c. {- E& X$ O+ b( m: B; ^; Z) @- i: t
U-Boot源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅支持嵌入式Linux系统的引导,而且还支持NetBSDVxWorksQNXRTEMSARTOSLynxOS等嵌入式操作系统。  F+ z. [& U- p& c
U-Boot可支持的主要功能如下:9 W. E& h( w) K8 O
· 系统引导:从FLASH中引导压缩或非压缩系统内核、支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统。
3 _% N1 M3 E6 E" l1 a, l· 基本辅助功能:可灵活设置、传递多个关键参数给操作系统内核,适合系统在不同开发阶段的调试要求与产品发布,尤其对Linux支持最为强劲;支持开发板环境参数多种存储方式,如FLASHNVRAMEEPROMCRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好。4 h6 o' X" q: f) }: m$ |# C( u- B; }/ M' c% w: @: ]$ v
· 设备驱动:驱动的支持包括串口、SDRAMFLASH、以太网、LCDNVRAMEEPROM、键盘、USBPCMCIAPCIRTC等。
% }* \* I6 S: i5 f0 s' Y1 O· 上电自检功能:SDRAMFLASH大小自动检测、SDRAM故障检测、CPU型号。# g+ l5 d4 D3 L' P: P2 n# Q1 x" V
· 特殊功能:XIPeXecute In Place,芯片内执行)内核引导,这样程序可以直接在Flash闪存内运行,不必再把代码读到RAM中。, J+ f" P5 k' l4 W; V
$ c1 T& x5 h1 [. H' P9 nU-Boot源码包的下载网站:http://sourceforge.net/project/u-boot8 J( o6 ~  W0 r. N# R; L& ^* t( b6 O8 o2 K4 m" w& ~
" `/ O7 @: ~! N, K" i5 A9 G& b' x5 C3 `8 y0 n2 j  q
' y8 @; D& a: j/ g7 F& d& n, |
2 vivi: P# S" I9 U0 K" l" @
7 S8 T- g8 {" M. T% a$ b- m: q: ~  C" B( l7 j% B5 Y
7 W& v4 k0 f  m6 q/ C5 d! g7 c% @6 Z  |! }0 Y0 G
vivi是由韩国Mizi公司开发的一种BootLoader,专门针对ARM9处理器而设计,支持S3C2410x处理器。和所有的BootLoader一样,vivi有两种工作模式,即启动加载模式和下载模式。当vivi处于下载模式时,它为用户提供一个命令行接口,通过该接口可以使用vivi提供的一些命令。+ _. H. s9 s; o& N' j
8 v; O+ O3 A5 f; g4 f) O+ f9 pvivi作为一种BootLoader,其运行过程分成两个阶段。& y8 g2 ?& T4 n& l. q
+ ?# p1 L7 y9 e! [/ y3 u. h第一阶段的代码在vivi/arch/s3c2410/head.s中定义,大小不超过10 KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C2410的一些寄存器、时钟等的初始化并跳转到第二阶段执行。4 R7 s5 V$ O+ D
    第二阶段的代码在vivi\init\main.c中,主要进行一些开发板初始化、内存映射和内存管理单元初始化等工作,最后会跳转到boot_or_vivi()函数中,接收命令并进行处理。7 s5 C3 ?2 ~: h
8 j+ d- r9 e' |/ J2 `
" X& w  p3 H2 N9 i" w+ {: z5 l4 j# f: Z: ^" c  {2 _+ R, L2 N1 O, d# }8 |
3 Blob- G: C& f1 b- g) W5 h, [0 B" p; X( @9 r. T. O. u! A
& N! D0 z7 z1 j% V0 b
1 _9 W: q' [5 e2 v! t" x# U' ^
# K' R. Y6 r) J4 K1 BBlobBootLoader Object)是由Jan-Derk BakkerErik Mouw发布,专为StrongARM构架下的LART设计的BootLoader8 e; U8 n* E5 w+ I( n& s: L( s# ^' p; J8 |
Blob支持SA1100LART主板,但用户也可以自行修改移植。Blob也提供两种工作模式,在启动时处于正常的启动加载模式,但是它会延时10秒等待终端用户按下任意键而将Blob 切换到下载模式。如果在10秒内没有用户按键,则Blob继续启动Linux内核。" A0 ^' }& {2 ]5 K* K7 _  \
       Blob功能比较齐全,代码较少,比较适合做修改移植,用来引导Liunx,目前大部分S3C44B0板都用Blob修改移植后来加载uCLinux' X; v& z, a% I, I6 V. ~
+ l1 k9 l3 Q2 @2 b5 G: ], z9 O5 y( U( ^! E( Q  K, }
) R" \; D0 J0 o' v* A: R- R9 @" k1 W& j) {% v4 r( u( m
4 ARMboot
5 _* d" t* d' R& \/ y! k" w( a- l  O+ Q
  ^, F7 L2 y( ^( V: s+ Z/ b
' f. r( Y; n$ j( h; y- c7 dARMboot是一个ARM平台的开源固件项目,它严重依赖于PPCBootARMboot支持的处理器构架有StrongARMARM720TPXA250等,是为基于ARM或者StrongARM CPU的嵌入式系统所设计的。ARMboot的目标是成为通用的、容易使用和移植的引导程序,非常轻便地运用于新的平台上。总得来说,ARMboot介于大、小型BootLoader之间,相对轻便,基本功能完备,缺点是缺乏后续支持。ARMboot发布的最后版本为ARMboot1.1.02002年终止了ARMboot的维护,
0 P4 e0 @' n0 ~! m, A) F9 a9 t4 V  O. H0 h
6 K: ]5 x# r3 m' ?3 w' k5 w5  Redboot3 B3 f5 b; k: R. s% v
RedBoot是标准的嵌入式调试和引导解决方案,是一个专门为嵌入式系统定制的引导工具,最初由Redhat开发,是嵌入式操作系统eCos的一个最小版本,是随eCos发布的一个BOOT方案,是一个开源项目。现在交由自由软件组织FSF管理,遵循GPL。集BootLoader、调试、Flash烧写于一体。支持串口、网络下载、执行嵌入式应用程序。既可以用在产品的开发阶段(调试功能),也可以用在最终的产品上(Flash更新、网络启动)。
, V3 P) |  T2 _% N/ G7 z& r      RedBoot支持的处理器构架有ARMMIPSPowerPCx86等,是一个完善的嵌入式系统BootLoader% B4 o  [4 k+ w. J/ D
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-23 08:05 , Processed in 0.140625 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表