From ef1b8e9568fae35ee29eea7a38aec747ef781856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=AA=20de=20Souza=20Pinto?= Date: Thu, 16 Jan 2025 12:44:43 +0100 Subject: [PATCH] docs: Update documentation about NVIDIA devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update documentation related to NVIDIA devices: - Create a general page for NVIDIA Jetson platforms - Update docs for Jetson Xavier NX devices - Add docs for Jetson Orin devices Signed-off-by: RenĂª de Souza Pinto --- README.md | 19 +------- docs/NVIDIA-NX.md | 12 ++--- docs/NVIDIA-ORIN.md | 104 +++++++++++++++++++++++++++++++++++++++++ docs/NVIDIA.md | 71 ++++++++++++++++++++++++++++ docs/mkdocs/mkdocs.yml | 7 ++- 5 files changed, 188 insertions(+), 25 deletions(-) create mode 100644 docs/NVIDIA-ORIN.md create mode 100644 docs/NVIDIA.md diff --git a/README.md b/README.md index 3b62b28a2f..473248b90d 100644 --- a/README.md +++ b/README.md @@ -405,24 +405,9 @@ above and executing exactly the same boot command: Shell> fs0:\EFI\BOOT\BOOTX64.EFI ``` -## How to use on a Jetson nano 4GB ARM board +## How to use on a NVIDIA Jetson based device -In Jetson nano, from January 22, 2021, it became possible to save the u-boot to an internal qspi chip. Following the instructions from the first point and specifying the kernel and u-boot versions in the same way as in EVE, we can run it on the Jetson nano with 4GB of RAM. - -1. Follow steps in [instruction](https://github.com/lf-edge/eve/blob/master/boards/nvidia/jetson/) for flash jetson boot flow partitions to qspi. -2. Make sure you have a clean build directory (since this is a non-standard build) `rm -rf dist/arm64` -3. Build a live image `make ZARCH=arm64 HV=kvm live-raw` (Only KVM is supported) -4. Flash the `dist/arm64/current/live.raw` live EVE image onto your SD card by [following these instructions](#how-to-write-the-eve-image-and-installer-onto-storage-media) - -## How to use on a Jetson Xavier NX platform - -Currently EVE supports the following devices from NVIDIA's Jetson Xavier NX platform: - -1. Lenovo ThinkEdge SE70 -2. Siemens SIMATIC IPC520A -3. NVIDIA Jetson Xavier NX developer kit - -See [NVIDIA-NX.md](./docs/NVIDIA-NX.md) for instructions on how to build and deploy EVE on these devices. +Currently EVE supports several NVIDIA Jetson devices, see [NVIDIA.md](./docs/NVIDIA.md) for details. ## How to use on a i.MX 8MQuad Evaluation Kit ARM board diff --git a/docs/NVIDIA-NX.md b/docs/NVIDIA-NX.md index 78c0736835..3e3308e274 100644 --- a/docs/NVIDIA-NX.md +++ b/docs/NVIDIA-NX.md @@ -29,8 +29,8 @@ can be changed in the bootloader's setup interface with the following steps: ### Installing EVE on the ThinkEdge SE70 -1. Build an installation raw image `make ZARCH=arm64 HV=kvm PLATFORM=nvidia installer-raw` (Only KVM is supported) -1. Flash the `dist/arm64/current/installer.raw` install EVE image onto an USB Stick [following these instructions](../README.md#how-to-write-eve-image-and-installer-onto-an-sd-card-or-an-installer-medium) +1. Build an installation raw image `make ZARCH=arm64 HV=kvm PLATFORM=nvidia-jp5 installer-raw` (Only KVM is supported) +1. Flash the `dist/arm64/current/installer.raw` install EVE image onto an USB Stick [following these instructions](../README.md#3-flash-the-image-to-the-device) 1. Insert the USB Stick and power on the device The installation process will start and it will install EVE on the NVMe automatically. @@ -43,8 +43,8 @@ If the installation succeed, the device will be powered off. Remove the USB Stic ### Running a live image on the ThinkEdge SE70 -1. Build a live raw image `make ZARCH=arm64 HV=kvm PLATFORM=nvidia live-raw` (Only KVM is supported) -1. Flash the `dist/arm64/current/live.raw` live EVE image onto an USB Stick [following these instructions](../README.md#how-to-write-eve-image-and-installer-onto-an-sd-card-or-an-installer-medium) +1. Build a live raw image `make ZARCH=arm64 HV=kvm PLATFORM=nvidia-jp5 live-raw` (Only KVM is supported) +1. Flash the `dist/arm64/current/live.raw` live EVE image onto an USB Stick [following these instructions](../README.md#3-flash-the-image-to-the-device) 1. Insert the USB Stick and power on the device EVE should boot the live image and run from the USB Stick. **NOTE** that the NVMe SSD must not contain an EVE installation, @@ -112,8 +112,8 @@ Once the procedure is done, power off the board and disconnect the pin *FC REC* ### Running a live image on the Jetson Xavier NX developer kit 1. Make sure the bootloader is present in the QSPI EEPROM -1. Build a live raw image `make ZARCH=arm64 HV=kvm PLATFORM=nvidia live-raw` (Only KVM is supported) -1. Flash the `dist/arm64/current/live.raw` live EVE image onto an SD Card [following these instructions](../README.md#how-to-write-eve-image-and-installer-onto-an-sd-card-or-an-installer-medium) +1. Build a live raw image `make ZARCH=arm64 HV=kvm PLATFORM=nvidia-jp5 live-raw` (Only KVM is supported) +1. Flash the `dist/arm64/current/live.raw` live EVE image onto an SD Card [following these instructions](../README.md#3-flash-the-image-to-the-device) 1. Insert the SD Card and power on the board ## References diff --git a/docs/NVIDIA-ORIN.md b/docs/NVIDIA-ORIN.md new file mode 100644 index 0000000000..2b535dd963 --- /dev/null +++ b/docs/NVIDIA-ORIN.md @@ -0,0 +1,104 @@ +# NVIDIA's Jetson Orin platform + +Currently EVE supports the following devices based on the NVIDIA's Jetson Orin platform: + +1. [Aetina AIE-PX22](#aetina-aie-px22) +1. [Aetina AIE-KN32](#aetina-aie-kn32) +1. [Jetson Orin Nano developer kit](#jetson-orin-nano-developer-kit) + +The Jetson Orin platform has a complex boot flow[[1]](#references) that performs a lot of operations +to setup all the hardware: initialize memory controller, power up CPUs, load firmware components, etc. The last stage of +the bootloader provides an UEFI interface able to boot an UEFI capable Operating System. The bootloader can be present +in a bootable device, such as an SD Card, or at some internal memory of the device. EVE doesn't support embed the +bootloader on its image for the Jetson Orin platform, so the bootloader must be already present in the device. + +## Aetina AIE-PX22 + +The [Aetina AIE-PX22](https://www.onlogic.com/store/jetagx/) it's a +powerful device based on the Jetson AGX Orin module. EVE supports only the +Jetpack 6.x version for this device. Thus, the bootloader must be +compatible with this version. Detailed instructions on how to update the +device for Jetpack 6 can be found on the following link: [Upgrading to Jetpack 6 on Aetina Jetson Devices](https://github.com/onlogic/Updating-to-Jetpack-6-for-Aetina-Jetson/tree/main) + +Once the device has the Jetpack 6 installed (with the bootloader), EVE can +be installed into the device (or run from a live image from an USB Stick). + +### Installing EVE on the Aetina AIE-PX22 + +1. Build an installation raw image `make ZARCH=arm64 HV=kvm PLATFORM=nvidia-jp6 installer-raw` (Only KVM is supported) +1. Flash the `dist/arm64/current/installer.raw` install EVE image onto an USB Stick [following these instructions](../README.md#3-flash-the-image-to-the-device) +1. Insert the USB Stick and power on the device + +The installation process will start and it will install EVE on the eMMC and setup the persist storage on the NVMe device automatically. + +If the installation succeed, the device will be powered off. Remove the USB Stick and power on the device again. + +### Running a live image on the Aetina AIE-PX22 + +1. Build a live raw image `make ZARCH=arm64 HV=kvm PLATFORM=nvidia-jp6 live-raw` (Only KVM is supported) +1. Flash the `dist/arm64/current/live.raw` live EVE image onto an USB Stick [following these instructions](../README.md#3-flash-the-image-to-the-device) +1. Insert the USB Stick and power on the device + +EVE should boot the live image and run from the USB Stick. **NOTE** that the eMMC must not contain an EVE installation, +otherwise it will conflict with the live image and **EVE will not run properly**. + +> [!TIP] +> In case the device doesn't boot automatically from the USB stick, you can also boot it +> from the UEFI setup menu by pressing _ESC_ and accessing _Boot Manager_. + +## Aetina AIE-KN32 + +The [Aetina AIE-KN32](https://www.aetina.com/products-detail.php?i=554) it's a device based on the Jetson Orin NX module. +The installation process it's exactly the same applied for the +[Aetina AIE-PX22](#aetina-aie-px22). The only exception is that EVE will be +installed entire in the NVMe SSD disk since it's the only built-in storage +present on the device. + +## Jetson Orin Nano developer kit + +The Jetson Orin Nano developer kit comes with a CoM (Computer on Module) without eMMC, so the entire OS should run from +an SD Card. However, the device has a small QSPI EEPROM where the bootloader can be written in order to boot the board. + +### Flashing the bootloader to QSPI EEPROM + +- Put the device into the recovery mode: + +1. Power off the board +1. Connect the pin (using a jumper or a wire) **FC REC** to the **GND**. These are the second (GND) and third (FC REC) pins counting from the PWR BTN pin. +1. Attach it to a host computer through the micro USB port. +1. Power on the board + +On the host computer, the following device should appear in the USB bus: + +```sh +Bus 001 Device 120: ID 0955:7e19 NVIDIA Corp. APX +``` + +- Download and extract the NVIDIA's Jetpack tarball: + +```sh +wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/release/jetson_linux_r36.3.0_aarch64.tbz2 +tar -xvjf jetson_linux_r36.3.0_aarch64.tbz2 +``` + +- Execute the flash.sh script tool to flash the bootloader to the QSPI EEPROM: + +```sh +cd Linux_for_Tegra +sudo ./flash.sh --no-systemimg -c bootloader/generic/cfg/flash_t234_qspi.xml jetson-orin-nano-devkit mmcblk0p1 +``` + +Once the procedure is done, power off the board and disconnect the pin _FC REC_ from the _GND_. + +### Running a live image on the Jetson Xavier NX developer kit + +1. Make sure the bootloader is present in the QSPI EEPROM +1. Build a live raw image `make ZARCH=arm64 HV=kvm PLATFORM=nvidia-jp5 live-raw` (Only KVM is supported) +1. Flash the `dist/arm64/current/live.raw` live EVE image onto an SD Card [following these instructions](../README.md#3-flash-the-image-to-the-device) +1. Insert the SD Card and power on the board + +## References + +1. [Jetson AGX Orin BootFlow](https://docs.nvidia.com/jetson/archives/r35.1/DeveloperGuide/text/AR/BootArchitecture/JetsonAgxOrinBootFlow.html) +1. [Aetina AIE-PX22](https://www.onlogic.com/store/jetagx/) +1. [Aetina AIE-KN32](https://www.aetina.com/products-detail.php?i=554) diff --git a/docs/NVIDIA.md b/docs/NVIDIA.md new file mode 100644 index 0000000000..318f42701f --- /dev/null +++ b/docs/NVIDIA.md @@ -0,0 +1,71 @@ +# How to use EVE-OS on a NVIDIA Jetson platform + +NVIDIA Jetpack is the NVIDIA's software stack for Jetson modules and +developer kits. EVE supports two versions of the Jetpack: 5.1.3 and 6.0. +These versions covers different devices from different Jetson platforms, as +shown by the Table __1__. + +| | Jetson AGX Orin | Jetson AGX Orin Industrial | Jetson Orin NX / Orin Nano | Jetson AGX Xavier | Jetson AGX Xavier Industrial | Jetson Xavier NX | +|------------|-----------------|----------------------------|----------------------------|-------------------|------------------------------|------------------| +| Jetpack 6.0 |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| | | | +| Jetpack 5.1.3 |:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| + +Table __1__: Jetpack support. _Source: [Jetson Linux Archive](https://developer.nvidia.com/embedded/jetson-linux-archive)._ + +For each Jetpack version supported, EVE provides all default libraries and +related files present in a regular installation of Jetpack under +_/opt/vendor/nvidia_ in the host system. These libraries are available for +Edge Apps through a CDI (Container Device Interface) mechanism. For more +information on how to setup containers to make use of it see [Hardware +Model](./HARDWARE-MODEL.md) documentation. + +It's important to point out that EVE uses its own kernel derived from the +original kernel of the Jetpack Linux distro. All kernel versions used by +EVE are available at the +[eve-kernel](https://github.com/lf-edge/eve-kernel) project. + +Even though a device is based on any of the supported Jetson platforms, it +doesn't mean it will work with EVE out of the box. Usually, edge devices +based on these platforms are equipped with additional hardware that might +require kernel support. If you are looking for support for a device not listed +in this page, please, raise an issue on EVE's Git Hub project. + +## How to use on a Jetson Orin platform + +Currently EVE supports the following devices based on the NVIDIA's Jetson Orin platform: + +1. Aetina AIE-PX22 (Jetson Orin AGX) +1. Aetina AIE-KN32 (Jetson Orin NX) +1. Jetson Orin Nano developer kit + +See [NVIDIA-ORIN.md](./NVIDIA-ORIN.md) for instructions on how to build and deploy EVE on these devices. + +## How to use on a Jetson Xavier NX platform + +Currently EVE supports the following devices based on the NVIDIA's Jetson Xavier NX platform: + +1. Lenovo ThinkEdge SE70 +1. Siemens SIMATIC IPC520A +1. Jetson Xavier NX developer kit + +See [NVIDIA-NX.md](./NVIDIA-NX.md) for instructions on how to build and deploy EVE on these devices. + +## Partial supported devices + +### How to use on a Jetson Nano 4GB ARM board + +In Jetson Nano, from January 22, 2021, it became possible to save the u-boot to an internal qspi chip. Following the instructions from the first point and specifying the kernel and u-boot versions in the same way as in EVE, we can run it on the Jetson nano with 4GB of RAM. + +1. Follow steps in [instruction](https://github.com/lf-edge/eve/blob/master/boards/nvidia/jetson/README.md) for flash jetson boot flow partitions to qspi. +1. Make sure you have a clean build directory (since this is a non-standard build) `rm -rf dist/arm64` +1. Build a live image `make ZARCH=arm64 HV=kvm live-raw` (Only KVM is supported) +1. Flash the `dist/arm64/current/live.raw` live EVE image onto your SD card by [following these instructions](../README.md#3-flash-the-image-to-the-device) + +> **:warning: WARNING !** +> +> NVIDIA's kernel for Jetson Nano is based on an old Linux kernel version 4.x, not ported to EVE. Thus, the support for this device is limited. + +## References + +1. [Jetson Software](https://developer.nvidia.com/embedded/develop/software) +1. [Jetson Linux Archive](https://developer.nvidia.com/embedded/jetson-linux-archive) diff --git a/docs/mkdocs/mkdocs.yml b/docs/mkdocs/mkdocs.yml index 0179d3e334..3b572f9223 100644 --- a/docs/mkdocs/mkdocs.yml +++ b/docs/mkdocs/mkdocs.yml @@ -90,8 +90,11 @@ nav: - ZFS: 'docs/ZFS.md' - 'Application Snapshot, API': 'docs/APP-SNAPSHOT.md' - Boards: - - 'NVIDIA Jetson Xavier/Orin': 'docs/NVIDIA-NX.md' - - 'NVIDIA Jetson Nano': 'boards/nvidia/jetson/README.md' + - 'NVIDIA Jetson': + - 'Introduction': 'docs/NVIDIA.md' + - 'Jetson Orin': 'docs/NVIDIA-ORIN.md' + - 'Jetson Xavier NX': 'docs/NVIDIA-NX.md' + - 'Jetson Nano': 'boards/nvidia/jetson/README.md' - Debugging: - Information: 'pkg/debug/abuild/README.md' - Debugging: 'docs/DEBUGGING.md'