The “.dtsi
” files are “device tree include” files which go in the kernel source. Normally, if you build a kernel, you must first configure it. Once that is done, then building the “dtbs
” target combines .dtsi
into .dts
(for the enabled features) and finally compiles this into the “.dtb
” binary device tree files. “dts
” is device tree source, “dtb
” is device tree binary. The tool which converts formats is “dtc
”, device tree compiler, and is part of the kernel build software (but can also be installed separately).
Not all .dtb
files will be used, but for those which are, you’d either overwrite the source of those .dtb
files in your flash software on the host PC, and then flash, or else place the .dtb
file in “/boot
” of the Jetson, and make sure it is named in the “extlinux.conf
” file. Basically you need to read up about customizing the device tree, and keep in mind that one method of install puts the tree in a partition via flashing, and the other method is to simply copy a file to the right place and name the place in “/boot/extlinux/extlinux.conf
”.
When a file (such as a .dtb
binary device tree) goes to a partition it has to be signed first (at least for semi-recent releases) and complicates installing by this method. File copy is much easier, but in some commercial releases it might be better to use this in a partition. If the .dtb
is found via extlinux.conf
pointing to the tree in “/boot
”, then this is used; if not, then it boots from the partition version.
The other thing you would want to read up on is compiling a kernel. The device tree is only a subset of kernel compiles and not technically part of the kernel, but since the device tree passes information to drivers in the kernel, the device tree is configured at the same time as the kernel features are configured. If you pick a kernel feature/driver you don’t use, then device tree content will be generated for a driver which never loads. If you fail to specify a kernel feature for some hardware you have, then building the device tree would leave out the tree for that hardware, and very likely the hardware would not function (e.g., because the driver does not know the base address to find the hardware at). Any work with a kernel should always start by matching the exact configuration of the current running kernel.
Your current L4T release can be found via “head -n 1 /etc/nv_tegra_release
”. You can then go to the URL for that release, and kernel source (and documents) will be available there with information you need. See:
https://developer.nvidia.com/linux-tegra
Follow the docs to configure and build a kernel, but just practice without installing. Check out the make
target of dtbs
.
Although this sounds complicated it will actually turn out to be fairly simple after you’ve done this once or twice. You can always look at the docs and then ask questions on parts which might be a problem.