Jetson Nano 启动流程
适用于: 仅适用于 Jetson Nano 设备
NVIDIA® Jetson Nano™ 启动软件的主要功能是初始化 SoC(片上系统),包括
• 初始化 MC/EMC/CPU
• 设置安全参数
• 加载不同的固件
• 维护信任链
• 为不同的固件设置内存预留区
• 刷写设备
• 启动到操作系统
此外,Jetson Nano 启动软件还执行产品需求定义的其他操作,包括但不限于
• HDMI™/DSI 的初始化
• 显示启动徽标
启动软件中的控制流程如下。
BootROM
Jetson Nano BootROM (BR) 硬连线在 SoC 中。它初始化启动介质并从启动介质加载引导加载程序和固件。
启动介质的开头可能存储 BootROM 启动配置表 (BCT) 的多个副本。BCT 包含 BootROM 用于硬件初始化的配置参数。
BCT 还包含有关引导加载程序 (BL) 的信息,包括
• 大小
• 入口点
• 加载地址
• 哈希值
BootROM 使用此信息来验证和加载引导加载程序。启动流程如下
引导加载程序组件
Jetson Nano 引导加载程序和闪存组件包括
• TegraBoot,也称为 NVTBoot 或 TBoot
• CPU-BL,也称为 nvtboot-cpu
• CBoot
• U-Boot
TegraBoot
Jetson Nano TegraBoot (NVTBoot) 是 BR 在 SysRAM 中加载的第一个启动软件组件,并在 BPMP 上运行。
TegraBoot 有两种变体
• 一种用于冷启动
• 一种用于恢复启动/刷写
两者都使用不同的配置文件和 make 文件生成。
TegraBoot 负责
• 加载和初始化固件 (FW) 组件,例如 TOS
• 创建预留区
• 完成 CPU 初始化
• 加载下一阶段引导加载程序
• 支持刷写
• 支持 RCM 启动
• 读取 PMIC 复位原因
• 加载引导加载程序设备树并将设备树加载地址传递给 CBoot
• 当 CCPLEX 启动时停止执行
TegraBoot 的组件如下
TegraBoot CPU
• 添加回滚预防机制。
• 使用引导加载程序 DTB,执行 EMC 训练,并使用训练结果更新内核 DTB。
• 将控制权传递给 CBoot。
CBoot
Jetson Nano CBoot 是冷启动路径中移动平台使用的主要 CPU 引导加载程序。CBoot 是功能丰富的引导加载程序,它
• 启动 U-Boot
• 支持显示和启动徽标/bmp 闪屏
• 基于 Little Kernel (LK) 开源引导加载程序
• 使用 LK 的中断和调度框架
• 使用 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 驱动程序包的默认操作系统引导加载程序。