DRIVE Update Changes#
BRBCT Marker-based Boot Chain Selection#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The BRBCT marker-based boot chain selection is removed in Thor |
No |
NSR |
Linux and QNX |
Migration Path
Orin to Thor
Migration Rationale
Due to changes to Thor BootROM, we only have sequential boot chain selection or GPIO-based boot chain selection now.
Steps to Migrate
Migrate to GPIO-based boot chain selection. This has been the default option for Orin
DRIVE Update Router Parent Path#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The DRIVE Update router parent path will change from “/gos-a/ to “/” |
No |
NSR, SR |
Linux and QNX |
Migration Path
Orin to Thor
Migration Rationale
In DRIVE Update 7.0, Update VM was removed, resulting in only having “/gos-a” for Guest OS Tegra A. The DRIVE Update Router, however, will look for upper level “/”. This may create issues for the router.
To reduce this potential risk, in DRIVE Update 7.0, for all units in Guest OS Tegra A, the router parent path will change from “/gos-a” to “/”.
Steps to Migrate
Refer to the NVIDIA DriveOS 7.0 Installation Guide.
dupkg Templates#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
Changes to the following dupkg templates:
|
Yes |
NSR, SR |
Linux and QNX |
Migration Path
Orin to Thor
Migration Rationale
Implemented a better solution for the delta update in 6.5.2.0, which changes the delta generation flow.
Steps to Migrate
The new delta solution template generates all necessary packages/scripts to complete a delta update to a new version. There is no need to manually handle special partitions.
The previous delta generation dupkg command line is:
python3 dupkg.py gen –template dupkg_dudelta_pull_template –in VALIDATE_OPTION=True TEGRA_A_SRC_OLD=<old bsp> TEGRA_A_SRC_NEW=<new bsp> –out outdir
The new delta generation dupkg command line is:
python3 dupkg.py gen –in BSDIFF_PATH=./ TEGRA_A_SRC_OLD=<old bsp> TEGRA_A_SRC_NEW=<new bsp> VALIDATE_OPTION=True –template dupkg_dudiff_template –out outdir.
The Drive Update Workflow with DUCC#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
The Drive Update workflow with DUCC is deprecated in 7.0 |
No |
NSR, SR |
Linux and QNX |
Migration Path
Orin to Thor
Migration Rationale
A new API is being introduced to provide better control over the update sequence
Steps to Migrate
There is no functionality and no need to migrate. Drive OS 6.0 existing DUCC interface are supported through the Drive OS 7.x release. Customers do not need to change if they still use the current DUCC interface.
In Drive OS 7.x, NVIDIA Drive® Update will provide the Update Server API (based on HVRTOS) to customers, who should use the Update Server API directly instead of the DUCC interface if it improves software performance.
The new API will be provided in the SDK once it is ready and available.
CMD_GET_PT_LOG#
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
CMD_GET_PT_LOG is removed |
No |
NSR |
Linux |
Migration Path
Thor to Thor
Orin to Orin
Migration Release Path
Between 7.x releases
Migration Rationale
CMD_GET_PT_LOG is for debug only and it is removed from interface file in release 7.0.4.0.
Steps to Migrate
CMD_GET_PT_LOG feature is supported by CMD_GET_PARTS_INFO together. Modify code using CMD_GET_PT_LOG to use CMD_GET_PARTS_INFO. Refer to du_cli.c source code for additional information.
DRIVE Update Server (DUS) Client API#
Warning
The DUS Client API is mutually exclusive with the Guest OS
DRIVE Update plug-ins. With the default build flag
ENABLE_GUEST_OS_DU_APP=y, the Guest OS dutii unit already
owns the nvdriveupdate_ivc_1 IVC channel (predefined UID
2433), and a customer application calling duscInit() will
fail immediately with DUSCLIENT_ERROR_OPEN_ENDPOINT_FAILED /
DUSCLIENT_ERROR_INITIALIZE_FAILED. The error code alone is not
self-explanatory; this mutual-exclusion relationship must be
resolved before customer applications can call duscInit()
successfully.
Target Changes |
Backward Compatible |
Platform |
OS |
|---|---|---|---|
New public header
|
Yes |
SR |
QNX |
Migration Path
Orin to Thor
Migration Release Path
6.5.4.2 to 7.2.5.0
Migration Rationale
Provides a client interface to the DRIVE Update Server (DUS) running in HVRTOS, which replaces the legacy DUCC interface from 7.x onward.
Enabling the DUS Client Interface disables all DRIVE Update plug-ins in the Guest OS at compile time and allows direct communication with the DRIVE Update Server in HVRTOS. As a result, security mechanisms previously enforced by the Guest OS DRIVE Update stack (update-package authenticate and validate, vehicle status and action such as runlevel and reboot, and so on) shall be executed by the customer.
Per ARR DOS_UREQ_3113: The user of DriveOS shall ensure that the
DRIVE Update Server (DUS) Client Interface is used in accordance with
the guidelines provided in dus_common_data.h and dus_client.h
, and that all security mechanisms are correctly implemented and
executed.
Refer to the “Update Mechanism” and “DUS Client HOWTO” sections of the “DRIVE Update V3” chapter for correct usage on both Linux and QNX. The API is currently Experimental and may change between releases.
Steps to Migrate
QNX-safety processes that need to talk to the DRIVE Update server over IVC + mempool should include
dus-client/dus_client.hand wrap their command exchange betweenduscInitandduscDeinit:#include "dus-client/dus_client.h" if (duscInit() != DUSCLIENT_NO_ERROR) { return -1; } uint8_t payload[64] = { /* ... command-specific payload ... */ }; uint8_t resp[256]; uint32_t respLen = sizeof(resp); DUSCLIENT_ERROR rc = duscExecute( /* cmd */ MY_DUS_CMD_ID, /* targetBootchain */ 0U, /* pPayload */ payload, /* payloadLen */ (uint32_t)sizeof(payload), /* pBuf */ resp, /* pBufLen */ &respLen); if (rc != DUSCLIENT_NO_ERROR) { (void)duscDeinit(); return -1; } (void)duscDeinit();
Replace the predefined UID
2433on thenvdriveupdate_ivc_1IVC channel (currently used by the Guest OSdutiiunit) with the customer application’s own UID. This is required for any customer application built againstdus_client; otherwise the IVC channel ownership conflict raised in the warning above preventsduscInit()from succeeding.Treat the surface as experimental: pin to a specific DriveOS release while integrating, and re-validate against each new SDK drop until the API is promoted to production.