Bind Partitions#

A bind process creates a hypervisor image that combines DTB/KERNEL of HVRTOS-servers, Hypervisor kernel, and PCT. This process also builds Guest-OS DTB and BPMP-DTB.

Syntax of bind_partitions#

Enter the drive-foundation folder:

# for NSR package
$ cd drive-foundation/

Use the bind_partitions command by issuing the following syntax:

$ ./make/bind_partitions -b <board_name> <domain>.<pct> -p <pct_variant> [additional options]

Example of development non-safety related (NSR) AV+L PCT use case on NVIDIA NVIDIA DRIVE AGX™ Thor™ Devkit:

For generic Linux PCT:

bind_partitions -b p3960-10-sw01 linux

Note

When the -p <pct_variant> option is omitted, the default PCT variant is dev_nsr.

Note

The default <domain> is drive_av, so drive_av can be omitted for the drive_av domain. Also note that drive_av has alias_name av and linux has alias name l. All the following commands are equivalent with upper command.

Example of ECO UFS boot configuration bind for development non-safety related build:

bind_partitions -b p3960-10-sw01 drive_av.linux -p dev_nsr

Example specifying the drive_av domain for Linux:

bind_partitions -b p3960-10-sw01 av.l

Example using the alias l for Linux in bind call:

bind_partitions -b p3960-10-sw01 l

Note

The default value and alias_name can be found in /virtualization/pct/make/t264/pct_configuration_v2.yaml file.

The following tables list the supported bind options.

Supported Bind Options for Thor™#

Example of development NSR Linux PCT with QSPI+UFS use case on NVIDIA DRIVE AGX Thor™ Devkit:

bind_partitions -b p3960-10-sw01 linux

Board Name List#

<board_name> need to be passed after -b.

Platform

Offical Name

CHIP SKU

<board_name>

SKU-REV

p3960

Thor-U

TA1080SA

p3960-10-sw01

940-63960-H310-A00

p3960-10-sw02

940-63960-H310-B00

P3960-10-sw03

940-63960-H310-C00

Thor-X

TA1090SA

p3960-10-sw03

940-63960-0010-D00

940-63960-0012-D00

940-63960-0010-000

940-63960-0012-000

Domain, PCT, PCT Variant and Memory Size List#

<pct_variant> need to be passed after -p.

<memory_size> need to be passed after -m.

<domain>.<pct>

<pct_variant>

<memory_size>

drive_av.linux

  • dev_nsr (Default)

  • test_nsr

  • prod_nsr

  • 64g (Default)

  • 32g (for 32GB DRAM)

Note

The memory size option -m <memory_size> determines the DRAM configuration for your system:

  • 64g: Configures the system for boards with 64GB DRAM capacity (8x 8GB DIMMs)

  • 32g: Configures the system for boards with 32GB DRAM capacity (8x 4GB DIMMs)

Choose the option that matches your board’s physical DRAM configuration.

An Additional Option for Thor-U#

  • Thor-X (SKU TA1090SA)

By default, Thor-X SoC is selected.

  • Thor-U (SKU TA1080SA)

Thor-U needs the following extra options:

The ENABLE_THOR_U=y option during bind_partitions.

The --board_config <path>/<board_name>_thor_u.json option during bootburn.py.

Example:

bind_partitions -b p3960-10-sw01 linux ENABLE_THOR_U=y

sudo ${NV_WORKSPACE}/drive-foundation/tools/flashtools/bootburn/bootburn.py -b p3960-10-sw01 -D --board_config ${NV_WORKSPACE}/drive-foundation/platform-config/hardware/nvidia/platform/t264/automotive/flashing/board_configs/p3960-10-sw01_thor_u.json

For more detail of using bootburn.py, refer to the Flashing section.

An Additional Option for customer_manifest#

Use the --customer_manifest parameter to pass the path to a customer manifest CUE file. This file contains information about customer configuration files to be used during the bind process. Specify multiple customer manifest files by repeating the --customer_manifest parameter.

Example with a single customer manifest file:

$ bind_partitions -b p3960-10-sw01 linux \
  --customer_manifest /path/to/customer_manifest.cue

Example with multiple customer manifest files:

$ bind_partitions -b p3960-10-sw01 linux \
  --customer_manifest /path/to/customer_manifest1.cue \
  --customer_manifest /path/to/customer_manifest2.cue

The customer manifest CUE file must specify all relevant customer configuration files required for your build. The following sections are supported:

Supported Customer Manifest Sections#

Section

Description

Merge Behavior

storage

Storage configuration CUE file paths, selected by AUTO_DOMAIN and PCT

Append

startup_security_config

QNX startup security configuration CUE file paths

Append

bpmp

BPMP DTS source paths and include directories, matched by board flavor regex

Append

server

Server DTS role-to-source mappings and include directories, selected by AUTO_DOMAIN and optionally overridden by BOARD_FLAVOR

Override by role

linux_gos

Linux GOS, Android GOS, and Linux native DTS sources and include directories, matched by board flavor regex

Append

qnx_gos

QNX GOS and QNX standard DTS sources, setup makefile includes, and DTB include directories, matched by board flavor regex

Append

Manifest ordering and merge behavior:

  • Append: Entries are accumulated across the internal manifest and all customer manifests passed to bind_partitions. Matching entries from every input manifest are included during the bind process.

  • Override by role: server role entries are applied in manifest order. If multiple manifests define the same DTS role, the later manifest wins. Within a manifest, board-specific entries that match BOARD_FLAVOR override domain-level entries for the same role.

storage

Organize storage paths by domain and PCT type. Each path can be an absolute path to a single file or a glob pattern that expands to multiple files. Paths are appended across all input manifests.

storage: {
    paths: drive_av: {
        linux: [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/storage_config/drive_av/*.cue",
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/storage_config/drive_av/linux/*.cue",
        ]
        qnx: [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/storage_config/drive_av/*.cue",
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/storage_config/drive_av/qnx/*.cue",
        ]
    }
}

For the full list of supported domains and their PCT types, refer to the $NV_WORKSPACE/foundation-t264/meta/pct/pct_configuration_v2.yaml file.

startup_security_config

Provide a flat list of paths for QNX startup security configuration files. Each entry can be an absolute path to a single file or a glob pattern (including ** for recursive matching). Paths are appended to the internal and customer manifest inputs.

startup_security_config: {
    paths: ["<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/filesystem/configs/qnx/**/*.cue"]
}

server

Specify server DTS sources and include directories. Domain keys such as drive_av are matched against AUTO_DOMAIN. Board keys such as p3960-10-.* are regular expressions matched against BOARD_FLAVOR and can override domain-level role entries. Role names must use the *_DTS suffix.

Note

In this section, a role is the left-hand key in the _server_dts_sources map. It is the stable build identifier for one server DTB, or for a related DTB that is handled by the server DTB build flow. For example, HVRTOS_GPU_SERVER_DTS identifies the GPU server DTB, PM_SERVER_DTS identifies the PM server DTB, and HYPERVISOR_NS_DTS identifies the non-secure hypervisor DTB.

The role name also determines the build-selection profile flag. For a role key named <ROLE>_DTS, the corresponding profile flag must be named ENABLE_<ROLE>. The build system also recognizes variant flags that begin with ENABLE_<ROLE>_. For example, PM_SERVER_DTS maps to ENABLE_PM_SERVER, SAFETY_SE_SERVER_DTS maps to ENABLE_SAFETY_SE_SERVER, and HYPERVISOR_NS_DTS maps to ENABLE_HYPERVISOR_NS.

server: {
    common: {
        "NV_BUILD_SERVER_DTB_INCLUDE": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/kernel-dts",
        ]
    }
    "drive_av": {
        "_server_dts_sources": {
            HVRTOS_GPU_SERVER_DTS: "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/server/drive_av/cust_gpu-server.dts"
            HYPERVISOR_NS_DTS:     "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/server/drive_av/cust_t264-hypervisor-ns-dt.dts"
        }
        "NV_BUILD_SERVER_DTB_INCLUDE": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/server/drive_av",
        ]
    }
    "p3960-10-.*": {
        "_server_dts_sources": {
            HYPERVISOR_NS_DTS: "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/p3960/common/hv/<AUTO_DOMAIN>/t264-p3960-hv-ns.dts"
        }
        "NV_BUILD_SERVER_DTB_INCLUDE": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/p3960/common/hv/<AUTO_DOMAIN>",
        ]
    }
}

