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

相关文章

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

Node Linux相关安装

下载经编译好的文件cd /optwget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gztar -xvf node-v10.15.3-linux-x64.tar.gzln -s /opt/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /opt/nod

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

枚举相关知识点

1.是用户定义的数据类型,为一组相关的常量赋予有意义的名字。 2.enum常量本身带有类型信息,即Weekday.SUN类型是Weekday,编译器会自动检查出类型错误,在编译期间可检查错误。 3.enum定义的枚举类有什么特点。         a.定义的enum类型总是继承自java.lang.Enum,且不能被继承,因为enum被编译器编译为final修饰的类。         b.只能定义

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学