Skip to content

Latest commit

 

History

History

tx2

NVIDIA Jetson TX2

This configuration package configures Buildroot to produce a BSP image for the Jetson TX1, TX2, AGX Xavier boards.

There are specific configurations for each board, see readme.

References:

Getting Started

Set the comma-separated SKIFF_CONFIG variable:

$ export SKIFF_CONFIG=jetson/tx2
$ make configure                   # configure the system
$ make compile                     # build the system

Once the build is complete, it's time to flash the system via USB. You will need to switch to sudo bash for this on most systems.

$ sudo bash             # switch to root
# follow the "Flashing" process described below.

The board will boot up into Skiff.

Note: the "flashusb" recovery mode flashing approach will overwrite the "persist" data as well. This is a limitation of the flashing process and partition layout on the internal emmc.

TX2: Flashing via USB

Note: this section applies to the Jetson TX2 only.

Flashing to the internal eMMC is done by booting to the official recovery mode, and flashing the system from there. The default factory-flashed TX2 is suitable.

The recovery mode of the Jetson is used to flash Skiff. Entering recovery:

  • Start with the machine powered off + fully unplugged.
  • Plug in the device to power, and connect a HDMI display.
  • Connect a micro-USB cable from the host PC to the target board.
  • Power on the device by holding the start button until the red light is lit.
  • Hold down the RST button and REC button simultaneously.
  • Release the RST button while holding down the REC button.
  • Wait a few seconds, then release the REC button.

You may also be able to enter recovery by SSHing to the default system (username nvidia password nvidia) and entering sudo reboot --force forced-recovery.

Skiff uses the Tegra for Linux package to flash over USB (flash.sh). The L4T packages are licensed under the NVIDIA Customer Software License. Skiff will download the linux4tegra package to your build workspace, and exposes the contained scripts as Makefile targets.

To flash over USB:

export SKIFF_WORKSPACE=myworkspace
export SKIFF_NVIDIA_USB_FLASH=confirm
make cmd/jetson/tx2/flashusb

This will run the flash.sh script from L4T, and will setup the kernel, u-boot, persist + boot-up partition mmcblk0p1. This may overwrite your existing work so use it for initial setup only.

After Skiff is installed, the system can be OTA updated by using the scripts/push_image.sh script:

export SKIFF_WORKSPACE=myworkspace
./scripts/push_image.sh root@myjetsontx2

The flash script will overwrite the entire persist partition. This is due to a limitation in the flashing process: the jetson internal EMMC partition layout has a single "app" partition. The recovery mode is used to flash a ext4 image to that partition containing the system files. Partial flashing would need separate partitions to work correctly. Please use the push_image.sh script to update.

Partition Layout

The required partition layout is somewhat complex and does not provide an opportunity for separate "persist" and "boot" partitions as typically used by other Skiff boards:

  • APP: at mmcblk0p1: contains the main system read-write filesystem.
  • TBC: TegraBoot CPU-side binary.
  • RP1: Bootloader DTB binary.
  • EBT: CBoot, the final boot stage CPU bootloader binary.
  • WB0: Warm boot binary.
  • BPF: SC7 entry firmware.
  • BPF-DTB: Reserved for future use by BPMP DTB binary; can't remove.
  • FX: Reserved for fuse bypass; removeable.
  • TOS: Required. Contains TOS binary.
  • DTB: Contains kernel DTB binary.
  • LNX: Contains U-Boot, which loads and launches the kernel.
  • EKS: Contains "the encrypted keys".
  • BMP: Contains BMP images for splash screen display during boot.
  • RP4: Contains XUSB module’s firmware file, making XUSB a true USB 3.0 host.
  • GPT: Contains secondary GPT of the sdcard device.

Unfortunately, the complex partition layout is unavoidable, but the Skiff install and OTA scripts are careful to handle it properly.

Advantages vs. Jetpack

The current list of advantages to using this vs. NVIDIA Jetpack BSP:

  • Significantly simpler & more reliable OTA
    • read-only single-file host OS vs. read-write a/b partitions
    • can be upgraded with simple tools like rsync
    • does not require any complex boot-up process
  • Upgraded kernel from OE4T merged with more recent versions.
    • maintained by SkiffOS & OE4T developers
  • Full Jetpack compatibility: running in a container w/ Ubuntu.
  • Improved backup / restore UX with Docker CLI tools.

The skiff-core-linux4tegra package automatically applies the linux4tegra debs to the latest Ubuntu bionic release, patching some files to skip hardware checks.