NVIDIA Jetson Orin - JetPack 5.0.2 - Getting Started - Components
Introduction
Jetpack Components Comparison
Package | Jetpack 5.0 Version | Jetpack 4.6.1 Version |
---|---|---|
Linux for Tegra | 34.1 | 32.7.1 |
TensorRT | 8.4.0 Early Access | 8.2.1 |
cuDNN | 8.3.2 | 8.2.1 |
CUDA | 11.4.6 | 10.2 |
OpenCV | 4.5.4 (Developer Preview) | 4.1.1 |
Vision Programing Interface (VPI) | 2.0 | 1.2 |
New feature for kernel 5.10
L4T
The Linux for Tegra (L4T) 34.1 provides the Linux Kernel 5.10, a bootloader based on UEFI interface, Ubuntu 20.04 based root file system,gcc-9.3-glibc-2.31 toolchain for 64-bit kernel and user space, etc.
Features:
- Support for Jetson AGX Orin Developer Kit
- Support to emulate performance of production Jetson Orin NX series and Jetson AGX Orin series modules with Jetson AGX Orin Developer Kit
- LTS Kernel 5.10
- Ubuntu 20.04
- UEFI bootloader
- Support for NVSCI: Provides utilities for streaming data packets between different applications and for inter-process communication (IPC)
- New Jetson Power GUI: Tool for monitoring the power and thermal status of Jetson platform
TensorRT
TensorRT is a framework created and published by NVIDIA for deep learning inference runtime. Jetpack 5.0 Developer Preview includes TensorRT 8.4.0 Early Access (EA). This EA is for early testing and feedback. For production, the documentation recommends continuing to use TensorRT 8.2.3 or later TensorRT 8.2.x patch.
TensorRT 8.4.0 EA has been tested with the following:
- cuDNN 8.3.2
- TensorFlow 1.15.5
- PyTorch 1.9.0
CUDA
CUDA Toolkit provides a comprehensive development environment for C and C++ developers building GPU-accelerated applications. The toolkit includes a compiler for NVIDIA GPUs, math libraries, and tools for debugging and optimizing the performance of your applications.
Starting with CUDA 11, the various components in the toolkit are versioned independently.
For CUDA 11.4, the table below indicates the versions:
Component Name | Version Information | Supported Architectures |
---|---|---|
CUDA Runtime (cudart) | 11.4.148 | x86_64, POWER, Arm64 |
cuobjdump | 11.4.120 | x86_64, POWER, Arm64 |
CUPTI | 11.4.120 | x86_64, POWER, Arm64 |
CUDA cuxxfilt (demangler) | 11.4.120 | x86_64, POWER, Arm64 |
CUDA Demo Suite | 11.4.100 | x86_64 |
CUDA GDB | 11.4.120 | x86_64, POWER, Arm64 |
CUDA Memcheck | 11.4.120 | x86_64, POWER |
CUDA NVCC | 11.4.152 | x86_64, POWER, Arm64 |
CUDA nvdisasm | 11.4.152 | x86_64, POWER, Arm64 |
CUDA NVML Headers | 11.4.120 | x86_64, POWER, Arm64 |
CUDA nvprof | 11.4.120 | x86_64, POWER, Arm64 |
CUDA nvprune | 11.4.120 | x86_64, POWER, Arm64 |
CUDA NVRTC | 11.4.152 | x86_64, POWER, Arm64 |
CUDA NVTX | 11.4.120 | x86_64, POWER, Arm64 |
CUDA NVVP | 11.4.193 | x86_64, POWER |
CUDA Samples | 11.4.120 | x86_64, POWER, Arm64 |
CUDA Compute Sanitizer API | 11.4.120 | x86_64, POWER, Arm64 |
CUDA Thrust | 11.4.122 | x86_64, POWER, Arm64 |
CUDA cuBLAS | 11.6.5.2 | x86_64, POWER, Arm64 |
CUDA cuFFT | 10.5.2.100 | x86_64, POWER, Arm64 |
CUDA cuFile | 1.0.2.10 | x86_64 |
CUDA cuRAND | 10.2.5.120 | x86_64, POWER, Arm64 |
CUDA cuSOLVER | 11.2.0.120 | x86_64, POWER, Arm64 |
CUDA cuSPARSE | 11.6.0.120 | x86_64, POWER, Arm64 |
CUDA NPP | 11.4.0.110 | x86_64, POWER, Arm64 |
CUDA nvJPEG | 11.5.2.120 | x86_64, POWER, Arm64 |
Nsight Compute | 2021.2.2.1 | x86_64, POWER, Arm64 (CLI only) |
NVTX | 1.21018621 | x86_64, POWER, Arm64 |
Nsight Systems | 2021.3.2.4 | x86_64, POWER, Arm64 (CLI only) |
Nsight Visual Studio Edition (VSE) | 2021.2.1.21205 | x86_64 (Windows) |
nvidia_fs1 | 2.7.53 | x86_64 |
Visual Studio Integration | 11.4.120 | x86_64 (Windows) |
NVIDIA Linux Driver | 470.82.01 | x86_64, POWER, Arm64 |
NVIDIA Windows Driver | 472.50 | x86_64 (Windows) |
The last update of CUDA 11.4 is Update 4, in which the Linux x86_64 Driver Version is >=470.82.01.
Multimedia API
The Jetson Linux API Reference describes several APIs or API extensions that are implemented in NVIDIA® Jetson™ Linux Driver Package (L4T). You can use these APIs to customize aspects of your Jetson device's behavior.
Camera application API: libargus offers a low-level frame-synchronous API for camera applications, with per frame camera parameter control, multiple (including synchronized) camera support, and EGL stream outputs. RAW output CSI cameras needing ISP can be used with either libargus or GStreamer plugin. In either case, the V4L2 media-controller sensor driver API is used.
The Multimedia APIs are separate from the GStreamer framework, which provides high-level APIs. That framework is included in current and previous releases.
JetPack 5.0 Developer Preview Multimedia highlights include:
- New NVUtils Multimedia buffer management and buffer transformation API.
Camera Interface
TBD (To Be Defined)
Drivers comparasion
Comparison between imx219.c imx214.c drivers in Jetpack 5.0 and Jetpack 4.6.1, if the information is provided.
In the driver imx219.c added #if LINUX_VERSION_CODE and deleted #include <linux/version.h> But in both drivers, the logic of the drivers is the same.
Difference between Kernel 4.9 to Kernel 5.10
Configuration Changes
The principal changes are resumed in the next table.
Environment variable | Kernel 4.9 | Kernel 5.10 |
---|---|---|
CONFIG_MEDIA | N/A |
|
CONFIG_TEGRA_GRHOST | N/A |
|
CONFIG_VIDEO | N/A |
|
CONFIG_VIDEO (sensor) |
|
|
CONFIG_THERMAL_GOV | CONFIG_THERMAL_GOV_CONTINUOUS=y | N/A |
Sensor Driver File Name Changes
The drivers file name in the Kernel 4.9 are imx185.c, imx268.c, imx318.c, ov9281.c, ov10823.c, ov23850.c, imx390.c, imx219.c, imx274.c, lc898212, ov5693.c, but in the Kernel 5.10 the prefix is added nv_ before the drive file name.
For example, the imx219 driver name in kernel 4.9 is imx219.c, but the same driver in the kernel 5.10, the file name is nv_imx219.c
Guarding Kernel Version-Specific Code
NVIDIA-specific kernel code in kernel/nvidia/ is guarded by checks that compare the LINUX_VERSION_CODE macro against KERNEL_VERSION(x, x, x).
Also, there are important changes in the new driver by comparing the following macros:
The use of powergate_id is dropped, as tegra_powergate is deprecated in kernel version 5.10. The following table shows the paths of the kernel 5.10 and the previous kernel.
Kernel 4.9 | Kernel 5.10 |
---|---|
kernel/kernel-4.9/include/linux/tegra_pm_domains.h | kernel/kernel-5.10/include/linux/pm_domain.h |
To replace the video buffer state, the V4L2 framework changes by adapting the VI drivers. Also, by doing this adaptation, V4L2 framework changes to time related v4l2-ctl APIs and structures. Some examples provided by NVIDIA are shown in the following table:
Kernel 4.9 | Kernel 5.10 |
---|---|
getrawmonotonic() | ktime_get_ts64 |
struct timespec | struct timespec64 |
ns_to_timespec | ns_to_timespec64 |
VB2_BUF_STATE_REQUEUEING | VB2_BUF_STATE_ERROR |
VFL_TYPE_VIDEO
kernel/kernel-4.9/include/media/v4l2-dev.h |
VFL_TYPE_GRABBER
kernel/kernel-5.10/include/media/v4l2-dev.h |
v4l2_mbus_type for kernel version 4.9:
kernel/kernel-4.9/ include/media/v4l2-mediabus.h |
Modified enum type for C-PHY and D-PHY in v4l2_mbus_config:
/dev-main_l4t/kernel/kernel-5.10/ include/media/v4l2-mediabus.h |
I2C API and dev_err() Function
I2C API and dev_err() function changes as can be seen in the following comparative table.
Kernel 4.9 | Kernel 5.10 |
---|---|
kernel/kernel-4.9/include/linux/device.h | kernel/kernel-5.10/include/linux/dev_printk.h |
|
|
|
|
NVIDIA Capture Driver Code Path
The new capture mode driver file paths for channel configuration (VI, ISP) is
kernel/nvidia/drivers/media/platform/tegra/camera/fusa-capture/
Also, the driver for the VI is the vi5.