bootloader和linux区别,【linux】BootLoader简介(c语言编程)

BootLoader简介

一、BootLoader

1、BootLoader的作用

一个嵌入式linux系统从软件的角度看通常可以分为4个层次:

引导加载程序(boot代码和BootLoader)

Linux内核

文件系统 + (GUI)

用户应用程序

引导加载程序是系统加电后运行的第一段软件代码,用于将内核映像从硬盘上读到RAM中,实现到

核的入口点去运行,即开始启动操作系统。

简单的说,BootLoader就是在操作系统内核运行之前运行的一小段程序,通过这段小程序,可以初始

化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个适合的状态,以便为最终调用操

作系统内核准备好正确的环境。

2、BootLoader操作模式:(大多BootLoader都包含两种不同的操作模式)

(1)、启动模式:BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程

没有用户的介入。

(2)、下载模式:目标机上的BootLoader通过串口连接或联网等方式从主机上下载文件(内核映像、根

文件系统映像...),保存到目标机的RAM中,接着再被BootLoader写到目标机的Flash

类固态存储设备,该模式下通常会向终端用户提供一个简单的命令行接口。

二、常用的BootLoader

ARMBoot, PPCBoot, U-Boot, RedBoot, Blob, Vivi

三、BootLoader基本原理(假定内核映像与根文件映像(可以在固态存储设备运行)都被加载到RAM中运行)

通常,BootLoader是严重地依赖于硬件而实现的,除了依赖于CPU的体系结构外,BootLoader实际上也依

赖于具体的嵌入式板级设备。

由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader分为stage1和stage2两个部分。

stage1:存放依赖于CPU体系结构的代码,如设备初始化代码(通常用汇编语言实现)。

stage2:存放实现更复杂的功能的代码,通常使用C语言实现,代码具有更好的可读性和可移植性。

BootLoader的stage1通常包括以下步骤:

(1)、硬件设备初始化

(2)、为加载BootLoader的stage2准备RAM空间

(3)、复制BootLoader的stage2到RAM空间中

(4)、设置好堆栈

(5)、跳转到stage2的C入口点

BootLoader的stage2通常包括以下步骤:

(1)、初始化本阶段要使用到的硬件设备

(2)、检测系统内存映射

(3)、将内存映像和根文件系统映像从Flash上读到RAM空间中。

(4)、为内核设置启动参数

(5)、调用内核

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值