Skip to content

yoebuild/module-jetson

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

units-jetson

Yoe module providing NVIDIA Jetson BSP units and machine definitions.

Currently supported: Jetson Orin Nano Devkit (P3768 + P3767-0005) on L4T R36.5.0. Other Jetson platforms are out of scope for now.

What's in here

Unit Role
linux-tegra NVIDIA Jetson kernel (OE4T-patched 5.15 from linux-jammy-nvidia-tegra). Builds Image, modules, and stages a slimmed kernel build tree under /usr/src/linux-tegra/ so out-of-tree consumers can use it as KERNEL_PATH.
nvidia-kernel-oot-dtb Builds Tegra234 device trees from NVIDIA's out-of-tree DTS sources (extracted from public_sources.tbz2). Applies seven OE4T build-system patches. Output: /boot/devicetree/tegra234-p3768-0000+p3767-0005-nv-super.dtb.
tegra-bsp NVIDIA L4T BSP runtime firmware (/usr/lib/firmware/) and tegraflash bootloader binaries (/usr/share/tegraflash/).
jetson-extlinux /boot/extlinux/extlinux.conf for UEFI to load /boot/Image + DTB.
Machine Description
jetson-orin-nano-devkit Orin Nano Devkit, single-partition ext4 SD.

Boot model

The Jetson boot chain has three stages:

  1. QSPI — NVIDIA's bootrom + MB1/MB2/CPU-BL/UEFI live in the module's on-board QSPI flash. This module does not flash QSPI. We assume the board has the stock factory flash (or a previous tegraflash run); the binaries are staged under /usr/share/tegraflash/ for an external provisioning tool to consume.
  2. UEFI — reads /boot/extlinux/extlinux.conf from the rootfs.
  3. KernelImage + DTB loaded by extlinux, mounts ext4 rootfs from mmcblk0p1.

Result: with a stock devkit, write the rootfs image to an SD card and boot.

Using it from a project

project(
    name = "my-jetson-project",
    defaults = defaults(machine = "jetson-orin-nano-devkit", image = "dev-image"),
    modules = [
        module("github.com/yoebuild/yoe", path = "modules/units-alpine"),
        module("github.com/yoebuild/yoe", path = "modules/units-core"),
        module("github.com/yoebuild/units-jetson"),
    ],
)

Then:

yoe build dev-image

Customizing the device tree

The DTBs are built from source, not pulled prebuilt from the BSP tarball. To modify the Orin Nano device tree:

  1. yoe dev extract nvidia-kernel-oot-dtb to get the OOT source tree as a git working copy.
  2. Edit DTS files under kernel-devicetree/generic-dts/dts/ or hardware/nvidia/t23x/nv-public/.
  3. Commit, then yoe dev diff nvidia-kernel-oot-dtb to extract patches.

Known limitations / future work

  • No QSPI flashing. First-time setup of a new module still needs NVIDIA's SDK Manager or a manual tegraflash run with the binaries from /usr/share/tegraflash/. yoe doesn't drive tegraflash yet.
  • No NVIDIA out-of-tree kernel modules. nvgpu, nvmap, nvidia-drm, camera, display, WiFi modules are not built. Console + networking + storage work; GPU/CUDA/display do not. The infrastructure (kernel build tree staging, public_sources extraction, OE4T patches) is in place; adding the modules is mostly more make modules invocations and additional patches from the OE4T set when they're needed for newer-kernel adaptation.
  • Kernel build tree lands in the rootfs apk. linux-tegra installs /usr/src/linux-tegra/ (~200 MB) so downstream OOT units can build against it via the sysroot. Yoe doesn't currently support split build-only subpackages; this is acceptable on Jetson where the runtime libs are multi-GB anyway, but worth revisiting.
  • No UEFI signing of DTBs. Stock devkit boots fine; if you provision custom secure-boot keys, the unsigned DTB will fail validation. Add a signing step (mirror meta-tegra's tegra_uefi_attach_sign) if needed.
  • Single machine. AGX Orin, Orin NX, prior-gen Xavier and TX2 are not modeled. Adding them is a machines/<name>.star plus the right DTB target in nvidia-kernel-oot-dtb.

Source provenance

About

Nvidia Jetson BSPs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors