bootloader相关内容的辨析

2024-08-22 13:52

本文主要是介绍bootloader相关内容的辨析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 在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的开源特性和广泛的应用基础使得其在可靠性和稳定性方面得到了充分的验证和保障。

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

这篇关于bootloader相关内容的辨析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096460

相关文章

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Java如何将文件内容转换为MD5哈希值

《Java如何将文件内容转换为MD5哈希值》:本文主要介绍Java如何将文件内容转换为MD5哈希值的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java文件内容转换为MD5哈希值一个完整的Java示例代码代码解释注意事项总结Java文件内容转换为MD5

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

全解析CSS Grid 的 auto-fill 和 auto-fit 内容自适应

《全解析CSSGrid的auto-fill和auto-fit内容自适应》:本文主要介绍了全解析CSSGrid的auto-fill和auto-fit内容自适应的相关资料,详细内容请阅读本文,希望能对你有所帮助... css  Grid 的 auto-fill 和 auto-fit/* 父元素 */.gri

解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException: org.junit.Test问题

《解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException:org.junit.Test问题》:本文主要介绍解决tomcat启动时报Junit相... 目录tomcat启动时报Junit相关错误Java.lang.ClassNotFoundException

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调