码迷,mamicode.com
首页 > 其他好文 > 详细

引导程序

时间:2017-01-20 15:59:29      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:bios   设备   power   加载   引导   管理   sector   不同   关机   

  引导程序(bootstrap)是一种实用程序。计算机启动后,系统自行输入的一个简短的程序,由它来完成引导过程。[1]  
引导是计算机开始输入时,常采用的一种手段。计算机启动后,由设备来实现少量指令和数据的输入,然后由它们再输入其他程序,这种过程称为引导。微型计算机中的引导程序可将用户通过键盘打入的程序及数据,引导输入到随机存储器中。
 
//----------------百度知道

  计算机的存储器分为大容量存储器(通常为硬盘)和主存储器(即内存),操作系统(如windows、UNIX、Linux、Mac OS)安装在大容量存储器上,而主存储器又分为两部分:能够永久保存数据的ROM(Read Only Memory)和易失性存储器部分(即在关机后数据全部丢失)。
  在ROM部分,有两个程序,引导(boot strapping,简称boot)和BIOS(基本输入输出程序)。
特征:
  在计算机开机时,boot被自动执行,指引CPU把操作系统从大容量存储器中传送到主存储器的易失区[1] 。一旦操作系统放到了主存储器中,boot要求CPU执行一条转移指令,转到这个存储区域,在这个时候,操作系统接管并且开始控制整个机器的活动。
  在操作系统变成可用之前,boot可以执行BIOS,完成基本的输入输出活动。
1、开机执行BIOS(基本输入输出系统)引导程序,这个过程叫做系统自检,标识和配置所有的即插即用设备,并配置DMA通道;完成加电自检,测试内存,端口,键盘,视频适配器,磁盘驱动器等基本设备,以及CD-ROM驱动器;对引导驱动器可引导分区定位:在CMOS(complementary metal oxide semiconductor,互补金属氧化物半导体)中,可以自行设置引导顺序,一般顺序是软驱,磁盘,光驱;加载主引导记录以及引导驱动器的分区表,执行主引导记录MBR,主引导记录在硬盘上找到可引导分区,将其分区引导记录装入内存,并将控制权交给分区引导记录,由分区引导记录定位根目录,然后装入操作系统。

//-----------------------------

分8步
1.执行第一条指令。
2.进入POST(Power On Self Test,加电自检)自检。
3.初始化显卡。
4.测试CPU和内存。
5.检测标准设备。
6.检测即插即用设备。
7.更新ESCD系统BIOS将更新ESCD(Extend System Configuration Data,扩展系统数据配置)。
8.按指定的顺序启动磁盘。

//---------------------------------------

系统引导程序的工作原理

  单片机控制系统中,由于程序规模不大,它完全可以存储于程序可寻址的ROM片上(Read Only Memory:只读存储器,它的种类很多,这里不做过多解释)。

当程序运行时,不需要移动程序位置,便可直接通过PC(Programming Counter:程序计数器,它总是指向CPU下一条要执行的程序指令)指针指向,加载到CPU当中并解释执行。

  目标系统规模比较庞大的嵌入式系统,需要使用规模很大的系统软件与应用软件来实现控制功能。那么,这些软件直接存储在片上可直接寻址的ROM中,是不可能的(CPU的位宽,决定了可直接寻址的物理地址范围不够大)。所以,它们只能存放于容量较大的外部存储设备当中,而外部存储设备的内部空间(类似于某单位的库房内部货架,外部人员无法直接使用,只能通过库房管理员完成出库入库操作)往往不能被PC直接寻址访问!那么,如果要运行程序,必须要将它加载到CPU可寻址的RAM当中。

 

谁来做

  系统引导程序(BootLoader)。嵌入式系统中的控制核心SOC(System On A Chip)芯片,在设计伊始,就预留了一部分PC可直接寻址的ROM空间,这部分空间,用户可存放一小段代码,当系统复位时,CPU直接指向这里,并执行它。这是非常重要的特性,针对不同的SOC,其实现方式可能完全不同,但原理相通。

