BOOTROM的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaozi0221/article/details/89307844

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)。

猜你喜欢

转载自blog.csdn.net/xiaozi0221/article/details/89307844