bootloader相关内容的辨析

news2024/11/28 2:31:09

 在PC机中,BIOS(Basic Input/Output System,基本输入输出系统)和UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)是两种用于初始化系统硬件、加载操作系统启动程(如引导加载程序)的固件接口。

 BIOS参在于较为成就的PC系统内,主要作用如下:

1.硬件初始化:在系统启动时,BIOS会执行自检(POST,Power-On Self-Test)过程,检查CPU、内存、显卡、硬盘等关键硬件是否正常运行。

2.加载操作系统:完成自检后,BIOS会从预设的启动设备(如硬盘、USB驱动器、CD/DVD驱动器)中读取启动程序(如GRUB、Windows Boot Manager等),并将其加载到内存中执行,从而启动操作系统。

3.配置和设置:BIOS提供了一个简单的设置界面(BIOS Setup),允许用户配置系统硬件的参数,如启动顺序、日期和时间、CPU和内存的频率等。

而它的继任者UEFI提供了更丰富的功能和更好的安全性。它与传统BIOS的主要区别包括:

1.图形化界面:UEFI支持图形化的用户界面(GUI),这使得配置系统变得更加直观和容易。

2.更大的可寻址空间:UEFI使用64位寻址模式,相比BIOS的16位寻址模式,能够支持更大的内存空间,这对现代大内存系统尤为重要。

3.更快启动速度:UEFI通过预加载环境(Pre-EFI Initialization, PEI)和驱动程序执行环境(Driver Execution Environment, DXE)等机制,实现了更快的系统启动速度。

4.更好的安全性:UEFI内置了安全启动(Secure Boot)功能,能够确保只有经过签名认证的操作系统和驱动程序才能被加载,从而增强了系统的安全性。

5.更丰富的功能:UEFI支持网络启动、设备枚举和配置、以及更复杂的启动选项管理等功能。

那么在嵌入式系统之中是否有着可以类比这两者的存在呢?

主流的说法是bootloader和它们的功能近似。一般来讲裸机系统与RTOS系统正常上电运行不需要bootloader的参与,比如ARM架构的单片机在上电之后开始从0位置读取复位向量,然后自动执行内部的flash程序(Keil这类的集成IDE可以决定扇区擦拭与整页擦拭以及通过下载算法决定页地址),不需要像Linux/Windows系统那样将程序拷贝到ram中运行。

因为STM32内部的on chip flash属于nor flash,而且通过片上的AMBA(Advanced Microcontroller Bus Architecture)总线(AHB+APB)连接到CPU,存在着对地址空间的映射,所以CPU可以直接读取FLASH进行取指。

但是用不上不代表不存在,STM32基本都存在内置的bootloader,ST原厂将其固化在了rom里面。

例如当serial wire调试失效的时候,我们可以将boot0接入高电平用串口下载代码就是依靠原厂固化在rom中的bootloader。同理,ota升级时MCU先运行到原厂的bootloader,然后会跳转到用户自己写的存到flash中的bootloader,最后跳转到用户APP。

再例如型号陈旧的8bit单片机,它们的CPU会自动从一个内存空间位置取指执行,如果它需要从外部IIC加载数据到内部RAM再启动,那么也需要bootloader的参与。

嵌入式Linux系统里面主要是使用一种叫做U-boot的开源的引导加载程序,U-boot的主要作用:

1. 初始化硬件设备

  • 在系统启动时,U-boot首先会执行一系列的初始化操作,包括初始化硬件设备(如CPU、内存、外设等)和建立内存空间映射图。这些操作将系统的软硬件环境带到一个适合运行操作系统内核的状态。

2. 加载并引导操作系统内核

  • U-boot负责将操作系统内核镜像从存储介质(如Flash、SD卡、网络等)加载到内存中,并设置必要的启动参数,然后跳转到内核的入口点执行,从而启动操作系统。

3. 提供测试调试工具

  • U-boot包含了一系列用于测试和调试的工具,如内存显示(md)、内存修改(mm、nm)、网络测试(ping)等命令,这些工具对于开发人员来说非常有用,可以帮助他们进行系统的调试和故障排查。

4. 支持多种嵌入式操作系统和处理器

  • U-boot支持多种嵌入式操作系统内核,如Linux、VxWorks、QNX等,并且支持多个处理器系列,如PowerPC、ARM、x86、MIPS等。这使得U-boot在嵌入式系统中具有广泛的应用场景。

5. 提供灵活的功能设置

  • U-boot允许用户通过修改环境变量来设置不同的启动参数和功能选项,这使得U-boot在不同的应用场景下具有高度的灵活性和可定制性。

6. 丰富的设备驱动源码

  • U-boot包含了丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH等,这些驱动使得U-boot能够更好地支持各种硬件设备,并实现与这些设备的交互。

7. 较高的可靠性和稳定性

  • 作为嵌入式系统的引导加载程序,U-boot需要具备较高的可靠性和稳定性。U-boot的开源特性和广泛的应用基础使得其在可靠性和稳定性方面得到了充分的验证和保障。

目前就聊这么多,后面等我接触到更多的东西会进行修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nestjs nest-cli.json中的assets不生效

官方文档 Documentation | NestJS - A progressive Node.js framework // nest-cli.json{"collection": "nestjs/schematics","sourceRoot": "src","compilerOptions": {"assets": ["microservices/mail/te…

【宠粉赠书】智能计算系统:从深度学习到大模型 第2版

为了回馈粉丝们的厚爱,今天小智给大家送上一套关于图神经网络的学习宝典——《智能计算系统:从深度学习到大模型 第2版》。下面我会详细给大家介绍这本书,文末留有领取方式。 “只要你想把大模型做得更好、做得更大、做得更快、做得更省电&am…

