当前位置:嗨网首页>书籍在线阅读

02-引导加载程序的作用

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.1 引导加载程序的作用

当一块处理器板第一次加电时,即使是最简单的程序也需要在很多硬件得到初始化之后才能运行。在处理器复位(reset)之后,每种架构和处理器都会执行一组预定义的动作和配置,这包括从板载的存储设备(一般是闪存)中获取初始化代码。早期的初始化代码是引导加载程序的一部分,并且负责激活处理器和相关的硬件设备。

在加电并复位之后,大多数处理器都会从一个默认的地址处获取代码。硬件设计人员会根据这个信息来安排板载闪存的布局,并选择闪存所对应的地址范围。通过这种方式,当硬件板卡加电时,处理器会从一个众所周知的、可预知的地址获取代码,接着就可以建立软件的控制。

引导加载程序提供了这个早期的初始化代码并且负责初始化硬件板卡,以便其他程序可以运行。这个早期的初始化代码几乎都是使用处理器的本地汇编语言来编写的。仅仅是这个现实就会带来很多挑战,我们在这里会考察其中的一部分。

当然,当引导加载程序完成基本的处理器和平台初始化之后,它的主要任务是获取并引导一个完整的操作系统。它负责定位、载入以及将控制权移交给主操作系统,此外,引导加载程序可能还包含以下高级功能,例如验证操作系统镜像、升级自身或操作系统镜像,或者是基于开发人员定义的策略从几个操作系统镜像中选择一个。和传统的PC-BIOS模型不同的是,当操作系统获得控制权之后,引导加载程序就会被覆盖,不复存在了。[1]

[1] 有些嵌入式设计会保护引导加载程序,并提供一些回调用于调用引导加载程序中的函数,但这不是一种好的设计方案。因为Linux的功能要比引导加载程序强大很多,所以这样做的意义不大。