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

BootLoader都有几种

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
首先区分一下BootLoaderMonitor的概念。严格来说,BootLoader只是引导设备并且执行主程序的固件;而Monitor还提供了更多的命令行接口,可以进行调试、读写内存、烧写Flash、配置环境变量等。Monitor嵌入式系统开发过程中可以提供很好的调试功能,开发完成以后,就完全设置成了一个BootLoader。所以,习惯上大家把它们统称为BootLoader  G+ T+ i( G* w" a; y( Q) q
目前,嵌入式系统中广泛应用的BootLoaderU-BootviviblobARMboot等。嵌入式系统中硬件的种类繁多,差距较大,而BootLoader是严重依赖于硬件而实现的。不同的CPU体系需要不同的BootLoader,即便是同一种体系结构,由于其它硬件设备配置的不同,如板卡硬件地址的分配、RAM芯片的型号等,也需要对BootLoader作一定的修改才能使用。因此,开发人员需针对不同的处理器和开发板,对BootLoader进行定制,来实现不同的功能。" x4 V2 A2 e* @. G! l8 [
    Linux的开放源码引导程序及其支持的体系结构见表1。5 E' H; ]. q1 X* C& m( g! ^  C% M$ i
) R/ j% I- H  i8 f
; X2 K9 P# E) ]0 j+ H9 ^; g  开放源码的Linux引导程序" k; u  u3 S+ ~1 f4 {4 A. S" T9 v  K* j  k( K) ]3 t: j. O& u
BootLoader% r! I' N# e' {# A' z4 X) O. B+ s
描述: l1 o( F' p4 K; ~; ]1 M
# Y/ E/ Q( e& R' R. J9 [; k3 j
x866 }, h3 Q5 {; T% d0 g
/ X" B6 [: U! H$ K) k
ARM/ m3 x3 q5 A* ]2 V9 z
; a$ @- b; p& Q
PowerPC) X  K3 k& h* p- x/ i- s* K' S, O+ t5 j5 S# e" [: w: `/ L
LILO* c* u1 M+ o& u
Linux磁盘引导程序! s) u& r- i5 _1 x- E
. m( N2 A+ b/ F% X) E4 S# p
1 _& {% p4 g$ M9 t2 c; Q/ F! Q; G2 M' X& Z
* t9 B5 ]6 |7 H- r( _7 k
7 C, A: W; m( P; `) P$ {- F0 u
3 w) K3 m: T$ u( e5 r- j" G! M+ A7 ]$ b  x, T
GRUB3 ]2 h& g  }) e4 d  @: _- N1 A
/ H$ ?/ q- D4 @
GNULILO替代程序9 G0 B3 h0 h# p! t6 J. v
! u- i) l/ ^  ~% E$ v  d' A* J

. r+ w( J, D" I1 q" f& e! `+ W5 q

* T& M$ E, a. ]8 j
' x2 v0 F* E& Q; h* K4 G; T& Q# V  Q, ~$ `
Loadlin3 m" }/ N) y7 Y
DOS引导Linux( y$ X( J2 ]& f6 Z6 @8 n- |6 z
$ w5 |+ P4 ~( Z3 W2 _
) l; q) X9 j4 s0 O8 @  ^. q
# l% C2 b! ^! \* S
7 R- t  r( V2 f; r$ C& V2 t
0 q8 j4 n0 ]0 b0 o
9 x' u7 y, h3 Z9 |
ROLO1 `; j- c: \% k) I) a) M
6 j+ v4 `6 Q: V) G( c+ \
ROM引导Linux而不需要BIOS5 m, z2 a! B& v, o. E9 A% s6 C) [; D, }" k4 i5 l

' q$ n$ Q+ t4 \! _" f" e% ~