Docker部署常用开发组件(保姆级教程)

说明 本文总结了一些常用组件的Docker启动命令及过程,在开发过程中只需花费数分钟下载和配置即可完美使用这些服务。 Mysql MySQL 是一种开源关系数据库管理系统(RDBMS),目前由 Oracle 公司维护。MySQL 以其高性能、可靠性和易用…

Qt4代码实现下面的界面

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

AI预测体彩排3采取888=3策略+和值012路或胆码测试8月22日升级新模型预测第59弹

经过近60期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,已到达90%的命中率,这给喜欢打私菜的朋友提供了极高价值的预测结果~当然了,大部…

【C++】map、set基本用法

欢迎来到我的Blog,点击关注哦💕 前言: C的STL已经学习很大一部分了,接下来介绍的是map set是c的是两种关联容器。 简单介绍 map set: 两者都使用红黑树作为底层数据结构来存储元素。map是一种键值对容器,其中每个键…

pip package查询网站(性质类似于npmjs.com)

网址:PyPI The Python Package Index python 的依赖包查询网站 就和 node 的 npmjs.com 一样

SD-WAN采用哪种网络技术?如何自建SD-WAN组网?

SD-WAN(Software-Defined Wide Area Network,软件定义广域网)是一种基于软件的网络架构,它利用软件定义网络(SDN)的技术来管理广域网(WAN)的连接和服务。SD-WAN的主要目的是提高网络…

四大LLM模型,预训练和后训练新范式详解

导读 最初,大语言模型LLM的训练过程只关注于预训练,但如今已经扩展到包含预训练和后训练两个阶段。后训练通常包括监督指令微调和对齐,这一方法在ChatGPT发布后广泛流行! 翻译自:https://magazine.sebastianraschka.com/p/new-l…

基于距离度量学习的异常检测:一种通过相关距离度量的异常检测方法

异常通常被定义为数据集中与大多数其他项目非常不同的项目。或者说任何与所有其他记录(或几乎所有其他记录)显著不同的记录,并且与其他记录的差异程度超出正常范围,都可以合理地被认为是异常。 例如上图显示的数据集中,我们有四个簇(A、B、C和D)和三个位于这些簇之外的点:P1、P…

领夹麦克风哪个牌子的好,2024年无线领夹麦克风十大品牌推荐

在追求高质量音频的时代,一款性能稳定、音质出色的无线领夹麦克风,不仅能够提升内容创作的品质,也是赠予播客爱好者、视频博主的佳礼。然而,市场上的无线领夹麦克风品种繁多,其中不乏一些厂商为追求低成本,…

微软Phi-3.5系列亮相:性能超越Gemini 1.5和GPT-4o

前沿科技速递🚀 在人工智能领域,微软从未停止过创新的步伐。尽管与OpenAI的合作为微软带来了显著的成功,但他们显然不满足于此。近日,微软再次在AI领域引发关注,正式发布了三款全新的Phi-3.5系列AI模型。这些模型不仅在…

构建基于LLM的应用程序——使用LLM的搜索和推荐引擎

在上一章中,我们介绍了构建对话应用程序的核心步骤。我们从一个基础的聊天机器人开始,然后逐步添加了更复杂的组件,例如记忆、非参数化知识和外部工具。借助LangChain的预构建组件以及Streamlit的UI渲染,这一切都变得相对简单。尽…

C++ TinyWebServer项目总结(6. 高级 I/O 函数)

文件描述符 文件描述符(File Descriptor, FD)是操作系统中用于访问文件的一个抽象概念。它是一个非负整数,通常由操作系统分配,用来标识被打开的文件或输入输出资源(如管道、网络连接等)。文件描述符在操作…

苍穹外卖之员工管理、分类管理

新增员工 新增员工 需求分析和设计 产品原型: 接口设计: 数据库设计: 代码开发 根据新增员工接口设计对应的DTO: 这是实体类属性,但是由于属性差异过大,使用DTO封装数据为: 当前端提交的数据…

java常见面试题汇总

🌏个人博客主页:意疏-CSDN博客 希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 关注 收藏支持一下笔者吧~ 阅读指南: 开篇说明一、封装 继承 多态1.封装2.继承3.多态 二、什么是重载…

非极大值抑制(Non-Maximum Suppression,简称 NMS)

本文为专栏《Python三维点云实战宝典》系列文章,专栏介绍地址“【python三维深度学习】python三维点云从基础到深度学习_python3d点云从基础到深度学习-CSDN博客”。配套书籍《人工智能点云处理及深度学习算法》提供更加全面和系统的解析。 非极大值抑制&#xff08…

揭开数字化转型的神秘面纱

​在当今快速发展的时代,数字化转型已成为众多企业和组织追求的目标。然而,对于许多人来说,数字化转型仍然笼罩着一层神秘的面纱。本研究报告旨在揭开数字化转型的神秘面纱,深入探讨其内涵、重要性以及实施策略。 一、数字化转型的…

开始尝试从0写一个项目--后端(四)

借出,归还,管理 学生和管理员登录分离 学生登录到用户界面 管理员到后台 后台和用户分离 添加代码 sems-server/src/main/java/com/ljc/controller/user/UserStudentController.java package com.ljc.controller.user;import com.ljc.constant.Jwt…

【PyCharm】配置“清华镜像”地址(pip源)

文章目录 前言一、清华镜像是什么?二、pip是什么?三、具体步骤1.复制镜像地址2.打开PyCharm,然后点击下图红框的选项3.在弹出的新窗口点击下图红框的选项进行添加4.在URL输入框中粘贴第一步复制的地址,名字可以不更改,…