打印
[开发工具]

BootLoader介绍

[复制链接]
1941|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hanzhen654|  楼主 | 2019-4-30 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个嵌入式系统从软件角度可以分为三个层次
01.引导加载程序(包括固化在固件中的boot和BootLoader两个部分)
02.linux内核(特定于嵌入式平台的内核)
03.文件系统(包括系统命令和应用程序)

使用特权

评论回复
沙发
hanzhen654|  楼主 | 2019-4-30 15:48 | 只看该作者
一个同时装有BootLoader、内核的启动参数、内核映像和根文件系统映像的固态存储设备的典型空间分配结构图:
BootLoader        Bootparameter             Kernel        Root filesysterm

使用特权

评论回复
板凳
hanzhen654|  楼主 | 2019-4-30 15:48 | 只看该作者
对比PC:
  Pc机中的引导加载程序由BIOS来完成(其本质就是一段固件程序)和GRUE或LILO一起组成。BIOS在完成硬件检测和资源分配后将硬盘中的引导程序读到系统内存中,然后将控制权交给引导程序。引导程序的主要任务是将内核从硬盘上读到内存中,然后跳转到内核的入口点去执行,即启动操作系统。

使用特权

评论回复
地板
hanzhen654|  楼主 | 2019-4-30 15:49 | 只看该作者
BootLoader定义
   在嵌入式系统中,没有像BOIS那样的固件程序,因此整个系统的加载任务就完全由BootLoader来完成。比如在一个基于ARM7 core的嵌入式系统中,系统在上电或复位时都从地址0X00000000开始执行,而这个地址处安排的通常是系统的Bootloader程序。简单的说,BootLoader就是在操作系统运行前运行的一段小程序,通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终的操作系统做好准备。

使用特权

评论回复
5
hanzhen654|  楼主 | 2019-4-30 15:50 | 只看该作者
安装
   系统加电或者复位后,所有的CPU通常都从CPU制造商预先安排的地址开始执行。比如S3C6410复位后,从地址0x00000000开始执行。而嵌入式系统将固态存储设备(比如Flash、SD卡等)安排在这个地址上,而BootLoader的程序又安排在固态存储器的前端,这样就能保证系统加电后CPU首先执行BootLoader程序。

使用特权

评论回复
6
hanzhen654|  楼主 | 2019-4-30 15:52 | 只看该作者
流程
  Bootloader的启动程序分为单节段和双阶段两种,通常多阶段的Bootloader具有更复杂的功能,更好的可移植性。从固态存储设备上启动的BootLoader大多采用两阶段,即启动阶段可以分为Stage1和Stage2。tage1完成初始化硬件,为Stage2准备内存空间,并将Stage2复制到内存中,设置堆栈,然后跳转到Stage2中。Stage2主要初始化本阶段要用到的设备,将内核映像和根文件系统映像从Flash读到ARM内存中去,再去调用内核。

使用特权

评论回复
7
hanzhen654|  楼主 | 2019-4-30 16:24 | 只看该作者
工作模式
  大多数BootLoader分为两种不同的模式:启动模式和下载模式,这两种模式仅对开发人员才有意义。从最终用户的角度来看,BootLoader的作用就是用来加载操作系统,而不存在所谓的启动模式与下载模式。

使用特权

评论回复
8
dongnanxibei| | 2019-4-30 18:22 | 只看该作者
BOOT?一会儿下载点资料学习学习。

使用特权

评论回复
9
zhuomuniao110| | 2019-4-30 21:42 | 只看该作者
可以做各种引导。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

1766

帖子

2

粉丝