Skip to content

Commit

Permalink
configs/jetsontx2_defconfig: new nvidia jetson tx2 defconfig
Browse files Browse the repository at this point in the history
Adds support for the NVIDIA Jetson TX2.

Tested-by: Asaf Kahlon <[email protected]>
Signed-off-by: Christian Stewart <[email protected]>

v2:

 - cjs: thanks Asaf for the review
 - cjs: added Asaf tested-by
  • Loading branch information
paralin committed Aug 9, 2020
1 parent 3f28125 commit 7f86f2e
Show file tree
Hide file tree
Showing 3 changed files with 138 additions and 0 deletions.
1 change: 1 addition & 0 deletions board/jetsontx2
85 changes: 85 additions & 0 deletions board/nvidia/readme.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
NVIDIA Jetson TX2

Intro
=====

This configuration adds support for the Jetson TX2 devkit. It should be
compatible with the other Jetson-series boards as well, but has not yet been
tested. (Other boards include the tx2i, nano...)

Building
========

Configure Buildroot
-------------------

For Jetson TX2:

$ make jetsontx2_defconfig

Build the rootfs
----------------

You may now build your rootfs with:

$ make


Flashing
========

Once the build process is finished you will have the target binaries in the
output/images directory, with a symlink to linux4tegra.

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.

There are a lot of cases where the TX2 will not boot properly unless all of the
peripherals are fully disconnected, power is disconnected, everything fully
resets, and then the power is introduced back again.

The recovery mode of the Jetson is used to flash. 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.

To flash over USB:

```
cd output/images/linux4tegra
sudo bash ./flash.sh \
-I ../rootfs.ext2 \
-K ../Image \
-L ../u-boot-dtb.bin \
-C "ramdisk_size=100000 net.ifnames=0 elevator=deadline" \
-d ../tegra186-quill-p3310-1000-c03-00-base.dtb \
jetson-tx2-devkit mmcblk0p1
```

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.

## Bootup Process

The TX2 and recent boards boot from the internal eMMC, at mmcblk0p1. The Jetson
Nano can boot to a SD card.

A "secure boot" process is used, with multiple bootloaders:

- BootROM -> MB1 (TrustZone)
- MB2/BPMP -> (Non-Trustzone)
- Cboot (uses Little Kernel)
- Uboot
- Kernel

Uboot is flashed to the mmcblk0p1 emmc partition.

Cboot could be compiled from source, and the source is available from the
official sources, however, we do not (yet) compile cboot.

52 changes: 52 additions & 0 deletions configs/jetsontx2_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
BR2_aarch64=y
BR2_cortex_a57=y

# enable specific optimizations
BR2_TARGET_OPTIMIZATION="-march=armv8-a+crypto -mcpu=cortex-a57+crypto"

# Toolchain reference: docs.nvidia.com: "Jetson Linux Driver Package Toolchain"
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_BINUTILS_VERSION_2_32_X=y

BR2_SYSTEM_DHCP="eth0"

# Linux headers same as kernel, a 4.9 series
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y

BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,madisongh,linux-tegra-4.9,0be1a57448010ae60505acf4e2153638455cee7c)/linux-tegra-4.9.140-r1.tar.gz"
BR2_LINUX_KERNEL_DEFCONFIG="tegra"

# Build the DTB from the kernel sources
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="_ddot_/_ddot_/_ddot_/_ddot_/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-c03-00-base"

BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

BR2_PACKAGE_LINUX4TEGRA=y
BR2_PACKAGE_NVIDIA_CONTAINER_TOOLKIT=y

BR2_PACKAGE_LINUX_FIRMWARE=y
BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y

# Required tools to create the image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_JQ=y
BR2_PACKAGE_HOST_PARTED=y

# Filesystem / image
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="1024M"
# BR2_TARGET_ROOTFS_TAR is not set

# Uboot
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,paralin,u-boot-tegra,e6da093be3cc593ef4294e1922b3391ede9c94da)/u-boot-tegra-e6da09.tar.gz"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="p2771-0000-500"
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_FORMAT_DTB_BIN=y

0 comments on commit 7f86f2e

Please sign in to comment.