如何做之第一

简单的初始化硬件设备(戏说“类似于抢滩登陆当中的先锋部队,规模很小,任务很明确:抢占滩头,并开辟一块安全的登陆区域,供后续抢滩部队安全登陆”),比如:初始化内存,设置堆栈,调整配置CPU工作模式,初始化中断控制系统,驱动存放系统软件的外部存储设备等;

 

 

如何做之第二

加载系统引导程序自身到RAM中(戏说“后续抢滩部队登陆在先锋部队的引导下登陆”)。因为系统引导程序的规模也比较大,它的代码存储范围也会超出PC可直接指向的范围,所以,必须要加载完整的系统引导程序到RAM中;

 

如何做之第三

系统引导程序驱动并初始化后续所有被使用到的硬件设备(戏说“抢滩部队开辟大范围的安全的登陆场,足够后续的主力作战部队登陆并展开”),比如:检测内存、LCD屏、声音输出设备、简单的通讯设备、存储设备等等;

 

如何做之第四

从外部存储设备中加载操作系统内核,同时为内核设定启动参数,并将系统的控制权交给操作系统(戏说“抢滩部队引导主力作战部队在指定的安全区域登陆,然后讲当前的战场形态以信息的形式通知给主力作战部队,最后将战场的控制权交给主力作战部队,完成任务”),结束使命。

 

结束语

系统引导程序,是嵌入式系统当中必不可少的软件。没有系统引导程序,操作系统自身不能被加载并正确运行。当前在嵌入式系统当中使用最多的系统引导程序是U-Boot,它开源、免费,并且支持绝大部分的嵌入式SOC芯片。同时它还支持很多常用的外部硬件设备,因为它的硬件设备驱动来源于Linux操作系统。所以,对嵌入式系统设计者来说,选择U-Boot绝对是不二的选择!

 

号外

如果您有什么问题,请关注“嵌入式系统开发者之家”给本公众号留言,我们会在第一时间回复您的问题!

//-----------------------------------------------------------------------------------------------------------

磁盘引导程序原理及简介

一、介绍

  • 系统开机或者重启
    1. BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
    2. 读取主引导记录(MBR)。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
    3. 检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示"NO ROM BASIC"然后死机。
    4. 当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处, 然后继续执行。
    5. 根据MBR中的引导代码启动引导程序。

二、几个问题

  • 为什么需要磁盘引导程序


为什么需要磁盘引导程序而不是直接载入操作系统?或许是因为历史原因,BIOS最初是为最原始的8位PC所创,8位的PC磁盘很小,所以BIOS只能先载入磁盘引导程序然后通过磁盘引导程序导入操作系统。

  • 磁盘引导程序为什么要从1扇区,0磁头,0磁道加载到7c00H处


“引导程序加载器--int19”。由于BIOS加载磁盘引导程序时需要调用系统中断int19来加载引导程序,而这个中断指定了将磁盘1扇区,0磁头,0磁道加载到7c00H处。

  • 磁盘引导程序为什么最大只能是512字节


“A bootstrap must be exactly512 bytes long because of the two byte check and the one sector limitation.”
“一个引导程序必须为512字节,因为他的大小有一个扇区的限制,最后两个字节需要设置为‘0xAA55‘。”

  • 磁盘引导程序为什么是16位


因为DOS系统是16位,X86系统都向后兼容引导时的16位模式。

 

//----------------------------------

Windows7的开机引导

由bios启动,然后查找硬盘的mbr,mbr指向当前活动分区根目录的bootmgr引导器,bootmgr读取当前活动分区boot文件夹中的bcd数据配置文件,来生成菜单和载入设置用户选择后,控制权转交给winload.exe[windows内核载入程序]载入程序自动载入注册表和驱动文件之后就是你看见的登陆界面了,要是没有密码就直接进桌面了

//-----------------------------------

 

 

 

 

 

 

 

引导程序

标签:bios   设备   power   加载   引导   管理   sector   不同   关机   

原文地址:http://www.cnblogs.com/Tpf386/p/6322769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!