U-Boot完美解读(前篇)——说说bootloader那些事儿

1、官方说bootloader

BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

1.1、bootloader那些哥们

虽然现在芯片是越来越丰富了,想选个开发板都得纠结半个月,其实都是“挨踢苦逼”手上的米有限呀,不过常见bootloader可就没那么容易纠结了,常用的也就那么几个,下面就简单的介绍几兄弟:

1.1.1、Redboot

Redboot是Redhat公司随eCos发布的一个BOOT方案,是一个开源项目。Redboot支持的处理器构架有ARM,MIPS,MN10300,PowerPC, Renesas SHx,v850,x86等,是一个完善的嵌入式系统Boot Loader。   Redboot是在ECOS的基础上剥离出来的,继承了ECOS的简洁、轻巧、可灵活配置、稳定可靠等品质优点。当前支持单板机的移植版特性有:
- 支持ECOS,Linux操作系统引导
- 在线读写Flash
- 支持串行口kermit,S-record下载代码
- 监控(minitor)命令集:读写I/O,内存,寄存器、 内存、外设测试功能等
Redboot是标准的嵌入式调试和引导解决方案,支持几乎所有的处理器构架以及大量的外围硬件接口,并且还在不断地完善过程中。

1.1.2、ARMboot

ARMboot是一个ARM平台的开源固件项目,它特别基于PPCBoot,一个为PowerPC平台上的系统提供类似功能的姊妹项目。鉴于对PPCBoot的严重依赖性,已经与PPCBoot项目合并,新的项目为U-Boot(这家伙的前身,嘿嘿,用的时候不要忘了本哟)。ARMboot发布的最后版本为ARMboot-1.1.0,2002年ARMboot终止了维护。ARMboot的目标是成为通用的、容易使用和移植的引导程序,非常轻便地运用于新的平台上。ARMboot是GPL下的ARM固件项目中唯一支持Flash闪存,BOOTP、DHCP、TFTP网络下载,PCMCLA寻线机等多种类型来引导系统的。特性为:
-支持多种类型的FLASH   
-允许映像文件经由BOOTP、DHCP、TFTP从网络传输;   
-支持串行口下载S-record或者binary文件   
-允许内存的显示及修改   
-支持jffs2文件系统等


1.1.3、U-Boot

此处略去三千字,不然后面的章节就没写的了......

1.1.4、Blob
  Blob(Boot Loader Object)是由Jan-Derk Bakker and Erik Mouw发布的,是专门为StrongARM 构架下的LART设计的Boot Loader。Blob的最后版本是blob-2.0.5。Blob支持SA1100的LART主板,但用户也可以自行修改移植。Blob也提供两种工作模式,在启动时处于正常的启动加载模式,但是它会延时 10 秒等待终端用户按下任意键而将 Blob 切换到下载模式。如果在 10 秒内没有用户按键,则 Blob 继续启动 Linux 内核。其基本功能为:   
初始化硬件(CPU速度,存储器,中断,RS232串口)   
-引导Linux内核并提供ramdisk   
- 给LART下载一个内核或者ramdisk   
-给FLASH片更新内核或者ramdisk   
-测定存储配置并通知内核   
-给内核提供一个命令行

1.1.5、Bios-lt
  Bios-lt是专门支持三星(Samsung)公司ARM构架处理器S3C4510B的Loader,可以设置CPU/ROM/SDRAM/EXTIO,管理并烧写FLASH,装载引导uClinux内核。这是国内工程师申请GNU通用公共许可发布的。Bios-lt的最新版本是Bios-lt-0.74,另外还提供了S3C4510B的一些外围驱动。

1.1.6、Bootldr
  Bootldr是康柏(Compaq)公司发布的,类似于compaq iPAQ Pocket PC,支持SA1100芯片。它被推荐用来引导Llinux,支持串口Y-modem协议以及jffs文件系统。Bootldr的最后版本为Bootldr-2.19。

1.1.7、vivi
  vivi是韩国mizi 公司开发的bootloader, 适用于ARM9处理器。Vivi有两种工作模式:启动加载模式和下载模式。启动加载模式可以在一段时间后(这个时间可更改)自行启动linux内核,这是vivi的默认模式。在下载模式下,vivi为用户提供一个命令行接口,通过接口可以使用vivi提供的一些命令。不过现在这支军团也惭惭消失了,samsung官方也提供u-boot的开发包供用户使用。

 

1.2、主角登场u-boot

U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。

U-Boot是由开源项目PPCBoot发展起来的,ARMboot并入了PPCBoot,和其他一些arch的Loader合称U-Boot。2002年12月17日第一个版本U-Boot-0.2.0发布,同时PPCBoot和ARMboot停止维护。U-Boot支持的处理器构架包括PowerPC (MPC5xx,MPC8xx,MPC82xx,MPC7xx,MPC74xx,4xx), ARM (ARM7,ARM9,StrongARM,Xscale),MIPS (4Kc,5Kc),x86等等,U-Boot提供两种操作模式:启动加载(Boot loading)模式和下载(Downloading)模式,并具有大型Boot Loader的全部功能。主要特性为:   
-SCC/FEC以太网支持   
-BOOTP/TFTP引导   
-IP,MAC预置功能   
-在线读写FLASH,DOC, IDE,IIC,EEROM,RTC  
-支持串行口kermit,S-record下载代码   
-识别二进制、ELF32、pImage格式的Image,对Linux引导有特别的支持   
-监控(minitor)命令集:读写I/O,内存,寄存器、内存、外设测试功能等   
-脚本语言支持(类似BASH脚本)   
-支持WatchDog,LCD logo,状态指示功

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值