Boot Loader Architecture
Note: | This chapter is currently under review. We recommend that before you use this information, check with your NVIDIA® customer engineer (CE) for verification of its accuracy. |
The Boot ROM (BR) looks up all possible start devices and read the Boot Configuration Table (BCT). The BCT contains the external RAM configuration to load more advanced boot loaders. By examining the BCT the Boot ROM identifies the state of the boot loader and the secure boot key.
The simplified NVIDIA Boot Loader (NvBL) functionality provides two independent binaries:
• A binary to run on the co-processor or BPMP, called TBoot or NVTBoot.
• A binary running on the CPU cluster, called CBoot.
Supported Features
The BDK features include:
• Pre-emptive multithreading with mutexes and semaphores using NvOs APIs
• Full Cortex A9 and Cortex A15 processor support, including:
• L1 and L2 caching
• MMU translation
• Hardware floating point
• ODM kit support for ODM adaptations written using NVIDIA ODM Services APIs
• Serial interfaces: I2C and UART
• Storage interfaces: QSPI and eMMC
• Nv3p USB protocol support for integration with NVIDIA flashing mechanism
• Image loading from the boot media
TegraBoot Overview
The following figure shows the TegraBoot components.
Component Summary
The following table describes the components in the diagram.
Component | Description |
GPT Reader library | Basic GUID Partition Table library for reading the partition table and locating a particular type of partition. |
PMU library | Basic PMIC, setting charging current, determining battery charge status, and powering off the device. |
Minimal 3P Server library | Handles recovery mode booting, supporting commands to get BoardID, download BCT, NCT, BL‑CPU, SecureOS, and WB0. |
eMMC driver | Read-only support. |
Security Engine driver | Decrypts and verifies binaries. This is required when security features are enabled. |
USB driver | Gadget mode supported for charging and downloading binaries with the flashing tool. |
QSPI Flash driver | Read-only support. |
I2C driver | Basic master-mode support. |
Pinmux driver | Configuration code. |
GPIO driver | Complete support. |
UART driver | Complete support. |
SDRAM | Initialization code. |
Clock and Reset | Complete support. |
Functional Summary
TegraBoot (tboot) provides the following boot functionality:
• Basic cold boot
Once the boot device has all the required partitions, the boot ROM (BR) loads tboot into IRAM and transfers control to tboot. Tboot then loads and verifies the binaries (Secure OS/BL-CPU) and executes the CPU cluster and stops the BPMP.
• Recovery Mode (RCM) boot
The BR enters recovery mode on validation failure of critical boot-device partitions or on forced-recovery initiated by the user or the boot loader. The BR interacts with the flashing tool on the host side to download tboot to IRAM and start execution. Then tboot interacts with the flashing tool on the host to download the BCT, initialize the SDRAM, dowload and verify the next stage binary (BL-CPU) before starting the CPU cluster and halting the BPMP.
• Carveout regions and loading images
tboot handles the creation of different carevouts that are either accompanied with loading and verifying the firmware, or configuring some confidential device.