PC中的BIOS和嵌入式设备中BootLoader的区别和联系

众所周知,在PC(台式机、笔记本等)中,BIOS(现在是UEFI)是启动加载程序,而嵌入式设备中,BootLoader是系统引导程序。那么这两者到底有什么异同?关于这个问题,相信即使是一些资深的嵌入式工程师、内核工程师可能也不能完全说清楚。本文就来仔细讲解一下BIOS和BootLoader的区别和联系。

1. 引导加载程序

简单地说,引导加载程序就是在操作系统内核运行之前运行的一小段程序,是系统加电后第一时间运行的软件代码。通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境配置为一定的状态,以便为最终调用操作系统内核做好准备。

2. PC和嵌入式中的引导加载程序

(1)PC中的引导加载程序

在桌面PC中的引导加载程序是由位于只读存储器(ROM)中的BIOS位于硬盘的主引导记录(Master Boot Record,MBR)中的BootLoader引导程序(如GRUB和LILO)两部分代码组成的。BIOS在完成硬件检测和资源分配后,将MBR中的引导程序读到系统的内存当中,然后由MBR负责启动操作系统。

(2)嵌入式系统中的引导加载程序

在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载任务就完全由BootLoader来完成。例如,在一个基于ARM7TDMI内核的嵌入式系统中,系统在上电或复位时一般都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

3. 小结

PC中的引导加载程序 = BIOS或UEFI中的MBR + BootLoadet引导程序(如GRUB、LILO)

嵌入式系统中的引导加载程序 = 0 + BootLoadet引导程序(如uboot)= BootLoadet引导程序(如uboot)

猜你喜欢

转载自blog.csdn.net/phmatthaus/article/details/130615003