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-10andp3960-20Common in p3960-10: Contains configurations common for both
p3960-10-sw01andp3960-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_configdirectory.Platform-specific files are located in the
driveos_customer_configdirectory.
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:
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.
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 duringbind_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
commonfolders 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.
Create the directory structure following the same hierarchy as shown in the schema and move or recreate files in the mapped locations, using
commondirectories to de-duplicate shared content (for example,<your_customer_subdirectory_name>/commonapplies to all your platforms;<platform_name>/commonapplies to all SKUs of that platform;<platform_name>-<platform_sku>/commonapplies to all software versions of that SKU).Update references: fix
#includepaths and adjust any build/tooling scripts to point to the new directories and filenames.Validate the changes and perform a full platform build.