其他分享
首页 > 其他分享> > Jetson Xavier NX and Jetson AGX Xavier Series启动流程

Jetson Xavier NX and Jetson AGX Xavier Series启动流程

作者:互联网

文章目录

这是Nvidia的Jetson NX启动的大致流程介绍,适用于Jetson Xavier NX和Jetson AGX Xiavier系列。其他系列的启动流程与本文档有差异。

英文版原文可参考:
https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/bootflow_jetson_xavier.html#wwpID0E0AE0HA

Linux分层和BootLoader介绍可以参考:
嵌入式Linux操作系统引导加载程序BootLoarder

启动软件启动流程大致如下:
在这里插入图片描述
Soc:System on Chip
BootRom: 即BR
MB: Microboot
Tboot:
BPMP:
BPMP-FW:
ATF:
CBoot: Cold Boot

BootROM

BootROM(BR)是通过硬件链接的方式安装在了处理器中。 它将初始化启动媒体(硬盘或外部存储)并从中加载Microboot1(MB1)。

BR-BCT(BootROM Configuration Table)是启动时的硬件初始化配置表,包含BootROM用于硬件初始化的配置参数。启动硬件/媒体的初始地址中存有多份BR-BCT硬件配置表。
BCT还包含有关引导加载程序(BL, bootloader)的信息,包括:

BootROM使用此信息来验证和加载引导加载程序。 引导流程如下:
在这里插入图片描述

BootLoader Components加载程序组成

对于NVIDIA Jetson Xavier NX和Jetson AGX Xavier系列,引导加载程序和闪存组件为:

通用驱动程序框架

TBoot-BPMP,Tboot-CPU和CBoot需要使用通用的驱动程序drivers,一些二进制库在整个引导加载程序组件中也是公用的。 二进制文件共享一个称为“公共驱动程序框架”(CDF)的公共驱动程序和库,而不是使用单独的驱动程序和库集。

驱动程序框架的软件结构如下:
在这里插入图片描述

通用驱动程序框架包括:

CDF位于:
<top>/vendor/nvidia/tegra/bootloader/partner/common/
<top>/vendor/nvidia/tegra/bootloader/partner/t18x/common/

Microboot1, MB1

对于Jetson Xavier NX和Jetson AGX Xavier系列,Microboot1(MB1)是BR在SysRAM中加载的第一个引导软件组件,并在BPMP上运行。 该组件实现某些平台的初始化(包括CPU)和安全性配置。
MB1由NVIDIA拥有的密钥签名和加密。 下图显示了MB1中的控制流程:
在这里插入图片描述

MB1负责:

MB1由NVIDIA开发和所有,因此在Jetson BSP软件包中以二进制形式提供,但是可以通过其引导配置表MB1-BCT为特定平台进行相应配置。
有关更多MB1的信息,需参阅MB1 BCT。

TegraBoot

Jetson Xavier NX和Jetson AGX Xavier系列中,TegraBoot是在MB1之后执行的引导程序组件。 该组件分为两个组件:

TegraBoot BPMP

TegraBoot在BPMP(TBoot-BPMP)上运行。 TegraBoot-BPMP有两种variants:

TBoot-BPMP主要负责:

TBoot-BPMP的组件如下:
在这里插入图片描述

TegraBoot-CPU

TegraBoot-CPU负责:

RCM引导流程类似于cold boot,不同之处在于二进制文件是通过USB传入并直接加载到SDRAM的。TOS和BPMP-FW则于此不同。

NOTES: The CPU starts execution in EL3 mode, and executes the TOS monitor. The TOS monitor completes its initialization and gives control to the TegraBoot-CPU in EL2 mode. It then initializes the USB and starts the 3P protocol to flash the device.

TBoot-CPU的组件如下:

在这里插入图片描述

Cboot,Cold boot

在Jetson Xavier NX和Jetson AGX Xavier系列上,CBoot是冷启动路径中使用的主要的CPU引导加载程序。CBoot是基于Little Kernel(LK)的功能丰富的引导程序,它可以:

BL和内核使用存储在单独分区中的设备树。
CBoot的组件如下:
在这里插入图片描述

extlinux.conf定义内核启动顺序

CBoot功能包括默认的启动扫描顺序,它按以下顺序扫描可启动设备:

  1. 外置SD卡
  2. USB设备
  3. 内部eMMC
  4. NFS设备

CBoot在每个可启动设备(NFS设备除外)的以下目录中寻找extlinux.conf配置文件:
/boot/extlinux

extlinux.conf文件是一个标准的文本格式文件,其中包含所有内核引导信息。它包含了定义内核选项的部分,指定内核二进制文件、kernel-dtb二进制文件以及内核启动命令行(kernel boot command line)。

找到extlinux.conf文件后,CBoot将执行以下步骤:

  1. 从extlinux.conf读取启动配置
  2. 显示内核选项
  3. 等待用户选择内核选项
  4. 如果用户在超时时间(3秒)到期之前没有响应,则执行DEFAULT选项
  5. 从LINUX entry加载内核二进制文件
  6. 从FDT entry加载kernel-dtb二进制文件
  7. 启动内核
    启动完成后,用户可以在目录访问kernel和kernel-dtb二进制文件。

例如,要替换dtb二进制文件,请将此命令添加到 /boot/extlinux/extlinux.conf 中:

	FDT /boot/<dtb_file>

为了支持Secureboot,每个kernel二进制文件和kernel-dtb二进制文件都必须使用签名文件进行签名。
CBoot使用各自的签名文件对kernel二进制文件和kernel-dtb二进制文件进行身份验证。
CBoot假定签名文件与相应的二进制文件位于同一文件夹中,并且文件名带有.sig扩展名。

例如,如果内核二进制文件是/boot/Image,则内核签名文件名是/boot/Image.sig。
如果CBoot无法验证二进制文件(kernel或kernel-dtb),它将继续从其相应partition中加载二进制文件。

	NOTES:if the board’s security fuse has not been burned, CBoot ignores the authentication result and continues to load/boot the kernel. In this way CBoot loosens this Secureboot policy so kernel developers can easily modify their kernel binary without going through signing procedure every time.

标签:kernel,二进制,Series,MB1,Jetson,Xavier,CPU,CBoot,加载
来源: https://blog.csdn.net/DecadeLive/article/details/115177735