赞
踩
众所周知,在PC(台式机、笔记本等)中,BIOS(现在是UEFI)是启动加载程序,而嵌入式设备中,BootLoader是系统引导程序。那么这两者到底有什么异同?关于这个问题,相信即使是一些资深的嵌入式工程师、内核工程师可能也不能完全说清楚。本文就来仔细讲解一下BIOS和BootLoader的区别和联系。
简单地说,引导加载程序就是在操作系统内核运行之前运行的一小段程序,是系统加电后第一时间运行的软件代码。通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境配置为一定的状态,以便为最终调用操作系统内核做好准备。
(1)PC中的引导加载程序
在桌面PC中的引导加载程序是由位于只读存储器(ROM)中的BIOS和位于硬盘的主引导记录(Master Boot Record,MBR)中的BootLoader引导程序(如GRUB和LILO)两部分代码组成的。BIOS在完成硬件检测和资源分配后,将MBR中的引导程序读到系统的内存当中,然后由MBR负责启动操作系统。
(2)嵌入式系统中的引导加载程序
在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载任务就完全由BootLoader来完成。例如,在一个基于ARM7TDMI内核的嵌入式系统中,系统在上电或复位时一般都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。
PC中的引导加载程序 = BIOS或UEFI中的MBR + BootLoadet引导程序(如GRUB、LILO)
嵌入式系统中的引导加载程序 = 0 + BootLoadet引导程序(如uboot)= BootLoadet引导程序(如uboot)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。