Skip to content

Commit

Permalink
docs: Update documentation about NVIDIA devices
Browse files Browse the repository at this point in the history
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 <rene@renesp.com.br>
  • Loading branch information
rene committed Jan 22, 2025
1 parent 17d7895 commit ef1b8e9
Show file tree
Hide file tree
Showing 5 changed files with 188 additions and 25 deletions.
19 changes: 2 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
12 changes: 6 additions & 6 deletions docs/NVIDIA-NX.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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,
Expand Down Expand Up @@ -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
Expand Down
104 changes: 104 additions & 0 deletions docs/NVIDIA-ORIN.md
Original file line number Diff line number Diff line change
@@ -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)
71 changes: 71 additions & 0 deletions docs/NVIDIA.md
Original file line number Diff line number Diff line change
@@ -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)
7 changes: 5 additions & 2 deletions docs/mkdocs/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down

0 comments on commit ef1b8e9

Please sign in to comment.