HCL:JetsonTK1
The Nvidia Jetson TK1 is a single-board computer.
Technical details
- Tegra K1 (Tegra124) SoC
- 4x ARM Cortex-A15 CPU
- Ethernet
- HDMI
- USB
- SATA
- mini PCIe slot (half size)
- RS232
Manual installation
Flashing U-Boot
Download u-boot-jetson-tk1 package and extract u-boot, u-boot.dtb, u-boot-dtb-tegra.bin, u-boot-nodtb-tegra.bin, spl/u-boot-spl into a directory.
CROSS_COMPILE= tegra-uboot-flasher-scripts/build --boards jetson-tk1 import-uboot . tegra-uboot-flasher-scripts/build --boards jetson-tk1 build-bcts-imgs tegra-uboot-flasher-scripts/build --boards jetson-tk1 build-configs
tegra-uboot-flasher-scripts/tegra-uboot-flasher flash jetson-tk1
Boot script
Here's an example boot.script, using U-Boot-provided variables. Adapt the bootargs as needed.
setenv bootargs 'console=ttyS0,115200 root=/dev/sda2 rootfstype=btrfs rw rootwait' load ${devtype} ${devnum}:1 ${kernel_addr_r} ${prefix}zImage load ${devtype} ${devnum}:1 ${fdt_addr_r} ${prefix}dtb/tegra124-jetson-tk1.dtb load ${devtype} ${devnum}:1 ${ramdisk_addr_r} ${prefix}initrd bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}
Convert boot.script to boot.scr:
$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n Boot-Script -d boot.script boot.scr
Install boot.scr to an SD card, into the root of an ext4 partition if you intend to use SATA, into a boot subdirectory otherwise.
Installing Tumbleweed to SATA disk
U-Boot v2015.07 does not support SATA yet, so your kernels must be placed onto the SD card.
Extract a rootfs to the SATA disk:
# tar xjvf openSUSE-Tumbleweed-ARM-JeOS.armv7-rootfs.armv7l-*.tbz -C path/to/mount/point
TBD: kernel (kernel-lpae), dtb (dtb-tegra124), initrd
Installing GRUB2
grub2-arm-uboot package does not work on Tegra124 unmodified. GRUB2 assumes that RAM starts at 0x00000000, while it's at 0x80000000 on Tegra124.
grub-core/Makefile.core.def:
arm_uboot_ldflags = '-Wl,-Ttext=0x88000000';
include/grub/offsets.h:
#define GRUB_KERNEL_ARM_UBOOT_LINK_ADDR 0x88000000
Installation to /boot/grub2/:
# grub2-install
Example boot.script:
load ${devtype} ${devnum}:1 ${loadaddr} ${prefix}grub2/arm-uboot/core.img bootm ${loadaddr}
u-boot-jetson-tk1 package does not yet enable CONFIG_API, needed for GRUB2. Symptoms are GRUB2 exiting without output and U-Boot resetting.
U-Boot v2015.10-rc3 has a bug enumerating storage devices, leading to only hd0 (eMMC) being available, not the SD card. Symptoms are GRUB2 entering its rescue shell, not finding its config and modules.