• i.MX RT1050 Boot(RT1021通用)


    启动过程从上电复位 (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 闪存
    − 仅支持二进制文件

     

     

     

     

  • 相关阅读:
    python 中的深拷贝和浅拷贝
    时间复杂度
    为什么l1和l2可以防止过拟合
    逻辑回归实现多分类
    《深入浅出数据分析》读书笔记
    牛客网的输入和输出
    万物皆可embedding
    NLP中的mask的作用
    不同语言对单例模式的不同实现
    ElasticSearch 索引 VS MySQL 索引
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/16063801.html
Copyright © 2020-2023  润新知