Difference between revisions of "Jetson/AGX Xavier DTBs"
(Created page with "Jetson AGX Xavier has 6 dtb partitions: bootloader-dtb, bpmp-fw-dtb, kernel-dtb and their backup dtbs (bootloader-dtb_b, bpmp-fw_b and kernel-dtb_b). So there are 3 kinds of d...")
Latest revision as of 00:26, 14 December 2018
Jetson AGX Xavier has 6 dtb partitions: bootloader-dtb, bpmp-fw-dtb, kernel-dtb and their backup dtbs (bootloader-dtb_b, bpmp-fw_b and kernel-dtb_b). So there are 3 kinds of dtb.
In JetPack 4.1.1 DP, bootloader-dtb and kernel-dtb use the same dtb file, while bpmp-fw-dtb uses another dtb file, they are defined in $JETPACK_ROOT/Xavier/Linux_for_Tegra/jetson-xavier.conf file (TBCDTB_FILE for bootloader-dtb, BPFDTB_FILE for bpmp-fw-dtb, DTB_FILE for kernel-dtb). In JetPack 4.1.1 DP, bootloader-dtb and kernel-dtb are tegra194-p2888-0001-p2822-0000.dtb and bpmp-fw-dtb is tegra194-a02-bpmp-p2888-a04.dtb.
Just like the names, bootloader-dtb is used by bootloader(cboot), bpmp-fw-dtb is used by bpmp(boot and power management processor) firmware, kernel-dtb is used by Linux kernel.
DTB Partitions on eMMC
Below is DTB partitions of JetPack 4.1.1 DP for Jetson AGX Xavier.
DTB in System
Below is how DTBs play in Jetson AGX Xavier. The jetpack version is 4.1.1 DP.
In JetPack 4.1.1 DP, bootloader-dtb is the same file with kernel-dtb and it is compiled with kernel source code. cboot reads bootloader-dtb to access EEPROM by I2C to get some board information such as board serial number and MAC address.
In JetPack 4.1.1 DP, bpmp-fw-dtb is provided as binary at $JETPACK_ROOT/Xavier/Linux_for_Tegra/bootloader. BPMP (boot and power manager processor) brings up SOC at early stage and run power manager services at run time. At high level, the main services provided by the run time firmware are:
- Clock, voltage and frequency programming
- System low power state transitions (SC states)
- Manage thermal hardware
So bpmp-fw-dtb contains information on clock, dvfs and thermal.
Kernel DTB is compiled with kernel source code. But cboot loads and modifies it at run time. For example, platform needs to carve out some memory regions for special usage, and cboot calculates the remain memory regions and update this information into kernel dtb. Cboot also needs to apply plugin-manager override to update nodes in kernel-dtb when node in plunin-manager matches. The bootargs, board serial number and MAC address are also updated by cboot.