Jetson TX1 启动流程
NVIDIA® Jetson™ TX1 启动软件的主要功能是初始化 SOC(片上系统),包括:
• 初始化 MC/EMC/CPU
• 设置安全参数
• 加载不同的固件
• 维护信任链
• 为不同的固件设置内存隔离区
• 刷写设备
• 引导至操作系统
此外,Jetson TX1 启动软件还执行产品需求定义的其他操作,包括但不限于:
• HDMI™/DSI 初始化
• 显示启动徽标
启动软件中的控制流程如下。
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 的组件如下:
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 的组件如下:
U-Boot
U-Boot 是 NVIDIA® Jetson™ Linux 驱动程序包的默认 OS 引导加载程序。