Hello. I’m trying to boot my Jetson Tx2i via sdcard with a device tree specified in extlinux.conf
, but the Kernel is not booting, and instead just hangs after the final Starting kernel ...
message from u-boot.
To summarise my setup:
- The Jetson was initially flashed via the standard Jetpack SDK build + flash process. This worked fine and I have been using this method for a while
- I have recently tried to create a Yocto build for the Jetson following the process outlined here: Yocto Support for NVIDIA Jetson Platforms - Setting up Yocto.
- Where I deviated from the above process was that I used the
kirkstone-l4t-r32.7.x
branch rather than the dunfell one. - This has also worked fine, and I can boot via my sdcards, using the images build via Yocto. For creating the SD cards, either the
.wic
output, or just dd’ing the.ext4
directory to a partition on the SD card works fine. - The above process however will just use the dtb contained in
/dev/mmcblk0p28
as I did not changeextlinux.conf
I am now trying to boot using a dtb contain in /boot
. The only modification I’ve done to the above process is the following:
- Place a dtb under
/boot
. This can be done by either mounting the sd card, or via the Yocto build process and addingkernel-devicetree
toIMAGE_INSTALL
. Either way the outcome is the same and the dtb generated during the Yocto build process is placed in/boot
- Add an FDT entry in
extlinux.conf
to point to this file. This is done again via mounting an manual editing, or via addingUBOOT_EXTLINUX_FDT = "/boot/${KERNEL_DEVICETREE}"
to my local.conf
Those are the only changes done, and rebooting and attempting to boot from the sd card will then yield the following, and no further output.
switch to partitions #0, OK
mmc2 is current device
Scanning mmc 2:1...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
228 bytes read in 91 ms (2 KiB/s)
1: Poky (Yocto Project Reference Distro)
Retrieving file: /boot/extlinux/../initrd
2095170 bytes read in 359 ms (5.6 MiB/s)
Retrieving file: /boot/extlinux/../Image
38797320 bytes read in 4108 ms (9 MiB/s)
append: root=/dev/mmcblk1p1 rootwait rw rootfstype=ext4 console=ttyS2,115200n8 console=tty2 fbcon=map:0 net.ifnames=0 video=tegrafb no_console_suspend=1 earlycon=uart8250,mmio32,0xc280000 nvdumper_reserved=0x2372e0000 gpt usbcore.old_scheme_first=1 tegraid=18.1.2.0.0 maxcpus=6 boot.slot_suffix= boot.ratchetvalues=0.2031647.1 bl_prof_dataptr=0x10000@0x235840000 sdhci_tegra.en_boot_part_access=1
Retrieving file: /boot/tegra186-quill-p3489-1000-a00-00-ucm1.dtb
524288 bytes read in 122 ms (4.1 MiB/s)
## Flattened Device Tree blob at 82400000
Booting using the fdt blob at 0x82400000
reserving fdt memory region: addr=80000000 size=10000
Using Device Tree in place at 0000000082400000, end 0000000082482fff
Starting kernel ..
At this point I see no more output, nor can I ssh into the Jetson, so I’m assuming that the Kernel has panicked before it’s even had time to initialise serial output.
I considered that my device tree was broken, so I also tested it by pulling the device tree from the eMMC boot and using that, and that had the same effect. To do this I just used dtc
on /sys/firmware/devicetree/base
to generate the .dtb
that was in use, and placed that under /boot
, but again the above happened.
One thing to note is that I am not signing the dtb’s going into /boot
, is this required?
Is there some step I’m missing here to allow me to boot via this method? To summarise:
- Using Jetpack for the build/flash works
- Using Yocto to create an SD card image and using the dtb in the eMMC partition works
- Using the same SD card image except specifying the device tree via
extlinux.conf
fails
Any help is appreciated. Thanks