DTB file and U-Boot?

Is the DTB file is loaded by the U-Boot? Does it have to be thrown in a flash?

In partition layout: [ DTB] UV 29454336 29462527 4.0MiB tegra124-jetson_tk1-pm375-000-c00-00.dtb

I know this DTB must be loaded immediately prior to the kernel load starting…boot loader must do this.

So… replace file in /boot/tegra124-jetson_tk1-pm375-000-c00-00.dtb will not change? Of course, I am referring to the U-boot.

This is probably correct, but I don’t know if flash.sh actually makes any sort of configuration change during u-boot install (but I believe extlinux.conf should be it). I suggest adding a copy in extlinux.conf of a working entry, but edit the DTB file name and put your new version in /boot with that altered name. The “FDT” key/tag pair should be the one…then you can test without worry. You could actually remove a known device in the DTB just to verify if the DTB there is acting as expected.

Good idea. I deleted the DTB file and got a result: ** File not found /boot/tegra124-jetson_tk1-pm375-000-c00-00.dtb **

So it seems that the DTB is loaded from the /boot :)

I compiled the kernel linux 4.4 for the Jetson Tegra K1 board and I had an issue with the Device Tree Blob (dtb) file. In the documentation, it is specified to build the dtb files, but there is missing instructions on how to actually use it.

This setting is defined in multiple locations and there are numerous copies of dtb files (in kernel/ bootloader rootfs/boot/ and even under /boot/ardbeg/dtb/ in the generated system image). I tried to use the flash.sh options -K and -d , but these options are not taken into account. I tried to change the DTB_FILE variable in the jetson-tk1.conf file, and again it seems to be ignored. What worked was to modify directly the rootfs/boot/extlinux/extlinux.conf file and copy the dtb file in rootfs/boot/. Is it the proper way of doing it? Because the other configurations are quite misleading and seems bogus.


Some of the flash infrastructure in place is for fastboot, other support is in place for u-boot. Depending on which you use, one part or the other might be ignored or important. The fastboot variant depends more on options at time of flash, u-boot often does not care because it loads things dynamically at boot time via the extlinux.conf file.

Additionally, the flash process is almost a verbatim copy of sample rootfs…some flash time editing goes into rootfs/boot/. Many files are copied there in bulk which are not actually used. In the case of the dtb file, this is in its own partition if using fastboot, but named location from extlinux.conf if using u-boot.

Using u-boot, you would want to copy your version of the dtb to rootfs/boot prior to flash, or even to /boot of the flashed Jetson later on. The boot parameter for the dtb would be edited in extlinux.conf, but I’m not actually sure if this would be overwritten in sample rootfs or not during flash (I’ve had a complete loss of my desktop system, I’m actually using a TX1 now and can no longer check some of my files or data to verify flash behavior). So very likely you simply want to put your changes into rootfs/boot/ plus extlinux.conf, and you’ll be done.

FYI, sometimes kernel options are marked to not rebuild firmware from a standard kernel compile. Thus, this would require checking config to build firmware. The firmware itself would be in the architecture dependent area of arch/arm/boot/, or near that.