启动过程从上电复位 (POR) 开始,硬件复位逻辑强制 ARM 内核从片上启动 ROM 开始执行。
引导 ROM 使用 BOOT_MODE 寄存器和 eFUSE 的状态来确定引导设备。 出于开发目的,用于确定引导设备的 eFUSE 可以使用 GPIO 引脚输入来覆盖。
引导 ROM 代码还允许下载要在设备上运行的程序。 该示例是一个配置程序,它可以进一步利用串行连接为引导设备提供新映像。
设备配置数据 (DCD) 功能允许引导 ROM 代码从驻留在引导设备上的外部程序映像中获取 SOC 配置数据。 例如,DCD 可用于对 SDRAM 控制器 (SEMC) 进行编程以获得最佳设置,从而提高启动性能。 DCD 仅限于被认为对引导目的至关重要的内存区域和外围地址。
安全启动(High-Assurance Boot):在 HAB 允许用户映像执行之前,必须对映像进行签名。 签名过程由私钥持有者在镜像构建过程中完成,然后签名作为最终程序镜像的一部分包含在内。 如果配置为这样做,ROM 将使用程序映像中包含的公钥验证签名。 除了支持数字签名验证来验证程序映像外,还支持加密启动。 加密启动可用于防止直接从启动中克隆程序映像
设备。 除了串行下载器之外,可以在芯片上支持的所有引导设备上执行带 HAB 的安全引导。 引导 ROM 中的 HAB 库还提供 API 函数,允许额外的引导链组件(引导加载程序)扩展安全引导链。
ROM的主要特点包括:
• 支持从各种启动设备启动
• 串行下载器支持(USB OTG 和 UART)
• 设备配置数据 (DCD) 和插件
• 基于数字签名和加密的高保证启动 (HAB)
• 从低功耗模式唤醒
• 通过总线加密引擎 (BEE) 支持的 FlexSPI 接口在串行 NOR 上加密执行就地 (XIP)
• 通过数据协处理器 (DCP) 控制器对除串行 NOR 以外的设备进行加密引导。
引导 ROM 支持以下引导设备:
• 通过 FlexSPI 的串行 NOR 闪存
• 通过 FlexSPI 的串行 NAND 闪存
• 通过智能外部存储器控制器 (SEMC) 实现并行 NOR 闪存
• 通过 SEMC 的 RAWNAND 闪存
• SD/MMC
• SPI NOR/EEPROM
BOOT_MODE 通过在 POR_B 的上升沿采样 BOOT_MODE0 和 BOOT_MODE1 输入进行初始化,并存储在内部 BOOT_MODE 寄存器中(可从 SRC_SBMR2[BMOD[1:0]] 读取)
从保险丝引导与内部引导模式类似,但有一个区别:
在eFUSE 模式下,忽略 GPIO 引导覆盖引脚。 引导 ROM 代码仅使用引导 eFUSE 设置。
引导 ROM 包含一项使缓存能够提高引导速度的功能。
默认情况下,ROM 启用 L1-ICache 和 D-Cache。 但是,可以为 ROM 编程的fuse位不会在引导时启用 L1 I/D 缓存。
该器件具有 ROM 引导加载程序支持的各种外围设备:
LPUART、LPSPI、SEMC NAND、SEMC NOR、SD、Flex SPI
ROM 在引导过程中配置和使用以下块。
请注意,实际使用的块取决于引导模式和引导设备选择:
ROM 预计 512 字节 FlexSPI NOR 配置参数将出现在串行 NOR 闪存中的偏移量 0 处。
ROM 使用由 BOOT_CFG2[2:0] 指定的读取命令读取这些配置参数,串行时钟工作在 30 MHz
MMC/SD/eSD/SDXC/eMMC 可以连接到任何USDHC 块,并且可以通过将 4 KB 数据从 MMC/SD/eSD/eMMC 设备复制到 OCRAM 来启动。
在检查程序映像中的映像向量表头值后,ROM 代码执行 DCD 检查。
成功提取 DCD 后,ROM 代码从引导数据结构中提取目标指针和要复制到执行代码的 RAM 设备 (TCM/SDRAM) 的映像长度。
加载到 SD/MMC 引导中的最大映像大小为 32 MB。
这是因为由 ROM 分配的有限数量的 uSDHC ADMA 缓冲区描述符。
上电时间与系统/板无关。
- 典型的 QSPI 设备需要 3ms 来初始化。
- 假设 100kB 启动映像的吞吐量为 100MB/s*,则映像副本会增加 1ms 的启动流程。
* 速度估计基于 DDR 模式下双通道 QuadSPI 内存的仿真结果。
基于 DDR 模式下双通道 QuadSPI 内存的仿真结果估算的速度
上电时间与系统/板无关。
- 典型的 NAND 设备初始化需要 8ms,其中设备复位需要 5ms。
- 从 NAND 启动时,最初的 4KB 映像将被复制到 OCRAM。
- 接下来在处理 DCD 时,引导映像将被复制到其最终目标“DDR”
- 假设 100kB 启动映像的吞吐量为 10MB/s*,则映像副本会为启动流程增加 10ms。
* 根据模拟结果估算的速度。
* 如果存在坏块,图像加载时间会更长。
引导映像包括:
• 映像向量表 (IVT) — 位于固定地址的指针列表,ROM 检查该地址以确定程序映像的其他组件所在的位置。
• 引导数据——指示程序映像位置、程序映像大小(以字节为单位)和插件标志的表。
• 器件配置数据 (DCD) — IC 配置数据(例如:SDRAM 寄存器配置)
• 用户代码和数据。
ROM 将 IVT 定位在由连接到芯片的引导设备确定的固定地址。
• 下表定义了每种引导设备类型的基地址和初始加载区域大小的 IVT 偏移量
• ROM 将 4K IVT 从引导设备复制到 OCRAM,然后决定如何处理引导映像
Elftosb
− elftosb 是用于生成 I.MX 的命令行主机程序
I.MX MCU BootROM 的可启动映像。
− 它还可以使用相应的选项和适当的命令文件(称为 BD 文件)生成包含命令序列和可启动映像的打包二进制文件,称为 SB 文件。
(MFGTool 使用这个 .sb 文件)
−支持ELF/SREC/BIN输入程序图像
多功能工具
− MfgTool 支持基于 I.MXRT BootROM 和 KBOOT 的 Flashloader,可用于工厂生产环境。 Mfgtool 可以检测 BootROM 设备的存在
连接到 PC 并调用“blhost”对连接到 I.MX MCU 设备的目标存储设备上的图像进行编程。
− blhost 是一个命令行主机程序,用于与运行基于 KBOOT 的引导加载程序(MfgTool 版本的一部分)的设备进行交互。
− 仅支持 sb 文件
• DAP-Link(OpenSDA MSD 拖放)
− 仅 EVK 上的 HyperFlash/QSPI 闪存
− 仅支持二进制文件
• IDE - 第 3 方
− 仅 EVK 上的 HyperFlash/QSPI 闪存
− 仅支持二进制文件