// RESEARCH_TRANSMISSION ID: BSP_BOOTROM_MASKROM

BSP学习(BootROM与MaskROM原理)

BEGIN_PAYLOAD 20260820

工作模式

RK3399有两种工作模式:

  1. Normal模式:一般情况下,在镜像烧录完成后,开发板上电后会直接正常启动系统,这就是Normal模式。Normal模式支持eMMC或者SD卡启动
  2. 升级模式(分为三种):
    1. MaskRom模式:在没有bootloader程序的情况下,停在BootRom等待线刷固件
    2. Loader升级模式:有bootloader时,通过bootloader加载镜像
    3. SD升级模式:在外部通过工具在SD卡烧录镜像,插卡后直接从SD卡启动

总结:

img

以上就是嵌入式系统普遍的工作模式,各芯片厂商的命名有些区别,但底层原理都是一样的。

MaskROM与BootROM

ROM:Read only memory,只读存储器。

MaskROM:掩模只读存储器,芯片的一种制造工艺,在芯片制造的最后一道工序中,通过“掩模”(Mask)工艺直接把数据“刻”在硅片上。

BootROM:启动程序存储器,实际就是启动程序,然后这个启动程序存放在MaskROM中。

MaskROM是一个容器BootROM软件是启动程序

BootROM

BootROM是由SoC厂商设计的,它是芯片出厂时就固化在硅片内部的只读代码。BootROM是SoC启动时的入口点(当芯片上电,时钟稳定后,CPU执行的第一行代码)。

BootROM 程序与 u-BootKernel 最大的不同是它不是存放在常见的存储介质中,如 SRAM、DDR、Flash等,它在芯片制造的 最后阶段(光刻掩膜阶段),代码就已经作为逻 辑电路的一部分被“刻”在硅片上了。

当芯片离开芯片可代工厂后就再也无法更改。事实上在芯片仿真验证阶段的后期就基本不会再进行修改了。

流片后如果要修改 BootROM 代价巨大,属于一级事故,所以芯片设计阶段会异常谨慎。 为了防止真的出了问题需要修复,可以在芯片中预留了一些寄存器或者极少的 SRAM。 如果真的有问题必须修复,一般会通过 patch进行 workaround,在芯片启动阶段将需要修改的部分引导至备用SRAM或寄存器来进行功能修复。

由于BootROM是固化在逻辑电路上的,所以其空间很小且极其宝贵,通常只有32~128KB,所以它只负责保证芯片上电后生存必要的功能。

BootROM功能

总结为三点:找系统验真伪救砖头

找系统–启动介质选择

芯片上电后,BootROM会扫描外部接口(SD卡、eMMC、UFS、SPI Flash等),寻找合法的引导程序。

可以按照预设的优先级进行搜索。

除了扫描之外,也有厂商会提供BootstrapPins,SoC会预留几个特定的针脚,PCB厂商在设计电路板时,通过上拉电阻(接高电平)或者下拉电阻(接地)来设置这些引脚的状态。

在CPU刚上电后的几个微妙内,BootROM会读取这些针脚的电平值来判断启动介质。

验真伪–安全校验

很多高端SoC会开启“安全启动”,目的是防止外部替换存储介质进行篡改系统或破解行为。

救砖头–MaskROM模式

如果外部存储器是空的或者固件损坏,BootROM会启动内置的极简USB驱动,并初始化SRAM。把SoC变成一个USB从设备。

电脑可以通过USB线将最初始的代码下载到SoC的内部SRAM里运行。

变砖就是,无法通过外部下载器下载镜像,无法进入系统。

升级模式详解

MaskROM模式

MaskROM升级原理是:人为的把Flash(Nor Flash、 Nand Flash和eMMC等存储设备)的CLK时钟引脚与地线短接,使得BootROM程序无法获取合法的启动介质从而去初始化USB设备以及SRAM并停留在BootROM阶段,等待用户下载固件。

通常来说在设备可以进入loader升级模式的情况下,优先使用Loader升级模式。

我们的开发版-Nanopc-T4设计了Boot按键,不需要额外的短接,进入MaskROM相对安全且方便,可以作为日常烧录手段。

Nanopc-T4进入MaskROM的方法是,开发板Type c口接PC,在开发板下电后,长按Boot键5s,然后上电。如果此时打开RKdev烧录工具,就会显示“发现一个MASKROM设备”

Loader模式

loader模式下,bootloader会进入升级状态,等待主机命令,用于固件升级等。要进入Loader模式,必须让bootloader在启动时检测到Recovery键按下,且 Type-C处于连接状态。

Nanopc-T4进入 Loader 模式的方法是,开发板Typec 口接PC,在开发板下电的后,长按 Recovery (1.5s以上),上电。

SD卡模式

使用MicroSD更新固件,需要在电脑上,通过 SD卡烧录工具,将统一固件写入MicroSD卡, 目前此操作只支持在Windows操作系统上完 成。

EOF CHECKSUM_OK

// EXTERNAL_CHANNEL

COMMENTS