Directory Structure for Platform Configuration Files#

This section describes the reorganization of DriveOS configuration files to provide a more structured and platform-centric approach.

Scope#

DriveOS configurations contain multiple configuration planes including BCT, BPMP, Kernel DTS, filesystem, PCT, Server device tree, storage_config, and board_config.

This section focuses primarily on Device Tree based configuration files, though the directory structure described here applies to all configuration planes.

Terminology#

To understand the directory structure, it’s essential to define the key terms used throughout this section:

  • Platform Name: The base hardware platform identifier (for example, p3960, p3970)

  • Platform SKU: The platform variant or Stock Keeping Unit identifier (for example, 10, 20``)

  • Software Version: The software variant identifier (for example, sw01, sw03)

  • Configuration Plane: A specific type of configuration (BCT, BPMP, Kernel DTS, etc.)

Layout Principles#

The reorganized configuration layout follows these principles.

Platform-Centric Organization#

All configuration planes for a platform are consolidated under a single directory in the filesystem hierarchy, enabling easier platform-specific customization and maintenance.

Hierarchical Structure#

The new layout uses a hierarchical approach that goes from general to specific:

  • Common configurations shared across all platforms

  • Top-level platform directories (for example, p3960, p3970)

  • Common configurations shared across platform variants within a platform

  • Platform-specific configurations down to the exact software version used during bind operations

Configuration Plane Consolidation#

All configuration types (BCT, BPMP, Kernel DTS, filesystem, etc.) are organized under consistent directory structures within each platform.

Configuration Inheritance#

Configuration is built from the leaf platform folder, with files including configurations in the following hierarchy:

Platform Leaf DTS
  ↳ includes Platform Common DTSI
    ↳ includes DriveOS Internal DTSI
      ↳ includes SOC Specific DTSI

Directory Structure Details#

The automotive-platform-configs directory contains two main subdirectories that serve different purposes:

driveos_customer_config#

Contains customer-configurable properties and NVIDIA reference platform implementations (nv_platforms). This includes both customer platform files and NVIDIA platform files that customers can customize.

driveos_internal_config#

Contains DriveOS internal configurations that are not customer‑configurable. Use this directory for reference only (to view files included by items in driveos_customer_config); do not modify its contents.

Directory Structure Schema#

The `automotive-platform-configs` directory follows a hierarchical naming convention:

automotive-platform-configs/
├── driveos_customer_config
│   ├── <customer_subdirectory_name>
│   └── nv_platforms
│       ├── common
│       │   └── <configuration_plane_subdirectories>
│       └── <platform_name>
│           ├── common
│           │   └── <configuration_plane_subdirectories>
│           └── <platform_name>-<platform_sku>
│               ├── common
│               │   └── <configuration_plane_subdirectories>
│               └── <platform_name>-<platform_sku>-<software_version>
│                   └── <configuration_plane_subdirectories>
├── driveos_internal_config
│   └── <configuration_plane_subdirectories>
└── OWNERS

Example Directory Structure#

automotive-platform-configs/
├── driveos_customer_config
│   ├── customer_platform_1
│   └── nv_platforms
│       ├── common
│       │   ├── bct
│       │   ├── bpmp
│       │   ├── filesystem
│       │   ├── kernel-dts
│       │   ├── pct
│       │   ├── server
│       │   └── storage_config
│       ├── p3960
│       │   ├── common
│       │   │   ├── bct
│       │   │   ├── bpmp
│       │   │   ├── filesystem
│       │   │   ├── kernel-dts
│       │   │   ├── pct
│       │   │   ├── server
│       │   │   └── storage_config
│       │   ├── p3960-10
│       │   │   ├── common
│       │   │   │   ├── bct
│       │   │   │   ├── bpmp
│       │   │   │   ├── filesystem
│       │   │   │   ├── kernel-dts
│       │   │   │   ├── pct
│       │   │   │   ├── server
│       │   │   │   └── storage_config
│       │   │   ├── p3960-10-sw01
│       │   │   │   ├── bct
│       │   │   │   ├── board_config
│       │   │   │   ├── bpmp
│       │   │   │   ├── filesystem
│       │   │   │   ├── kernel-dts
│       │   │   │   ├── pct
│       │   │   │   ├── server
│       │   │   │   └── storage_config
│       │   │   └── p3960-10-sw03
│       │   │       ├── bct
│       │   │       ├── board_config
│       │   │       ├── bpmp
│       │   │       ├── filesystem
│       │   │       ├── kernel-dts
│       │   │       ├── pct
│       │   │       ├── server
│       │   │       └── storage_config
│       │   └── p3960-20
│       │       ├── common
│       │       ├── p3960-20-sw01
│       │       └── p3960-20-sw03
│       └── p3970
│           ├── common
│           ├── p3970-10
│           └── p3970-20
├── driveos_internal_config
│   ├── bct
│   ├── bpmp
│   ├── filesystem
│   │   └── security_configs
│   ├── kernel-dts
│   ├── pct
│   ├── server
│   └── storage_configs
└── OWNERS

