Jetson TX1 启动流程

NVIDIA® Jetson™ TX1 启动软件的主要功能是初始化 SOC(片上系统),包括:
初始化 MC/EMC/CPU
设置安全参数
加载不同的固件
维护信任链
为不同的固件设置内存隔离区
刷写设备
引导至操作系统
此外,Jetson TX1 启动软件还执行产品需求定义的其他操作,包括但不限于:
HDMI™/DSI 初始化
显示启动徽标
启动软件中的控制流程如下。
A diagram of a computer system Description automatically generated

BootROM(启动只读存储器)

Jetson TX1 BootROM (BR) 硬连线在处理器中。它初始化启动介质,并从启动介质加载引导加载程序和固件。
启动介质的开头可以存储 BootROM 启动配置表 (BCT) 的多个副本。BCT 包含 BootROM 用于硬件初始化的配置参数。
BCT 还包含有关引导加载程序 (BL) 的信息,包括:
大小
入口点
加载地址
哈希值
BootROM 使用此信息来验证和加载引导加载程序。启动流程如下:

引导加载程序组件

Jetson TX1 引导加载程序和刷写组件包括:
TegraBoot,也称为 NVTBoot 或 TBoot
CPU-BL,也称为 nvtboot-cpu
Cboot
U-Boot

TegraBoot

Jetson TX1 TegraBoot (NVTBoot) 是 BR 在 SysRAM 中加载的第一个启动软件组件,并在 BPMP 上运行。
TegraBoot 有两个变体:
一个用于冷启动
一个用于恢复启动/刷写
两者都使用不同的配置文件和 make 文件生成。
TegraBoot 负责:
加载和初始化固件 (FW) 组件,例如 TOS
有关这些固件组件中每一个的详细信息,请参阅 安全
创建隔离区
完成 CPU 初始化
加载下一阶段引导加载程序
支持刷写
支持 RCM 启动
读取 PMIC 复位原因
加载引导加载程序设备树并将设备树加载地址传递给 CBoot
当 CCPLEX 启动时停止执行
TegraBoot 的组件如下:
A screenshot of a cell phone Description generated with very high confidence

TegraBoot CPU

添加回滚预防。
使用引导加载程序 DTB,执行 EMC 训练并使用训练结果更新内核 DTB。
将控制权传递给 Cboot。

CBoot

Jetson TX1 CBoot 是移动平台上冷启动路径中使用的主要 CPU 引导加载程序。CBoot 是功能丰富的引导加载程序,它:
引导内核
支持显示和启动徽标/bmp 启动画面
基于 Little Kernel (LK) 开源引导加载程序
使用 LKC 的中断和调度框架
使用 CDF 用于框架、驱动程序和库
一旦 CPU 开始运行,CBoot 就在 EL3 模式下启动并开始执行 TOS。TOS 完成其初始化并将控制权传递给 EL2 模式下的 CBoot。
BL 和内核使用存储在单独分区中的单独设备树。CBoot 负责:
解析 CPU-BL 参数并初始化引导加载程序设备树
引导至内核或链接到 U-Boot 以引导内核
支持更新机制
取消 BPMP 的停止状态,以便 BPMP-FW 可以开始运行
Cboot 的组件如下:
A screenshot of a computer Description automatically generated with medium confidence

U-Boot

U-Boot 是 NVIDIA® Jetson™ Linux 驱动程序包的默认 OS 引导加载程序。
有关更多信息,请参阅 U-Boot 定制。