Jetson TX2 启动流程
适用于: NVIDIA® Jetson™ TX2 系列设备
启动软件中的控制流程如下。
BootROM
NVIDIA® Jetson™ TX2 BootROM (BR) 硬连线在处理器中。它初始化启动介质并从启动介质加载 Microboot1 (MB1)。
启动 ROM 启动配置表 (BR-BCT) 的多个副本可以存储在启动介质的开头。BR-BCT 包含 BootROM 用于硬件初始化的配置参数。
BCT 还包含有关引导加载程序 (BL) 的信息,包括
• 大小
• 入口点
• 加载地址
• 哈希
BootROM 使用此信息来验证和加载引导加载程序。启动流程如下
启动加载程序组件
Jetson TX2 启动加载程序和闪存组件包括
• 通用驱动程序框架 (CDF)
• Microboot1 (MB1)
• TBoot-BPMP (MB2)
• CPU-BL
• TBoot-CPU
• CBoot
• U-Boot
通用驱动程序框架
MB1、TegraBoot-BPMP 和 TegraBoot-CPU/CBoot 各自需要使用多个驱动程序之一。此外,一些库在启动加载程序组件之间是通用的。二进制文件没有使用单独的驱动程序和库集,而是共享一个通用的驱动程序和库池,称为通用驱动程序框架 (CDF)。
注意 | 由于 U-Boot 与 NVIDIA 专有的启动加载程序软件是分开构建的,因此它不支持或使用 CDF。 |
使用通用驱动程序框架的软件设计架构如下
通用驱动程序框架包括
• 存储驱动程序,如 eMMC、QSPI-NOR、mSATA 和 UFS
• 主机接口驱动程序,如 UART、USB
• 显示驱动程序
• 调试和控制台库
• 其他模块的库,例如
• 时钟
• SE
• PMIC
• 定时器
• Fuse
• GPIO
• PWM
• EEPROM
• 键盘
• PSCI
• 软件库,例如
• 加密
• 传输
• 分区管理器
• Sparse
• 传输库
• 支持 LZF、Zlib 和 LZ4 的解压缩库
• clib,动态内存分配库和缓存库
CDF 在以下位置提供
<top>/vendor/nvidia/tegra/bootloader/partner/common/
<top>/vendor/nvidia/tegra/bootloader/partner/t18x/common/
Microboot1
Jetson TX2 Microboot1 (MB1) 是 BR 在 SysRAM 中加载的第一个启动软件组件,并在 BPMP 上运行。MB1 被认为是 BR 的扩展。MB1 提供了广泛的灵活性来更改或修复启动顺序。此组件还实现了一些精细的功能,如 Denver 初始化和安全 Fabric 更改。
由于 MB1 是 BootROM 的扩展,因此它由 NVIDIA 拥有的密钥(驻留在 BootROM 中的单独密钥)签名和加密。下图显示了 MB1 中的控制流程。
MB1 负责
• 固件初始化,包括 MTS 预启动、SPE 和 CAN
• 平台配置,包括
• 配置引脚复用
• 配置 GPIO
• 焊盘设置
• 产品设置
• 初始化导轨,包括 CPU、内存、GPU 等所需的导轨。
• BR 所需的 PMIC 命令
• 配置 SCR
• 根据 MB1 启动配置表 (MB1-BCT) 初始化 SDRAM
• 加载初始化 CPU 复合体 (CCplex) 的固件
• 设置安全设置
• 为 SoC 配置引脚复用/GPIO
• 为 VDD_CPU 和 VDD_DDR 导轨编程 PMIC
• 创建隔离区
• 支持闪存,以不同的 mb1_recovery.bin 二进制文件形式提供
• 通过下载包含二进制文件的数据块并从该数据块加载二进制文件来支持 RCM 启动
• 加载下一阶段启动加载程序 TBoot-BPMP (MB2)
• 支持 SC7
MB1 归 NVIDIA 所有,因此在 Jetson BSP 软件包中以二进制文件形式提供。虽然它以二进制文件形式提供,但您可以使用其启动配置表(称为 MB1-BCT)为特定平台配置其行为。MB1 读取 MB1-BCT 以配置平台。
有关 MB1 的信息,请参阅 MB1 BCT 。
TegraBoot
Jetson TX2 TegraBoot 是在 MB1 之后执行的启动加载程序组件。此组件分为两个部分
• TBoot-BPMP (MB2)
• TBoot-CPU
它们在其上执行的处理器决定了运行哪个组件。两者都作为源代码发布给 OEM,以供参考实现。
TegraBoot-BPMP
Jetson TX2 TegraBoot 的这一部分在 BPMP (tboot-BPMP) 上运行。TegraBoot-BPMP (MB2) 有两个变体
• 一个用于冷启动
• 一个用于恢复启动
两者都使用不同的配置文件和 make 文件生成。
TBoot-BPMP 负责
• 加载和初始化固件 (FW) 组件
• 创建隔离区
• 完成 CPU 初始化
• 加载下一阶段启动加载程序
• 支持闪存
• 支持 RCM 启动;这是 TegraBoot-BPMP (MB2) 恢复启动
• 读取 PMIC 复位原因
• 加载启动加载程序设备树并将设备树加载地址传递给 CPU-BL
• 将控制权交给 BPMP-FW
TBoot-BPMP 的组件如下
TegraBoot-CPU
Jetson TX2 TegraBoot-CPU 负责
• 闪存
• RCM 启动
RCM 启动的流程类似于冷启动,只是二进制文件通过 USB 从主机传输并直接加载到 SDRAM。TOS 和 BPMP-FW 不在此路径中加载。
注意 | 一旦 CPU 开始运行,它就会在 EL3 模式下启动。TOS 监控代码完成其初始化并将控制权交给 TegraBoot-CPU。然后,它初始化 USB 并启动 3P 协议以刷新设备。 |
• 对于正常闪存,TegraBoot-CPU 从主机逐个获取二进制文件并将它们刷新到设备。
• 在 RCM 启动中,TegraBoot-CPU 从 MB1 下载的数据块中获取二进制文件。二进制文件不会被刷新到设备上。
TBoot-CPU 还可以通过集成相关库(如 linuxboot 等)来支持冷启动。但是,此版本的 TBoot-CPU 未经过测试或维护。
TBoot-CPU 的组件如下
CBoot
Jetson TX2 CBoot 是冷启动路径中移动平台上的主要 CPU 启动加载程序。CBoot 是功能丰富的启动加载程序,它
• 启动内核
• 支持显示、启动徽标和已验证启动
• 基于 Little Kernel (LK) 开源启动加载程序
• 使用 LKC 的中断和调度框架
• 将 CDF 用于框架、驱动程序和库
注意 | 一旦 CPU 开始运行,它就会在 EL3 模式下启动并开始执行 TOS。TOS 完成其初始化并将控制权传递给 EL2 模式下的 CBoot。 |
BL 和内核使用存储在单独分区中的单独设备树。CBoot 负责
• 解析 CPU-BL 参数并初始化启动加载程序设备树
• 启动到内核或链接到 U-Boot 以启动内核
• 支持更新机制
• 已验证启动
CBoot 的组件如下
CBoot 的源代码可在以下网址公开获取
源代码位于名为 cboot_src.tbz2 的文件中。它包含用户的说明。
U-Boot
U-Boot 是 NVIDIA® Jetson™ Linux 驱动程序包的默认 OS 启动加载程序。
有关更多信息,请参阅