SDK Environment (For Structural Changes)#

This section covers SDK environment structural changes. DriveOS 7.0 presents a single source of truth by defining envfile at the top of the SDK install directory, which assists in understanding DriveOS variables used throughout the SDK.

The envfile is a text file for development, used for sourcing SDK environment variables.

Security Services SDK Structure Changes#

Target Changes

Backward Compatible

Platform

OS

PKCS#11 Sample Application is intended for usage on Thor in 7.0.2. README describes how to set a Makefile flag to build for Orin if needed.

Note

From 7.2.3.0, PKCS#11 Sample Application supports both Orin and Thor without rebuild.

Yes

NSR, SR

Linux and QNX

Migration Path

  • Orin to Thor

Migration Rationale

Channel Id(s) differ between Thor and Orin. Support for NVIDIA channel extension APIs relies on supplying the correct Channel Id according to the SOC in use. The sample application is built for Thor to use the Channel Id(s)

Steps to Migrate

Refer to Sample Application README file for the following note:

This reference application is intended for customers using Thor. If you are using Orin, then please set the TEGRA_CHIPID_TEGRA23 flag in Makefile.tmk to use the correct channel IDs.

Multimedia SDK Structure Changes#

Target Changes

Backward Compatible

Platform

OS

nvm_ide_sci app samples prior to the 7.0.1.0 release included logic to insert fences associated with reference frames to ensure ordered execution. Changes implemented in 7.0.3 invalidated the need to insert fences in this manner. We recommend removing the logic in existing applications (if implemented).

Yes

NSR, SR

Linux and QNX

Migration Path

  • Orin to Thor

Migration Rationale

There is no run time switching allowed in AV use cases. A single Nvdec instance is used throughout. There is no need to insert pre-fence for every reference frame.

Steps to Migrate

Remove the fences logic in existing applications (if implemented).

Refer to the nvm_ide_sci test application for additional information

NvDisplay Serializer SDK Structure Changes#

Target Changes

Backward Compatible

Platform

OS

For the NvDisplay element, one of its sub-elements, serializer, has changed its source files, dts file, and migrated to a new driver architecture.

No

NSR, SR

Linux

Migration Path

  • Orin to Thor

Migration Rationale

Architecture display driver changes

Steps to Migrate

Refer to the SDK documentation for nvdisplay serdes.

For additional information, refer to the following section.

Additional Migration Information (for the previous table)

Source File Changes

Platform AV + L

The legacy display serializer driver source files are as follows:

maxim_gmsl_dp_serializer.c”, “maxim_gmsl_hdmi_serializer.c

ti_fpdlink_dp_serializer.c

The legacy display serializer driver device tree nodes are as follows:

max_gmsl_dp_ser@i2caddress

max_gmsl_hdmi_ser@i2caddress

ti_fpdlink_dp_ser@i2caddress

Platform AV + Q

Only use legacy. The new nvdisp serdes driver is not yet available for AV + Q.

Device Tree Node Changes

The previous driver device tree nodes are migrated as follows:

The new opcode nvdisp serdes driver source file is nvdisp_serdes.c

The new opcode nvdisp serdes driver device tree node is as follows: nvdisp_serdes@i2caddress

Additional Information

Supported Hardware

The legacy driver has a version for each supported serializer. It has different drivers for hardware, such as MAXIM DP, MAXIM HDMI, and TI DP serializers.

The new opcode-based nvdisp serdes driver is common for all types of serializers.

Supported Features

For legacy driver, it is important to set fields in device tree, as per SDK documentation, for driver to program the hardware for feature enablement. For example, to enable MST, enable that property in device tree and then driver enables MST functionality during initialization.

The new nvdisp serdes driver does not provide such specific property exposure in device tree. It offers a change in “display-serdes-config” so that you can add OPCODE, and MSTfunctionality is enabled using i2c register writes.

Limitations:

The legacy driver only allows certain functionality to be configurable via device tree. For new functionality support, driver source code must be updated, which requires updates to the SDK documentation.

The new nvdisp serdes driver does not need its source code to be updated. If new functionality must be supported, it can occur by adding another OPCODE in “init-seq”.

SDK Documentation:

The legacy driver exposes the required features.

In new serdes drivers, users working with serializer hardware must be aware of the hardware data sheet and be able to update the OPCODE sequence; it contains details of the register address and values.

PDC SDK Structure Changes#

Target Changes

Backward Compatible

Platform

OS

The Thor board config JSON files moved from hardware/nvidia/platform/t264/automotive/flashing/board_configs to a common automotive folder: /hardware/nvidia/platform/t264/automotive/automotive-platform-configs. These board configuration files were sorted based on their platform SKU information.

No

NSR, SR

Linux and QNX

Migration Path

  • Orin to Thor

Migration Rationale

The update simplifies cloning an existing board. All files are in a single location sorted by the platform SKU to identify what configuration files are required for the given platform.

Steps to Migrate

The files that were moved are NVIDIA-specific. Review them as reference for your own custom configurations.

Kernel Header Path Changes#

Target Changes

Backward Compatible

Platform

OS

The kernel header include path changed from kernel/common/nvidia/include/uapi to kernel/common/nvidia-oot/include/uapi in DriveOS 7.2. Applications and samples that reference kernel headers using $(NV_KERNDIR)/../common/nvidia/include/uapi in Makefiles must be updated to use $(NV_KERNDIR)/../common/nvidia-oot/include/uapi. This change affects compilation of applications that include kernel headers such as linux/nvpps_ioctl.h and other kernel UAPI headers.

No

NSR

Linux

Migration Path

  • 7.0 to 7.2

Migration Rationale

The kernel/common/nvidia directory is deprecated as a legacy folder. The content is now available in kernel/common/nvidia-oot. This change aligns with the migration to the out-of-tree (OOT) kernel module architecture.

Steps to Migrate

Update Makefiles that reference the old kernel header path. Change the include path in CPPFLAGS or similar build variables from:

-I$(NV_KERNDIR)/../common/nvidia/include/uapi

to:

-I$(NV_KERNDIR)/../common/nvidia-oot/include/uapi

For example, in samples/nvsci/nvscistream/perf_tests/Makefile:

Before Release 7.0:

CPPFLAGS = $(NV_PLATFORM_SDK_INC) $(NV_PLATFORM_CPPFLAGS) -I$(NV_KERNDIR)/../common/nvidia/include/uapi

After Release 7.2:

CPPFLAGS = $(NV_PLATFORM_SDK_INC) $(NV_PLATFORM_CPPFLAGS) -I$(NV_KERNDIR)/../common/nvidia-oot/include/uapi

Applications that fail to update this path will encounter compilation errors such as:

fatal error: linux/nvpps_ioctl.h: No such file or directory