The common directories serve as shared configuration layers:

  • Common in nv_platforms: Contains configurations common across all platforms (for example, p3960, p3970)

  • Common in p3960: Contains configurations common for both p3960-10 and p3960-20

  • Common in p3960-10: Contains configurations common for both p3960-10-sw01 and p3960-10-sw03

Configuration Planes#

Each platform directory contains a pre-defined set of subdirectories for different configuration types:

  • bct: Boot Configuration Table configurations

  • bpmp: Boot and Power Management Processor configurations

  • filesystem: File system configurations and security configurations

  • kernel-dts: Kernel Device Tree specifications

  • pct: Platform Configuration Table configurations

  • server: Server device tree configurations

  • storage_config: Storage-specific configurations

  • board_config: Board config json’s for a given board

Note

New directories can be added if any new configuration plane is introduced.

Note

In DriveOS 7.2.4.0, the file-level and property-level reorganization to separate customer-configurable and DriveOS Internal properties is complete for all Device Tree (DT) configuration planes: bct, bpmp, kernel-dts, and server.

Migration Support#

Starting with DriveOS 7.2.2.0, customers need to adapt to the new configuration layout structure. The following changes are required:

Existing File Modifications#

Any modifications customers were making to existing delivered files will now require path changes. Customers must adapt to the new paths where:

  • Internal DriveOS files are located under the driveos_internal_config directory.

  • Platform-specific files are located in the driveos_customer_config directory.

New File Additions#

Any new files customers need to add must follow the new layout principles and be placed in the driveos_customer_config directory according to the hierarchical structure described above.

Follow these steps to migrate from the legacy structure to the new layout:

  1. Identify all customizations by configuration plane (BCT, BPMP, kernel-dts, filesystem, PCT, server, storage_config, board_config). Record current file paths, include chains, and build/tool references.

  2. Create your customer platform structure under driveos_customer_config/<your_customer_subdirectory_name>/ following the same hierarchical naming convention as the schema:

    • Create platform folders for each of your platforms (for example, <platform_name>).

    • Create platform-SKU folders (for example, <platform_name>-<platform_sku>) and software version folders (for example, <platform_name>-<platform_sku>-<software_version>), as needed.

      Note

      The software version folder <platform_name>-<platform_sku>-<software_version> is the leaf level directory in the hierarchical structure. It is highly recommended that this leaf folder name matches the bind argument (-b) used during bind_partitions.

    • Under each level, create subdirectories for each configuration plane you customize (for example, bct, bpmp, filesystem, kernel-dts, pct, server, storage_config, board_config, etc.)

    • Optionally create common folders at the appropriate scope to share configurations:

      • <your_customer_subdirectory_name>/common (shared across all your platforms)

      • <platform_name>/common (shared across all SKUs of that platform)

      • <platform_name>-<platform_sku>/common (shared across all software versions of that SKU)

    • Then map each item to the appropriate scope:

      • Use <your_customer_subdirectory_name>/common/<configuration_plane>/ for configurations shared across all your platforms.

      • Use <platform_name>/common/<configuration_plane>/ for configurations shared by all SKUs of a platform.

      • Use <platform_name>-<platform_sku>/common/<configuration_plane>/ for configurations shared by all software versions of a SKU.

      • Use <platform_name>-<platform_sku>-<software_version>/<configuration_plane>/ for configurations unique to a specific software version.

    • Do not modify files under driveos_internal_config.

  3. Create the directory structure following the same hierarchy as shown in the schema and move or recreate files in the mapped locations, using common directories to de-duplicate shared content (for example, <your_customer_subdirectory_name>/common applies to all your platforms; <platform_name>/common applies to all SKUs of that platform; <platform_name>-<platform_sku>/common applies to all software versions of that SKU).

  4. Update references: fix #include paths and adjust any build/tooling scripts to point to the new directories and filenames.

  5. Validate the changes and perform a full platform build.