0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式Linux学习-BIOS和Boot loader详解笔记

冬至子 来源:白浪工作室 作者:小白浪 2023-10-27 14:20 次阅读

1.BIOS****和引导装入程序

为桌面计算机拥电后,一种叫作BIOS的软件系统会立即接管对系统处理器的控制.

[BIOS是Basic Input/Output Software (基本输入输出软件)的缩写,但直际上. BIOS在计算机系统中发挥的作用已经远远超过了最初设计该软件时的目标,而且越来越复杂。

通常. BIOS系统都是保存在闪存(Flash)里面的。

BIOS是一组复杂的系统配置软件例程,它记录了计算机硬件体系结构的底层细节信息

在系统加电时候,BIOS会立即接管对系统处理器的控制,它最主要任务就是初始化系统硬件,特别是内存子系统,然后将操作系统从硬盘emmcFlash中读出并加载。

初始化系统的几个重要任务如下:

(1)初始化关键硬件组件,例如SDRAM控制器,I/O控制器等

(2)初始化系统内存,并准备将系统系统控制权移交给相应的操作系统。

(3)分配系统资源,例如内存以及外设控制器的中断电路。

(4)提供相应的机制,用于定位和加载操作系统映像。

(5)加载操作系统,并将系统控制权移交给操作系统,将必要的启动信息,例如系统全部内存块的数量、尺寸,串行通信端口的速度以及其它底层硬件配置数据传递给操作系统。

BIOS的首要任务就是启动内存子系统。内存初始化之后,就可以作为一种资源进行使用,很多BIOS完成内存初始化后第一个动作就是将自身复制到DRAM中,以便获得更快的执行速度。

一、BIOS

1.功能:进行自我检测与读取bootloader

2.大致工作流程

①系统启动之后,加载BIOS,并通过BIOS去加载CMOS的信息,并且借由CMOS内的设置值取得主机的各项硬件配置,例如CPU接口设备的沟通频率、启动设备的查找顺序、硬盘的大小与类型、系统时间、各周边总线是否启动PnP、各接口设备的I/O地址。以及与CPU沟通的IRQ中断等的信息

②取得上面这些信息后,BIOS开始自我检测。然后开始执行硬件检测的初始化,并设置PnP设备,之后再定义出可启动的设备顺序,接下来就会开始进行启动设备的数据读取了

③BIOS会指定启动的设备好让我们可以读取此盘中的操作系统内核文件,由于不用的操作系统它的文件系统格式不同,

此时就需要一个启动引导程序(boot loader)来处理内核文件加载问题,boot loader就在启动设备的第一个扇区,也就是MBR。

二、bootloader

1.概念与特点

Boot loader是一段硬件引导程序,主要是为了内核的运行做准备的,其运行在操作系统内核之前。主要作用是:初始化硬件设备,建立一个内存空间。

将系统的硬件环境和软件环境调整到一个合适的状态,也即是为调用内核准备好环境。而且不同的目标版也需要不同的Boot loader支持。

嵌入式系统中:

固态存储设备的典型空间分配结构:

[Boot loader]—[Bootparameters]—[Kernel]—[Root filesystem]

图片

Boot loader具有两种操作模式,即启动模式和下载模式。

下载模式:是指通过串口或者网络,从主机上下载文件(比如:内核镜像和根文件系统镜像等),这些下载的文件保存在目标机的RAM中,通过Boot loader,这些文件会由RAM中写道FLASH中。

启动模式:即Boot loader从目标机上的某个固态存储设备将操作系统加载到RAM中运行。

Boot loader有两个运行过程,成为stage1和stage2。

stage1的主要步骤是:硬件初始化、为stage2准备RAM空间、将stage2复制到RAM空间、设置堆栈、跳到stage2的C入口点。

stage2的主要步骤是:初始化stage2要使用的硬件设备、检查系统存储、从FLASH中读取内核镜像和根文件系统镜像到RAM中、设置内核参数、调用内核。

对于电脑等大型嵌入式系统:

boot loader可以存在MBR中,也可以存在文件系统的boot srctor中。总之,boot loader最后的功能都是用来加载内核文件

2.MBR与boot loader的关系

在安装Windows的时候,Windows系统会默认在MBR内会安装一份boot loader,并且在自己文件系统的boot sector内也会安装有boot loader。

在安装Linux的时候,你可以选择将boot loader安装在MBR,也可以选择不安装在MBR中

3.启动扇区:boot sector

每一个文件系统中都含有一个bootsector,并且这个启动扇区内也包含有boot loader。因此MBR中提供有选项功能,你可以选择启动哪一个文件系统的boot sector内的boot loader来加载不同的操作系统

4.内核文件加载结构图

过程详解

图片

MBR内提供了选项功能,你可以选择不同的选项来加载文件系统例如:

你可以选择加载Windows系统的boot sector内的启动引导程序,来最终进入Windows系统。

也可以选择Linux系统的bootsrctor内的启动引导程序,来最终进入Linux系统

三、内核加载

boot loader读取内核文件后,接下来Linux就会将内核加压缩到内存中,并且利用内核的功能,开始测试与驱动个各周边的设备,抱愧存储设备、CPU、网卡、声卡等

此时Linux内核会以自己的功能重新检测一次硬件,而不一定会使用BIOS检测到的硬件信息。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CMOS
    +关注

    关注

    58

    文章

    5157

    浏览量

    233350
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288497
  • BIOS
    +关注

    关注

    5

    文章

    455

    浏览量

    45005
  • Boot
    +关注

    关注

    0

    文章

    142

    浏览量

    35252
  • SDRAM控制器
    +关注

    关注

    0

    文章

    28

    浏览量

    8075
收藏 人收藏

    评论

    相关推荐

    嵌入式系统 Boot Loader技术内幕

    一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序.包括固化在固件(firmware)中的 boot 代码(可选),和 Boot
    的头像 发表于 03-05 09:26 2840次阅读

    嵌入式开发入门之旅

    环境搭建、嵌入式Linux内核编译、基于ARM硬件平台的嵌入式Linux系统引导和固化、Boot Loa
    发表于 07-09 16:57

    嵌入式开发入门之旅

    ARM处理器开发基础、嵌入式Linux开发入门、嵌入式Linux交叉开发环境搭建、嵌入式Linux
    发表于 07-10 15:59

    学习嵌入式LINUX笔记和体会

    学习嵌入式LINUX笔记和体会一个典型的桌面Linux系统包括3个主要的软件层---linux
    发表于 06-23 18:37

    学习嵌入式Linux笔记和体会

    应用和内核捆绑在一起,甚至可以把应用写为内核的一个线程,在内核中运行,虽然这样在移植上带来了困难,但考虑嵌入式系统对尺寸要求小的特点,是完全可行的。不过我们使用三层软件结构的模式来学习嵌入式l
    发表于 05-19 14:44

    嵌入式学习路线 嵌入式学习路线详解

    ,创客学院嵌入式开发讲师整理了最全最短的嵌入式学习路线途径,希望可以对读者们有所帮助。  嵌入式学习路线
    发表于 03-17 18:05

    嵌入式系统 Boot Loader技术内幕

    一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot
    发表于 08-13 22:15

    嵌入式linux学习笔记

    Long long ago,还在上大学的时候,写了一个关于嵌入式linux学习笔记,加上网上整合的资料,组成了一个PDF,和大家一起学习
    发表于 06-09 06:28

    学习嵌入式linux笔记

    本人是嵌入式软件专业,除了学习STM32单片机之外,我还自学了u-boot的移植,文件系统的制作,以及Linux内核的移植,在学习
    发表于 11-04 06:58

    嵌入式Linux学习笔记

    嵌入式 Linux 学习笔记
    发表于 11-04 08:29

    Linux嵌入式学习——点个灯

    灯MakefileMakefile基础Makefile函数与实例本文是基于韦东山视频的学习笔记硬件部分(Linux嵌入式学习——点个灯(一)
    发表于 11-05 07:46

    嵌入式Linux学习笔记

    嵌入式 Linux 学习笔记
    发表于 12-16 07:43

    基于嵌入式系统的Boot Loader设计概述

    Boot Loader和固化在固件(firmware)中的Boot代码(可选)共同组成一个嵌入式系统的引导加载程序。它的作用和功能就像固化到计算机内主板上的一个ROM芯片程序
    发表于 10-16 17:13 1143次阅读
    基于<b class='flag-5'>嵌入式</b>系统的<b class='flag-5'>Boot</b> <b class='flag-5'>Loader</b>设计概述

    嵌入式系统里的Boot Loader技术详解

    嵌入式系统当中你可能经常听到 boot loader(引导加载器)这一词,boot loader是指什么呢?
    的头像 发表于 09-27 18:08 3952次阅读

    嵌入式Linux-BIOS-Uboot-Boot loader 学习笔记

    ========******=========******========******=========******==========书籍名称《嵌入式Linux基础教程》,人民邮电出版社出版
    发表于 11-01 17:06 7次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux-BIOS-Uboot-Boot</b> <b class='flag-5'>loader</b> <b class='flag-5'>学习</b><b class='flag-5'>笔记</b>