深入理解bootloader_1----- bootloader的初步概念

深入理解bootloader_1—– bootloader的初步概念

1、引言

 bootloader就是在操作系统内核运行之前运行的一小段程序。通过这个小程序我们主要完成下面几个内容:

1)初始化硬件设备。
2)建立内存空间的映射。
3)创建内核需要的一些信息,并将这些信息通过相关机制,传递个给内核。
4)将系统的软硬件环境设置成一个合适的状态。
5)为最终调用操作系统内核准备好正确环境,真正起到引导和加载内核的作用。
在嵌入式系统,通常没有PC 中BIOS那样的固件程序,因此整个系统的加载启动就完全由bootloader来完成。Bootloader 是CPU 上电后运行的第一段程序。不同的CPU 体系结构有不同的bootloader,有些bootloader支持多种体系结构的CPU,比如U-Boot就同时支持ARM和MIPS体系结构。除了依赖于CPU 的体系结构外,Bootloader实际上也依赖于具体的嵌入式版级设备的配置。也就是两块不同的嵌入式版,即使他们是基于同一种CPU而建,但是要想让运行在一块板子上的bootloader也运行到另一块板子上,通常个需要修改Bootloader源程序。因此每款Bootloader都是独一无二的,但我们可以总结开发或者维护Bootloader的一些背景知识,掌握这些背景知识就能够融会贯通。
我们以ARM体系结构为参考要想掌握Bootloader起码要掌握下面一些知识:
1)熟悉Linux的的开发环境,shell,make工程管理工具的使用。
2)掌握ARM体系结构,指令集,独特的寻址方式。
3)计算机的编译和链接。
4)熟练掌握对U-Boot代码的 分析。

2、Bootloader的角色

当一个嵌入式开发板上电时,即使执行最简单的程序,都要初始化很多硬件。每种体系结构、处理器都有一组预定义的动作和配置,他们包含从单板的存储设备获取初始化代码的功能。最初的初始化代码是Bootloader的一部分,它负责启动处理器和相关硬件设备。
上电复位时,大多数处理器都有一个获取第一条指令的默认初始地址。硬件设计人员利用该信息来进行存储空间的布局。这样以来,上电的时候,可从一个通用的已知地址获取代码,然后建立软件的控制。
Bootloader提供初始化代码,并初始化单板,这样就可以执行其他程序,最初的初始化程序都是给体系结构下汇编语言写成的。在初始化相应的硬件信息之后,Bootloader会u引导完整的操作系统,他会定位加载操作系统,并将控制权交给操作系统。与传统的PC-BIOS不同,当操作系统获取控制权之后,嵌入式下
的Bootloader将不复存在。

3、不同体系下的BootLoader

这里写图片描述

文献参考:

抄录自 《深入理解BoorLoader》 胡尔佳 编著(学习笔记仅作学习,交流,详细阅读请购买正版)

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页