Jetson Nano Boot Flow
Applies to: Jetson Nano devices only
The primary function of the NVIDIA® Jetson Nano™ 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 Nano 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 Nano BootROM (BR) is hard-wired in the SoC. 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 bootloader (BL), including:
• Size
• Entry point
• Load address
• Hash
The BootROM uses this information to verify and load the bootloader. The boot flow is as follows:
Bootloader Components
The Jetson Nano bootloader and flash components are:
• TegraBoot, aka NVTBoot or just TBoot
• CPU-BL, aka nvtboot-cpu
• CBoot
• U-Boot
TegraBoot
Jetson Nano 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
• Creating carveouts
• Completing CPU initialization
• Loading the next stage bootloader
• 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:
TegraBoot CPU
• Add rollback prevention.
• Using bootloader DTB, perform EMC training and update kernel DTB with training results.
• Pass control to CBoot.
CBoot
Jetson Nano CBoot is the primary CPU bootloader used on mobile platforms in the cold boot path. CBoot is feature-rich bootloader that:
• Boots U‑Boot
• Supports display and boot logo/bmp splash
• Based on the Little Kernel (LK) open source bootloader
• Uses the interrupt and scheduling frameworks of LK
• 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 bootloader device tree
• Chaining to U-Boot to boot the kernel
• Supporting the update mechanism
• 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 OS bootloader for NVIDIA® Jetson™ Linux Driver Package.
For more information, see
U-Boot Customization.