欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-15 19:59:18
...

深入理解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

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

文献参考:

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