BOOTROM的理解

Bootrom(或Boot ROM)是嵌入处理器芯片内的一小块掩模ROM或写保护闪存。它包含处理器在上电或复位时执行的第一个代码。根据某些带式引脚或内部保险丝的配置,它可以决定从哪里加载要执行的代码的下一部分以及如何或是否验证其正确性或有效性。有时它可能包含其他功能,可能在引导期间或之后由用户代码使用。一些例子:

iPhone启动ROM。嵌入在掩模ROM中并且无法修改。从闪存或USB(在DFU模式下)加载下一级引导加载程序,并使用内置RSA实现验证其签名。还为下一级引导加载程序提供加速解密功能。

TI的OMAP4引导ROM。可以从闪存(NOR,NAND,OneNAND),外部存储器,SD / MMC,USB或UART加载用户代码。引导顺序和选项由带(SYSBOOT)引脚设置。为后续阶段提供一些功能(缓存/ TLB管理等)

恩智浦LPCxxxx系列Boot ROM。放置在内部闪存的隐藏部分,在开机时映射为0。实现CRP(代码读取保护),ISP(系统内编程),允许通过UART上传和刷新新代码。如果有效的用户代码在flash中(需要具有适当的校验和),则将其映射到0并跳转到它。 bootrom的一部分仍然映射以提​​供IAP(应用程序内编程)和一些其他服务。

引导程序
Bootloader负责查找和加载应该在芯片上运行的最终操作系统或固件。与bootrom的一个主要区别是它通常在可写闪存中,可以更换或升级。

有时bootrom可以执行引导加载程序的工作。例如,OMAP的bootrom足够复杂(它可以解析FAT32!),你可以加载它并直接启动Linux内核。

但是,在许多情况下,使用单独的引导加载程序,或者因为bootrom不够(或不存在),或者因为需要额外的灵活性。它可以非常简单(从RAM中的固定闪存位置加载内核并跳转到它),或者可能更复杂。例如, 的U-Boot 就像一个迷你操作系统本身 - 它有一个控制台,一些命令,允许你打破启动过程,例如修改内核命令行参数,甚至从不同的位置(SD / MMC或USB)加载内核,运行一些测试等等。

当您拥有或多或少复杂的操作系统时,通常会使用引导加载程序,在启动之前可能需要进行一些设置。像NXP的LPC系列这样的小型微控制器通常使用单片固件,因此它们可以在没有它的情况下使用(但是,可能有 自定义引导程序 对他们而言)。

在最简单的芯片上可能根本没有引导ROM或引导加载程序 - 它们只是尝试从固定的启动地址获取和执行指令。事实上,今天大多数x86芯片都是这样工作的 - 他们只是开始在FFFFFFF0上执行代码,期望芯片组已经映射了那里的BIOS闪存芯片。在这里,您可以说BIOS是引导加载程序(尽管它也为操作系统提供服务,类似于bootrom)。

ARM Boot ROM(引导只读存储器)是一个位于芯片内部的特殊存储器区域,用于初始化和引导处理器系统。Boot ROM是芯片制造商预置的固件,用于在系统上电或复位时执行一系列基本操作来启动处理器。 ARM Boot ROM的主要功能包括: 1. 处理器初始化:Boot ROM负责对处理器进行初始化,包括设置寄存器、配置时钟和系统控制等。 2. 引导加载:Boot ROM从指定的引导设备(例如闪存、SD卡等)中加载引导代码或引导程序,并将控制权转移到引导代码开始执行。 3. 系统初始化:Boot ROM负责初始化片上外设、内存控制器和其他硬件组件,以便系统能够正常运行。 4. 错误处理:Boot ROM会检测并处理一些基本错误情况,例如校验失败、设备连接错误等。 ARM Boot ROM是特定芯片厂商提供的固件,在芯片设计时就已经存在,并且无法更改。因此,Boot ROM的功能和实现方式可能会因不同的芯片而有所差异。通常,芯片厂商会提供相关的文档或手册,描述了具体的Boot ROM功能和使用方法。 需要注意的是,Boot ROM只是系统启动的第一阶段,在引导过程中可能会转移到其他存储器区域(如内部RAM)加载更复杂的引导程序或操作系统。因此,Boot ROM的主要作用是提供一个最基本的引导环境,使系统能够启动和运行。 希望以上信息对你有所帮助!如果你还有其他关于ARM Boot ROM的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值