: |4 C6 r8 N+ _
! ]3 Y3 R1 t  K# ^6 z0 C) \- T3 S8 g( s2 U8 C
Etherboot. Y/ x' G8 r. u# {( P$ ^, n2 u+ B( \. s9 \  R9 S( I. }; |( Y$ \
通过以太网卡启动Linux系统的固件+ m( s" z8 U1 K" m' u8 V2 a7 k' p% @# [- L$ L/ X8 r5 i
9 s3 r* v0 }3 m( H2 ]0 n5 j/ r) D. k. W( o+ x
! i' U  ?& E  n5 l8 Z
! U, }8 R( g6 d* O* {- r/ i
2 a5 I1 Z* c: E& U& s
LinuxBIOS1 d5 ?; Z$ E: Z# h% Y  h3 v( r  x+ c& d/ P
完全替代BUISLinux引导程序0 H* P- z- I* y2 [' a; K" n
! o/ ?; B8 s! F
. w# G# ^* l1 U; x" G
, y: s& r7 F7 N7 \% S! G0 K
5 z5 _  `) p. ^- w  ]7 _8 I3 T

: e. s1 f. t; j, `
BLOB( `6 P# G- j) z3 C
% E& Y( A4 ~3 B1 n- |4 E  ~
LART等硬件平台的引导程序3 s# ~& z- B6 d0 ^( j+ }. W/ H. w
+ w, J) h' y3 k# A) X3 V% q
. J, A% f+ w% R! O( b
$ `% v7 j; q( o
, P' m8 |! J, [7 D5 j

) I8 p0 a3 L5 v. {# R
U-boot& T, x; @6 e- Y% r, X1 P" F9 B
通用引导程序5 Q  n  X0 W( E1 M
* r9 i" `6 R# z+ I2 w

% z  P; K2 C4 j0 [
) W: X0 {2 O" l- c
. _2 Z, U' I% @# O/ d- G8 y& M
RedBoot+ O% c8 w0 G! O# I& `4 l$ _; c' T3 s* q* e6 q8 R
基于eCos的引导程序8 h. _0 k7 [# i3 W( J& c. ^2 L, h/ `- t
! _0 z3 r+ E) Q$ C7 |5 N- R4 b6 j* Q# _/ L( J1 l; o
! j2 P. D# L1 O, m
. [3 q, Q; u/ e# C" F: @
下面,对嵌入式世界里几种常见的BootLoader做一简单介绍。; i7 L+ u8 L; n: Z/ m6 U9 q, s
6 D  c7 r6 q. P8 [2 C9 ^

1 T; W: v, H+ p0 |1 q9 v3 y  e  y& a1 U-Boot( d. d/ l0 `: D! d& n& O9 w( z, H* B" t4 k
$ f- u  }* ]9 s. D$ l: o5 u
3 n6 h; k/ h/ U3 K% U. `7 Z3 v- ^' C; y+ q7 i% a
# k7 g* l' @: T$ |U-BootUniversal BootLoader)是遵循GPL条款的开放源码项目,是在PPCBoot以及ARMBoot的基础上逐步发展和演化而来,现在U-Boot已经能够支持PowerPCARMX86MIPS等体系结构的上百种开发板,已经成为功能最多、灵活性最强,并且开发最积极的开放源码的BootLoader
+ W; m' I/ ^; X% N+ v, OU-Boot提供大量外设驱动,支持多个文件系统,附带调试、脚本、引导等工具,特别支持Linux,为板级移植做了大量的工作。: W5 }9 c. {- E& X$ O+ b
, Y& w; L. g2 l3 b5 XU-Boot源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅支持嵌入式Linux系统的引导,而且还支持NetBSDVxWorksQNXRTEMSARTOSLynxOS等嵌入式操作系统。( T& l4 D8 ^( @( |
U-Boot可支持的主要功能如下:
- J0 g" g- _% |0 s, Q$ e· 系统引导:从FLASH中引导压缩或非压缩系统内核、支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统。& }% D9 ?' Y4 ~/ ^( G9 P- [( B
· 基本辅助功能:可灵活设置、传递多个关键参数给操作系统内核,适合系统在不同开发阶段的调试要求与产品发布,尤其对Linux支持最为强劲;支持开发板环境参数多种存储方式,如FLASHNVRAMEEPROMCRC32校验,可校验FLASH中内核、RAMDISK镜像文件是否完好。4 h6 o' X" q: f) }: m$ |# C( u3 i2 L( L# }5 G6 B) i' ^+ @! ]; {$ y% f
· 设备驱动:驱动的支持包括串口、SDRAMFLASH、以太网、LCDNVRAMEEPROM、键盘、USBPCMCIAPCIRTC等。- V. U0 W, u; A9 _: ~
· 上电自检功能:SDRAMFLASH大小自动检测、SDRAM故障检测、CPU型号。# g+ l5 d4 D3 L' P
2 @, o( J6 a9 n* g9 U+ q: ~0 c2 Q· 特殊功能:XIPeXecute In Place,芯片内执行)内核引导,这样程序可以直接在Flash闪存内运行,不必再把代码读到RAM中。, J+ f" P5 k' l4 W; V
8 U2 ~3 ?  z5 G  yU-Boot源码包的下载网站:http://sourceforge.net/project/u-boot8 J( o6 ~  W0 r. N# R; L& ^* t
1 ?; l. J5 a* p" `/ O7 @: ~! N, K" i5 A9 G& b* U6 J+ `( R& \! D( E* f/ n; f
8 x- p0 t5 ~- O# G9 |" a, S
2 vivi4 s5 A, c; x" ~
7 S8 T- g8 {" M. T% a$ b- m: q) w2 f* V7 ^8 z1 d/ N" A/ Y) Z
7 W& v4 k0 f  m6 q/ C* S& D! \  ]8 ^( q
vivi是由韩国Mizi公司开发的一种BootLoader,专门针对ARM9处理器而设计,支持S3C2410x处理器。和所有的BootLoader一样,vivi有两种工作模式,即启动加载模式和下载模式。当vivi处于下载模式时,它为用户提供一个命令行接口,通过该接口可以使用vivi提供的一些命令。+ _. H. s9 s; o& N' j
% X: Y' [9 z& P7 }. Z* _; |7 G5 H3 {vivi作为一种BootLoader,其运行过程分成两个阶段。& y8 g2 ?& T4 n& l. q4 J& F- R. v, W4 g9 B0 @
第一阶段的代码在vivi/arch/s3c2410/head.s中定义,大小不超过10 KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C2410的一些寄存器、时钟等的初始化并跳转到第二阶段执行。
" B( g. J% f9 h    第二阶段的代码在vivi\init\main.c中,主要进行一些开发板初始化、内存映射和内存管理单元初始化等工作,最后会跳转到boot_or_vivi()函数中,接收命令并进行处理。
. s' N& ~) `! Y8 X3 J& |! Q8 j+ d- r9 e' |/ J2 `: }4 g) x1 @/ u9 z( x
5 l4 j# f: Z: ^" c
- m$ p" ?' q' [8 p3 Blob- G: C& f1 b- g) W5 h, [0 B; E) U0 I; g! }( i

' W4 Z1 D) x0 R* u6 b9 I7 ^1 _9 W: q' [5 e2 v! t" x# U' ^
+ |: y; p/ S7 e/ ]0 k9 mBlobBootLoader Object)是由Jan-Derk BakkerErik Mouw发布,专为StrongARM构架下的LART设计的BootLoader8 e; U8 n* E5 w+ I* E4 ]+ ]0 q7 O9 @# a
Blob支持SA1100LART主板,但用户也可以自行修改移植。Blob也提供两种工作模式,在启动时处于正常的启动加载模式,但是它会延时10秒等待终端用户按下任意键而将Blob 切换到下载模式。如果在10秒内没有用户按键,则Blob继续启动Linux内核。( B3 l& O( }1 ~) Q
       Blob功能比较齐全,代码较少,比较适合做修改移植,用来引导Liunx,目前大部分S3C44B0板都用Blob修改移植后来加载uCLinux' X; v& z, a% I, I6 V. ~7 r  d, Y1 d; b0 n* R( g/ {
9 O5 y( U( ^! E( Q  K, }& t- m3 _3 ]( {  q3 H* N
/ F7 j. P1 s9 o! w/ }
4 ARMboot
( T) q! F$ k3 \5 p& ?8 Y6 q5 b3 v" u2 o9 Y8 _, h
  ^, F7 L2 y( ^( V: s+ Z/ b
; M5 K% Z0 @- F- s# \+ b: pARMboot是一个ARM平台的开源固件项目,它严重依赖于PPCBootARMboot支持的处理器构架有StrongARMARM720TPXA250等,是为基于ARM或者StrongARM CPU的嵌入式系统所设计的。ARMboot的目标是成为通用的、容易使用和移植的引导程序,非常轻便地运用于新的平台上。总得来说,ARMboot介于大、小型BootLoader之间,相对轻便,基本功能完备,缺点是缺乏后续支持。ARMboot发布的最后版本为ARMboot1.1.02002年终止了ARMboot的维护,9 n5 s/ S& r( V
, A) F9 a9 t4 V  O. H0 h
4 j+ i0 v( M7 k2 `! b* O5  Redboot2 N& M( E2 h5 i7 t
RedBoot是标准的嵌入式调试和引导解决方案,是一个专门为嵌入式系统定制的引导工具,最初由Redhat开发,是嵌入式操作系统eCos的一个最小版本,是随eCos发布的一个BOOT方案,是一个开源项目。现在交由自由软件组织FSF管理,遵循GPL。集BootLoader、调试、Flash烧写于一体。支持串口、网络下载、执行嵌入式应用程序。既可以用在产品的开发阶段(调试功能),也可以用在最终的产品上(Flash更新、网络启动)。+ ~# g5 W7 L) m+ i* i( @
      RedBoot支持的处理器构架有ARMMIPSPowerPCx86等,是一个完善的嵌入式系统BootLoader( C0 |8 u! L9 [5 Q  Z! I+ `+ S0 S
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-24 22:12 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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