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 |
|
|
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=yoption duringbind_partitions.The
--board_config <path>/<board_name>_thor_u.jsonoption duringbootburn.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:
Section |
Description |
Merge Behavior |
|---|---|---|
|
Storage configuration CUE file paths, selected by |
Append |
|
QNX startup security configuration CUE file paths |
Append |
|
BPMP DTS source paths and include directories, matched by board flavor regex |
Append |
|
Server DTS role-to-source mappings and include directories, selected by
|
Override by role |
|
Linux GOS, Android GOS, and Linux native DTS sources and include directories, matched by board flavor regex |
Append |
|
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:
serverrole 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 matchBOARD_FLAVORoverride 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 |
|---|---|
|
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 |
|
Include directories passed to the preprocessor using |
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 |
|---|---|
|
DTS file patterns included in non-safety (NSR) builds. |
|
DTS file patterns included only in safety-relevant (SR) builds. |
|
DTS file patterns included only in safety debug builds. |
|
Include directories passed to the preprocessor using |
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 DTS source paths. |
|
Android GOS DTS source paths. |
|
Linux native DTS source paths. |
|
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 DTS source paths. |
|
QNX standard DTS source paths. |
|
Include directories used when compiling QNX DTBs. |
|
Platform setup makefiles included before QNX GOS DTB variables are emitted, so board-specific make variables are available to the QNX DTB build. |