ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

i.MX RT1050 Boot(RT1021通用)

2022-03-27 18:33:06  阅读:268  来源: 互联网

标签:引导 ROM 启动 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 闪存
− 仅支持二进制文件

 

 

 

 

 

 

 

 

 

标签:引导,ROM,启动,RT1050,程序,Boot,映像,RT1021,设备
来源: https://www.cnblogs.com/zhugeanran/p/16063801.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有