What is DRIVE AGX System?
System Stack Architecture
Install the DRIVE AGX Platform
Develop Applications
Platform Software Stacks
Foundation Services Stack
Additional Platform Components
Foundation Virtualization Stack
Virtualization Partition Configuration Capabilities
NvMedia Architecture
NvMedia Stack
NvMedia API Architecture
NvMedia Video Surface
NvMedia Image Surface
NvMedia APIs and Thread Safety
Setting Up Your Board
Setting Up the E3550 Platform
Front Panel
Back Panel
Cable Harness
Connecting the Platform
Device Connections
Lidar Unit Connections
Radar Unit Connections
Camera Group Pinout Connections
Setting Up the Cameras
Powering On/Off the Device
Powering Off the Platform
Placing the Board in/out of Recovery Mode
Installing with the SDK Manager
Camera Setup and Configuration
Setting Up the Cameras
Camera Interfaces
Mapping Connectors to Tegra
Homogeneous Camera Types
Connecting the Cameras
Camera Power Control
Ethernet Network Topology in AV Configuration
MCU Setup and Configuration
MCU Device Types
SoC to Microcontroller Communications
Camera Control Protocol
Library Usage and Configuration
CCP Sample Application Usage
Use cases
Using the MCU Console
UART Settings
MCU Console Commands
Accessing the SoC from UART
Software Setup on the Linux Host
Time Synchronization between AURIX™ and the SoC Using gPTP
FlexRay Application Demonstration
FlexRay Usage with CANOE
Flashing Basics
Flashing AURIX
Identifying the AURIX Step Version
Upgrading the Firmware
Identifying the COM Port
Determining the Installed Version
Setting Up MemTool on the Windows Host
Creating the MCU Configuration File
Flashing the AURIX UPDATE Firmware
Flashing AURIX on Xavier
Flashing the PCIe Switch and Configuration File
Figuring out the Firmware and Configuration File Version
Prerequisites for Flashing PM8533 PCIE Switch 2
Flashing PCIe Switch Configuration/Firmware from NVIDIA DRIVE™ Xavier A
Flashing SPI ROM Image for Marvell 88SE9345 PCIe SATA Controller
Updating the Image
Flashing Customization
Flashing the Board
Bootburn
Bootburn Command Usage
Bootburn Options
Kernel Parameter Combinations
Passing Additional Kernel Parameters
Updating the path for the targetfs
Flashing Automotive Yocto Linux built from nv-git-07 sync
Flashing Using the AURIX Console
Building the Flashing Kernel
Flashing Preprocessed Binaries
Usage
Directory Structure of Preprocessed Binaries
Flashing the Prebuilt Binaries
Flashing SKUInfo
Flashing Flow
Flashing Binaries: Offline Generation
Processed Binaries Directory Structure
Generating Binaries with an Argument File
Generating Binaries with Command Line SkuInfo
Clocks
Thermal Management
About the tj-max Thermal Sensor
Reading the tj-max Temperature
Configuring the tj-max Sensor
Internal Thermal Sensors
Determining Sensor Calibration
Viewing Thermal Sensor Information
External Thermal Sensors
Thermal Shutdown
TSENSE Thermal Sensor
GPU Group Thermal Sensors
AUX Group Thermal Sensors
Always-On Thermal Alarm Generator Sensor
Thermal Protection During Boot
Using the External Thermal Sensor
Using the Always-On Thermal Alarm Generator Sensor
User Space Thermal Alert
Thermal Management with Fan Control Application
Control Flow of Fan Control Application
Application Usage and Options
Usage
External Thermal Sensor
Remote Temperature Offset
Shutdown Limits
Removing External Thermal Sensor Software Support
System Programming
Compiling the Kernel (NVIDIA DRIVE Linux)
Building Cross Toolchains
Probing RDC Pins
Probing RDC Pins in Quickboot
Probing RDC Pins in Kernel
Programming the Sensor Processing Engine (SPE)
Building the SPE Binaries
Code Organization
Debugging
PWR_I2C Slaves’ Access to Rich OS
SKU Framework: Customizing
About SKUInfo
Getting SKUInfo from the Kernel
Getting SKUInfo with the Quickboot API
Customizing the SKU Framework
Flashing (Host Side)
Quickboot (Target Side)
Customer Data Section in the BCT
Configuring Power on BPMP Firmware
BPMP Firmware Power Management Services
Modifying and Compiling the BPMP-FW Device Tree
System Software Components and Interfaces
Ethernet 100M/1G Networking
Port Roles
VLAN Configurations
gPTP/802.1AS Support on Linux
Single Pegasus: SoC-Aurix gPTP time Synchronization
Single Pegasus: SoC-SoC gPTP Time Synchronization
Dual Pegasus: SoC-SoC gPTP Time Synchronization
P3479 Network Topology
File System Components (Target)
SSH support
Using apt-get
Installing dosfstools and ntfsprogs on Target
File System Source Code
Updating Firmware on 10GbE NIC
CAN Driver
Enabling CAN Driver in Linux Kernel
MTTCAN as a Module
MTTCAN as a Kernel Built-in Driver
Setting up SocketCAN interface
Setting Up the CAN0 Interface
Enabling the Flexible Data Rate Mode on MTTCAN
Setting up MTTCAN Controller Hardware filters
Programming Global Filter Configuration
Programming Standard Message ID CAN Filters
Programming Extended Message ID Filters
Kernel Modules and Limitations
UFS Device Provisioning
Program bRefClkFreq
Program LUNs
Troubleshooting
Using the CAN Realtime Clock
Connecting the RTC Module
Obtaining and Setting the System Time
Watchdog Timer
Programming Counter Expirations at 1/3 Timeout
Enabling WDT0 from Kernel or User Space
Displays
Display Server Application
Configuring displayserver
Usage Examples
Display Resolution Configuration
Adding EDID Blob
Alternative Methods
Specifying Mode in Device Tree
Using NvMedia
NvMedia Architecture
NvMedia Stack
NvMedia API Architecture
NvMedia Video Surface
NvMedia Image Surface
NvMedia APIs and Thread Safety
Connecting and Integrating the Cameras
Board Setup
Connecting Cameras
Identifying the Camera Interface Module SKU
Mapping GMSL Cameras to Tegra
Camera Power Control
Building and Running the NvMedia Samples
Understanding NvMedia
Image Processing and Management
Image Capture Processing (ICP)
Image Signal Processing (ISP)
Image 2D
Image 2D Processing
Image Encode Processing (IEP)
Image Display Processing (IDP)
Image Processing Pipeline (IPP)
EGLStream Interoperability
NvMedia Image Sensor Control (ISC)
Video Processing
Video Decode
Supported Video Media Formats
Using the Software Video Decoders
Video Encode
Video Mixer
Layer Usage
Deinterlacing Modes
Deinterlacing Examples
Video Capture
Vision Programming
Sequence of Tasks
Algorithm APIs
Box Filter
Harris Corner Detector and Tracker
Process Stereo Image Pair
Convert Motion Vectors
Stereo Preprocess
Stereo Postprocess
FAST Corners Detector
Lucas-Kanade Feature Tracker
Kanade-Lucas-Tomasi Object Template Tracker
2D Convolution
Get Image Pyramid
Pitch Linear and Block Linear Layout Support
Supported Surface Format Packing Types
Supported Resolutions
References
Understanding NvMedia IPP Framework
IPP Component Types
Source Components
Capture Component
CaptureEx Component
File Reader Component
Processing Components
Control Algorithm Component
Sensor Control Components
Sink Components
Output Component
Ports
Buffer Pool
IPP Pipeline
Pipeline Manager
Component Connections
IPP Plugin
Installing the Plugin
Structure Members
Plugin API Functions
CreateFunction
DestroyFunction
ProcessExFunction
Plugin Callback
Stream Types
Input Parameters
NvMediaIPPPluginInput
Output Parameters
NvMediaIPPPluginOutputEx
IPP Internals
NvMedia IPP API Description
NvMediaIPPGetVersionInfo
NvMediaIPPManagerCreate
NvMediaIPPManagerDestroy
NvMediaIPPManagerSetTimeSource
NvMediaIPPManagerSetEventCallback
NvMediaIPPPipelineCreate
NvMediaIPPPipelineSetProperties
NvMediaIPPPipelineDestroy
NvMediaIPPPipelineStart
NvMediaIPPPipelineStop
NvMediaIPPPipelineApplyControlProperties
NvMediaIPPPipelineGetStaticProperties
NvMediaIPPPipelineGetDefaultControlsProperties
NvMediaIPPComponentCreateNew
NvMediaIPPComponentCreateImgGrp
NvMediaIPPComponentAddToPipeline
NvMediaIPPComponentAttach
NvMediaIPPComponentGetOutput
NvMediaIPPComponentGetOutputImgGrp
NvMediaIPPComponentReturnOutput
NvMediaIPPComponentReturnOutputImgGrp
NvMediaIPPComponentDestroy
NvMedia IPP Components
ICP Component
ICP EX Component
ISP Component
ALG Component
ISC Component
Output Component
File Reader Component
Environment Variables
NVMEDIA_IPP_IGNORE_VERSION
NVMEDIA_IPP_TRACE
NVMEDIA_IPP_TRACE_FILE
NVMEDIA_IPP_CA_DROP_INTERVAL
NVMEDIA_IPP_ISC_SKIP_INTERVAL
Thread Priorities
Metadata File Format
Metadata Structure
Metadata Chunk Information
Metadata Information
Metadata
Metadata Types
Image Info
Control Properties
Dynamic Properties
Embedded Line Data
LTM Information
NvMediaIPPMetadataGetSize
NvMediaIPPMetadataGet
NvMediaIPPMetadataGetAddress
IPP Pipeline Properties
Static Properties
Controls Properties
Dynamic Properties
Buffer Pools
Understanding NvMedia SIPL Framework
Glossary
Architecture
Query
DeviceBlock
The INvSIPLDeviceBlock Class
Camera
The INvSIPLCamera Class
Sample Application
Porting from ExtImgDev to SIPL DeviceBlock
Dependencies
NvMedia Sample Applications
Building and Running the NvMedia Samples
Building the NvMedia Samples
Running the NvMedia Samples
Camera Module EEPROM Tools (nveeprom_flash and nveeprom_dump)
EEPROM Flash Tool (nveeprom_flash)
Flashing the Factory Section
Updating the writable section
Example: Flashing EEPROM on Camera Modules
EEPROM Dump Tool (nveeprom_dump)
Dumping and Saving the Contents of the EEPROM
EEPROM Specification
Factory Section (Read Only)
Writable Section
Complete Specification
EGL Stream (nvm_eglstream)
Architecture
EGL Image Frame
EGLStream Producer
EGLStream Consumer
EGLStream Operation Modes
EGLStream Pipeline
EGLStream Application
Command Line Options
Required Options
Other Options
Single-Process Examples
Cross-Process Examples
Cross-Partition Examples
Vision Programming Interface (nvm_vpi)
Architecture
Running the Sample Application
Command Line Options
Examples
IPP Raw (nvmipp_raw)
Features
Constructing an IPP Pipeline
Threads
Slave Capture
Configuration Parameters
Running nvmipp_raw
Parameter Maps
Parameter Maps: E3550 Board
Parameter Maps: P3479 Board
Command Syntax
Required Command Line Options
Optional Command Line Options
Examples
Image Camera Capture (nvmimg_cap)
Error Detection
Camera Capture Pipeline
Code Flow
Slave Capture
Suspend to RAM Support
Suspend Sequence
Resume Sequence
Adding Suspend/Resume Support to a Camera Application
Command Line Usage
Command Line Options
Configuration Sets Defined in the Configuration File
Configuration Set
Camera Register Control
Parameter Maps
Parameter Maps: E3550 Board
Parameter Maps: P3479 Board
Parameter Maps: P2888 Board
Image Capture Calibrate (nvmimg_cc)
Command Options
Script File
Script File Configuration Parameters
I2C Device Commands
Comments
Example
Example Commands
Image Play (nvmimg_play)
Command Line Options
Required Options
Optional Options
Examples
Image Encoder (nvmimg_enc)
Architecture
Running the Sample Application
Configuration File Parameters
Command Line Options
Required Options
Other Options
Examples
Configuration File Syntax
Configuration File Parameters
Image JPEG Encode (nvmimg_jpgenc)
Example Commands
Command Options
Image JPEG Decode (nvmimg_jpgdec)
Example Commands
Configuration Format
Output YUV Resolution
Command Options
RAW Data to CUDA Consumer on dGPU (nvmipp_bayerdgpu)
Command Line Options
Example Commands
Image LDC (nvmimg_ldc)
Architecture
Running the Sample Application
Configuration File Parameters
General configuration parameters
Geometric Transformation Parameters
Feed Sparse Warp Map Parameters
TNR3 Parameters
Runtime Parameters
Command Line Options
Required Options
Other Options
Examples
Video Encode (nvmvid_enc)
Features
Architecture
Creating the Configuration File
Running the Application
Command Line Options
Examples
Configuration File Parameters
Test Cases
H.264 Encode Test Cases
H.265 Encode Test Cases
Video Demo (nvmvid_play)
Command Line Options
Required Options
Other Options
Examples
NvMediaImage Surfaces to CUDA Consumer on dGPU (nvm_egldgpu)
Single-Process Operation
Cross-Process Operation
Command Line Options
Example Commands
Image 2D Processing (nvmimg_weave2d)
Assumptions, Constraints, and Dependencies
Architecture
Error Handling
Running the Sample Application
SIPL (Sensor Input Processing Library) Camera
Architecture
Running the application
Display Layout
Slave Capture
Command Line Switches
Interactive menu options
Examples
Platform configuration: SF3324 modules in two-lane DPHY mode
Camera Commands
AR0231 (Camera Module SF3324) Using 2 Lane DPHY
AR0231 (Camera Module SF3324) Using 2 Lane CPHY
AR0231 (Camera Module SF3325) Using 2 Lane DPHY
AR0231 (Camera Module SF3325) Using 2 Lane CPHY
AR0144 (Camera Module AR0144P) Using 2 Lane DPHY
Constellation 2MP Using 2 Lane DPHY
Constellation 8MP Using 4 Lane DPHY
MAX96712 RAW12 TPG Using 2 Lane DPHY
MAX96712 RGB TPG Using 2 Lane CPHY
Creating NvMedia Capture and Display Surfaces
Where Surfaces with Additional Flags Are Created
Insufficient Memory Fault
Graphics Programming
OpenGL ES Programming Tips
Programming Efficiently
State
Geometry
Shader Programs
Textures
Miscellaneous
Optimizing OpenGL ES Applications
Avoiding Memory Fragmentation
Video Memory Overview
Allocating and Freeing Video Memory
Best Practices for Video Memory Management
Graphics Driver CPU Usage
Performance Guidelines
OpenGL ES Porting Guide
Additional Resources
Mapping OpenGL ES 2 to OpenGL ES 3
Unsupported Extensions
Unsupported Extensions with Workarounds
NV_coverage_sample
NV_depth_nonlinear
Supported Extensions
Modified Implementation Details
EGLStream Support for Multiple Consumers/Producers
Multiple Acquire and Consumer Support
Using NvMedia EGLStream to Send an Image to Multiple Consumers
Buffer Flow with Multiple Consumers
Sending and Returning in Single Threads
Sending in a Single and Returning in Multiple Threads
Binary Shader Program Management
Application Management of Binary Programs
Automatic Shader Cache
Comparison and Combination
GLSLC Shader Program Compiler
Compiled Shader Program Characteristics
Libraries Loaded On-Demand
Tegra GPU Scheduling Improvements
Setting the Timeslice
Setting the Preemption Type
Runlist Interleave Frequency
Setting Parameters
Setting Parameters on Behalf of Other Applications
Building GPU Scheduling Sample Applications
Stream-Server
Stream-Server Architecture
Location of Stream-Server and Plugins
Running Stream-Server
Configure Stream-Server
JSON File Based Configuration
Command-Line Configuration
Window Systems
Building and Running Graphics Samples
Building the Samples
Using NV_WINSYS when Building Graphics Samples
Running OpenGL ES 2.0 Samples
Resolution Selection
Layer Selection
Antialiasing Specification
Running Samples
Program Binary Selection
Running Vulkan Samples
Wayland Window System
EGLOutput/EGLDevice Specifications
Building Weston from Source
Runtime Configuration
libdrm Support
Weston Common Options
Weston Backend Options
Multimonitor Considerations in Overlay-Compositing Mode
Weston Configuration File Location
Weston Display Configuration
Prerequisites to Starting Weston
Starting Weston
Running Weston Samples
EGLDevice
Extensions
Runtime Configuration
Conditions Requiring a Stream Surface
Implementation
Rendering to EGLDevice
Creating a Stream Surface
Cross-Process and Cross-Partition EGLStream Applications
Connecting a Surface to a Screen
Setting Up the Display with DRM
Board-to-Display Connectors
X11 Window System
Runtime Configuration
Using xrandr for Runtime Configuration
Querying Supported Monitors and Screen Resolutions
Obtaining Additional Help
Modifying the Static Configuration (Optional)
Using nvidia-xconfig to Configure xorg.conf
Getting Help on nvidia-xconfig
nvidia-xconfig Usage Examples
Specifying a Custom EDID for the Monitor
Setting Color Bit-Depth
Specifying Modes
Enabling Debug Mode
Multi-Display X Server Layout
Modifying xorg.conf
Enabling Screen Saver Features
Enabling EDID Polling and Native Resolution
Enabling Blending and Video Overlays
Fixing Intermittent or No Output to an HDMI Monitor
Manually Starting X Server
Bootloader
Boot Loader Architecture
Supported Features
TegraBoot Overview
Customizing Quickboot
Compression Options
Compiling
About the Build System
Compiling Quickboot
Incrementing the Quickboot Version Number
Using Interactive Mode
Forcing Boot from the Kernel Recovery Partition
Configuring the Serial Console Baud Rate
Using I2C Controller
Appending Splash Screen/CPIO Images to the RAMdisk
Quickboot Device Tree
Clocks
Serial
QSPI
SDMMC
I2C
Quickboot Sample Log
Recovery Mechanism
Introduction to Boot-Chain
Boot Chain in Parker SoC based platform
Boot Chain in Xavier SoC base platform
Overview of Chaining Approach
Advantages of Chaining Approach
Side Effect of Chaining Approach
Components not in Boot-Chain
Recovery Flow Implementation Details
Parker SoC based Platform
Xavier SoC based platform
Ratcheting
Software and Hardware Ratchet Versions
Software Ratchet version
Hardware Ratchet version
Ratchet Constraints
Opt-in Fuse
External Factors for Fuse Burning
Software Components protected by ratcheting
Ratchet Levels for Nv Owned Software components
NVIDIA Ratchet Level
OEM Ratchet Level
Ratchet Level for OEM Owned Software Components
Ratchet Checks
Ratchet check for NVIDIA owned Software components
Ratchet Check for MB1
Ratchet Check for SC7 Firmware
Ratchet Check for MTS Firmware
Ratchet Check for Falcon Firmware
Ratchet Check for OEM owned Software components
Ratchet Fuse Programming
Ratcheting for MB1/SC7 and MTS Firmware
Ratcheting for Falcon Firmware
Ratchet Fuse Programming for OEM Owned Software components
Passing Ratchet Status to Guest OSes
Lock Fuse Burning
Profiling Boot Time
Utilities
Boot Profiling Utility
Boot Profiling Utility for AV+L/Q
Determining the Overall System Boot Time?
GNU Debugger
Building GDB Client with Yocto
Debugging with gdb-multiarch Tool
Setting Up GDB Remote-Debugging Session
Linux Tracing Toolkit
Triggering System State Transition from Linux
Receiving Partition State Transition Message
Minicom Terminal Emulation
Determining the USB Port and Serial ID
Configuring Minicom
Running Minicom
Toggling the Line Wrap Setting on Minicom
Toggling the Line Feed Setting on Minicom
mNAND Health and Status Utility
Building
mNAND_hs Commands
Syntax
Options
Device Paths
Example Log
mNAND Refresh Utility
Session Mode and Catch-Up Mode
Algorithm for Converging to the Refresh Schedule
Terminating or Limiting Execution in Catch-Up Mode
Recommendations for Using mnand_rfsh
Building and Running
mnand_rfsh Command Usage
Supported Options
Example Usage
Running in Session Mode
Refreshing Over Six Months
Sysfs and Procfs Entries
Boot Loader Data
Chip Information and Unique ID
GPIO Settings
Clock Settings for Tegra
Increasing the HDMI Debounce Time
tegrastats Utility
Reported Statistics
Running tegrastats
Re-Deploying tegrastats
tegrastats Options
Utilities for All Platforms
Tegra Combined UART and tcu_muxer Utility
Using tcu_muxer Tool
Usage Example on NVIDIA Native OS System
Usage example on NVIDIA Virtualization Systems
Using along with uart_muxer Tool
Finding the Number of VM Partitions
Manifest
Foundation
NVIDIA DRIVE Foundation Directory
Toolchains Directory
Linux SDK
NVIDIA DRIVE Directory
CUDA Directory
Appendix
Installing and Flashing Foundation and Ubuntu Linux SDK and PDK
Preparing Your Host Machine
Installing Foundation
Setting the Environment Variables
Installing the PDK Overlay
Binding the Solution
Flashing the Board
I2C Settings
Mass Storage Partitions Configuration
Multipartition Architecture
Partition Overview
Xavier Native Partitions
Xavier Guest OS Partitions
Customizing the Configuration File
Configuration File Entries
Setting Attributes
Aligning os_args Values and the Mass Storage Layout
Configuring GPT Devices
Flashing Partitions with a File System and Kernel Image
Managing Mass Storage Partitions in Virtualization
Partition Loader
Storage Layout
Example Virtual Partition Configuration
CFG v1
CFG v2
Example Native OS Partition Configuration
NVIDIA DRIVE OS 5.1 Open Source and Third-Party Software Licenses
License Catalog
Third Party Components in the Platform
Components in the QNX Platform
Apache License Version 2.0
BSD-Style Software Distribution Licenses
Support Functions for ARM CPU
memset
memcpy
__umodsi3, __modsi3, __udivsi3, __divsi3
Support Functions for PPC CPU
memset
memcpy
Unidentified Use
lzf License
64-bit Arithmetic Division, Modulus, Compare, Shift
Creative Commons
dlmalloc License
GLFW License
GNU General Public License 2.0
mtd-utils
mkfs
ubinize
FreeType 6 Version 2.4.12
ddccontrol Version 0.2
FreeImage 3 Version 3.15.1
GNU Lesser General Public License Version 2.1
Independent JPEG License
libjsoncpp License
libpng 1.2.6 License
Libtiff License Version 4.0.2
list License
MIT License
Open Source newlib Library
Open Source Initiative OSI - Eclipse Public License 1.0
SIL Open Font License Version 1.1
strcpy License
zlib License
What is DRIVE AGX System?
NVIDIA DRIVE OS 5.1 Open Source and Third-Party Software Licenses