BIOS,U-BOOT,BootLoader三者的对比

如题,作为嵌入式学习新人,在学习期间,我常常有些混淆,故对上述三者进行对比,有助于理解和吸收。

一、BIOS

关于BIOS,第一次听说是大学期间安装系统,与Windows系统相关联。参考百科解释,概括如下。

它实现以下功能:

1、实现计算机最重要的基本输入输出的程序

2、实现开机后自检程序

3、实现系统自启动程序

4、为计算机提供最底层的、最直接的硬件设置和控制

5、实现向系统提供一些系统配置参数

二、U-boot

uboot的核心作用就是启动操作系统内核,uboot的本质就是一段裸机程序。

它实现以下功能:

1.实现对底层硬件的控制

uboot中实现了一部分硬件的控制能力(uboot中初始化了一部分硬件),因为uboot为了完成一些任务必须让这些硬件工作。譬如uboot要实现刷机必须能驱动iNand,譬如uboot要在刷机时LCD上显示进度条就必须能驱动LCD。

2.能够完成镜像烧录(刷机)

uboot要能够被借助完成刷机操作。参考下SD卡刷机的步骤:

a.烧录uboot到SD卡中。

有2种烧写方法:一种是在windows中用刷卡工具去制作启动SD卡;另一种是在linux中用dd命令。制作完SD后将SD卡插入开发板,然后开机就可以进入uboot界面。

b.使用uboot的fastboot命令,并借助PC中的fastboot软件完成包括uboot、kernel、rootfs等的镜像的烧录。刷机依靠的是uboot得fastboot命令,将镜像写到相应的FLASH中。

3.uboot的“生命周期”

uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核。

uboot还可以执行很多别的任务(譬如烧录系统),但是其他任务执行完后都可以回到uboot的命令行继续执行uboot命令,而启动内核命令一旦执行就回不来了。

4.uboot要提供命令式shell界面

shell是用户操作接口的意思。shell有命令行的shell,如windows下的cmd,如linux下的终端;也有GUI式的shell,比如常用的windows下的各种界面。uboot也要有这样的一个接口。

uboot的shell使用的也是行缓冲的模式。也就是以回车键(换行键)作为一个命令输入的结束。对应的其他缓冲模式还有无缓冲和全缓冲:无缓冲就是输入一个字符就当作一个命令处理;全缓冲就是无论输入什么都缓冲起来,直到缓冲区满了才做一次处理。

三、BootLoader

Bootloader从字面上来看就是启动加载的意思。windows开机时会首先加载bios,然后是系统内核,最后启动完毕。那么bootloader就相当于PC的bios。

Bootloader是嵌入式系统在加电后执行的第一段代码,通过这段小程序,进行硬件初始化,获取内存大小信息等。在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行 。

对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。

总结:uboot(universal bootloader)是一种可以用于多种嵌入式CPU得BootLoader程序,换言之,uboot是bootloader的一个子集。bootloader就相当于PC的bios。

参考连接:

  1. https://baike.baidu.com/item/bios/91424?fr=aladdin

  1. https://baijiahao.baidu.com/s?id=1713236081349224949&wfr=spider&for=pc

你可能感兴趣的:(Linux嵌入式,U-boot,BIOS,BootLoader)