Field

Description

_server_dts_sources

Map of server role keys to DTS source paths. The role key identifies which server or related DTB the source belongs to and is used to derive the matching ENABLE_<ROLE> profile flag.

NV_BUILD_SERVER_DTB_INCLUDE

Include directories passed to the preprocessor using -I flags.

bpmp

Specify BPMP DTS sources and include directories. Each top-level key is a regex matched against the BOARD_FLAVOR environment variable. Customer entries for a matching pattern are appended alongside matching entries from the internal manifest and other customer manifests. Each path entry can be an absolute path to a single DTS file or a glob pattern that expands to multiple files.

bpmp: {
    "p3960-10-.*": {
        "_bpmp_configuration_sources": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/bpmp/*.dts"
        ]
        "_bpmp_safety_configuration_sources": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/bpmp/tegra264-bpmp-safe.dts"
        ]
        "_bpmp_safety_debug_configuration_sources": []
        "NV_BUILD_BPMP_DTB_INCLUDE": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/bpmp"
        ]
    }
}

Field

Description

_bpmp_configuration_sources

DTS file patterns included in non-safety (NSR) builds.

_bpmp_safety_configuration_sources

DTS file patterns included only in safety-relevant (SR) builds.

_bpmp_safety_debug_configuration_sources

DTS file patterns included only in safety debug builds.

NV_BUILD_BPMP_DTB_INCLUDE

Include directories passed to the preprocessor using -I flags.

linux_gos

Specify Linux GOS DTS sources and include directories. The common key contributes include directories for all matching boards. Board keys are regular expressions matched against BOARD_FLAVOR. Source entries can be single DTS files or glob patterns.

linux_gos: {
    common: {
        "NV_BUILD_LINUX_GOS_DTB_INCLUDE": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/kernel-dts",
        ]
    }
    "p3960-10-.*": {
        "_linux_gos_dtb_sources": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/p3960/p3960-10/common/kernel-dts/tegra264-p3960-0010-sw01-av-l-linux-gos.dts",
        ]
        "_linux_android_dtb_sources": []
        "_linux_native_dtb_sources": []
        "NV_BUILD_LINUX_GOS_DTB_INCLUDE": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/p3960/common/kernel-dts",
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/p3960/p3960-10/common/kernel-dts",
        ]
    }
}

Field

Description

_linux_gos_dtb_sources

Linux GOS DTS source paths.

_linux_android_dtb_sources

Android GOS DTS source paths.

_linux_native_dtb_sources

Linux native DTS source paths.

NV_BUILD_LINUX_GOS_DTB_INCLUDE

Include directories used when compiling Linux GOS DTBs.

qnx_gos

Specify QNX GOS DTS sources, QNX standard DTS sources, optional setup makefile includes, and include directories. The common key contributes common include paths and setup includes. Board keys are regular expressions matched against BOARD_FLAVOR.

qnx_gos: {
    common: {
        "_qnx_setup_include": ["<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/platforms_t264.mk"]
        "NV_BUILD_GENERIC_COMMON_DTB_INCLUDE": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/common/kernel-dts",
        ]
    }
    "p3960-10-.*": {
        "_qnx_gos_dtb_sources": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/p3960/p3960-10/common/kernel-dts/tegra264-p3960-0010-sw01-av-q-qnx-gos.dts",
        ]
        "_qnx_standard_dts_sources": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/p3960/p3960-10/common/kernel-dts/tegra264-p3960-0010-sw01-qnxwrap.dts",
        ]
        "NV_BUILD_GENERIC_COMMON_DTB_INCLUDE": [
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/p3960/common/kernel-dts",
            "<DRIVE_OS_CUSTOMER_CONFIG_PATH>/nv_platforms/p3960/p3960-10/common/kernel-dts",
        ]
    }
}

Field

Description

_qnx_gos_dtb_sources

QNX GOS DTS source paths.

_qnx_standard_dts_sources

QNX standard DTS source paths.

NV_BUILD_GENERIC_COMMON_DTB_INCLUDE

Include directories used when compiling QNX DTBs.

_qnx_setup_include

Platform setup makefiles included before QNX GOS DTB variables are emitted, so board-specific make variables are available to the QNX DTB build.