NVIDIA Tegra
NVIDIA Tegra Linux Driver Package

Development Guide
28.3 Release


 
TX1 Boot Flow
 
BootROM
Boot Loader Components
TegraBoot
TegraBoot CPU
CBoot
U-Boot
The primary function of the Jetson TX1 boot software is to initialize the SOC (System On a Chip), including:
Initializing MC/EMC/CPU
Setting up security parameters
Loading different firmware
Maintaining Chain of Trust
Setting memory carveouts for different firmware
Flashing the device
Booting to the operating system
Additionally, the Jetson TX1 boot software also performs other operations defined by product requirements, including but not limited to:
Initialization of HDMI™/DSI
Displaying the boot logo
The flow of control in the boot software is as follows.
 
BootROM
The Jetson TX1 BootROM (BR) is hard-wired in the Tegra chip. It initializes the Boot Media and loads bootloaders and firmware from the Boot Media.
Multiple copies of the BootROM Boot Configuration Table (BCT) may be stored at the start of the Boot-Media. The BCT contains configuration parameters used by the BootROM for hardware initialization.
The BCT also contains information about the boot loader (BL), including:
Size
Entry point
Load address
Hash
The BootROM uses this information to verify and load the boot loader. The boot flow is as follows:
Boot Loader Components
The Jetson TX1 boot loader and flash components are:
TegraBoot, aka NVTBoot or just TBoot
CPU-BL, aka nvtboot-cpu
Cboot
U-Boot
TegraBoot
Jetson TX1 TegraBoot (NVTBoot) is the first boot software component loaded by BR in SysRAM, and runs on BPMP.
There are two variants of TegraBoot:
One used for cold boot
One for recovery boot/flashing
Both are generated using different configuration files and make files.
TegraBoot is responsible for:
Loading and initializing firmware (FW) components such as TOS
For details on each of these firmware components, see Security.
Creating carveouts
Completing CPU initialization
Loading the next stage boot loader
Supporting flashing
Supporting RCM boot
Reading PMIC reset reason
Loading the bootloader device tree and passing the device tree load address to CBoot
Stops execution when the CCPLEX is booted
The components of TegraBoot are as follows:
A screenshot of a cell phone Description generated with very high confidence
TegraBoot CPU
Add rollback prevention.
Using bootloader DTB, perform EMC training and update kernel DTB with training results.
Pass control to Cboot.
CBoot
Jetson TX1 CBoot is the primary CPU boot loader used on mobile platforms in the cold boot path. CBoot is feature-rich boot loader that:
Boots the kernel
Supports display and boot logo/bmp splash
Based on the Little Kernel (LK) open source boot loader
Uses the interrupt and scheduling frameworks of LKC
Uses CDF for frameworks, drivers, and libraries
As soon as the CPU starts running, CBoot starts in EL3 mode and begins executing TOS. TOS completes its initialization and passes control to CBoot in EL2 mode.
BL and kernel use separate device trees stored in separate partitions. CBoot is responsible for:
Parsing the CPU-BL parameters and initializing the boot loader device tree
Booting to the kernel or chaining to U-Boot to boot the kernel
Supporting the update mechanism
Loading the recovery kernel
Unhalts the BPMP so that the BPMP-FW can start running
The components of Cboot are as follows:
U-Boot
U-Boot is the default boot loader for NVIDIA® Tegra® Linux Driver Package.
For more information, see U-Boot Customization.